安全でないデシリアライゼーション
安全でないデシリアライゼーション とは何ですか?
安全でないデシリアライゼーションアプリが信頼できないデータをデシリアライズすることで、攻撃者が任意オブジェクトを生成し、しばしばリモートコード実行に至る脆弱性。
シリアライズデータ(Java/PHP/Python/.NET のバイナリ形式、YAML、型情報付き JSON など)を再びオブジェクトへ戻す際、デシリアライザはコンストラクタ・マジックメソッド・ガジェットチェーンを呼び出すことがあります。信頼できない入力を扱うと、攻撃者は RCE、認証バイパス、ファイル書き込み、DoS を引き起こすペイロードを構築できます。Apache Commons Collections(Java)、Pickle(Python)、.NET BinaryFormatter のガジェットチェーンが重大事故を引き起こしてきました。対策には、信頼できないデータをそもそもデシリアライズしない、型復元のない形式(明示スキーマ付きの素 JSON)を使う、ペイロードへの署名、デシリアライズ可能型の許可リスト、ランタイムのパッチ適用などがあります。
● 例
- 01
クラスパスに Commons Collections を持つ Java アプリがセッション Cookie をデシリアライズし、RCE に至る。
- 02
Python サービスがユーザー制御バイトに対して pickle.loads を実行する。
● よくある質問
安全でないデシリアライゼーション とは何ですか?
アプリが信頼できないデータをデシリアライズすることで、攻撃者が任意オブジェクトを生成し、しばしばリモートコード実行に至る脆弱性。 サイバーセキュリティの 脆弱性 カテゴリに属します。
安全でないデシリアライゼーション とはどういう意味ですか?
アプリが信頼できないデータをデシリアライズすることで、攻撃者が任意オブジェクトを生成し、しばしばリモートコード実行に至る脆弱性。
安全でないデシリアライゼーション からどのように防御しますか?
安全でないデシリアライゼーション に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
安全でないデシリアライゼーション の別名は何ですか?
一般的な別名: 危険なデシリアライズ, オブジェクトデシリアライゼーションの脆弱性。