脆弱性
安全でないデシリアライゼーション
別称: 危険なデシリアライズ, オブジェクトデシリアライゼーションの脆弱性
定義
アプリが信頼できないデータをデシリアライズすることで、攻撃者が任意オブジェクトを生成し、しばしばリモートコード実行に至る脆弱性。
シリアライズデータ(Java/PHP/Python/.NET のバイナリ形式、YAML、型情報付き JSON など)を再びオブジェクトへ戻す際、デシリアライザはコンストラクタ・マジックメソッド・ガジェットチェーンを呼び出すことがあります。信頼できない入力を扱うと、攻撃者は RCE、認証バイパス、ファイル書き込み、DoS を引き起こすペイロードを構築できます。Apache Commons Collections(Java)、Pickle(Python)、.NET BinaryFormatter のガジェットチェーンが重大事故を引き起こしてきました。対策には、信頼できないデータをそもそもデシリアライズしない、型復元のない形式(明示スキーマ付きの素 JSON)を使う、ペイロードへの署名、デシリアライズ可能型の許可リスト、ランタイムのパッチ適用などがあります。
例
- クラスパスに Commons Collections を持つ Java アプリがセッション Cookie をデシリアライズし、RCE に至る。
- Python サービスがユーザー制御バイトに対して pickle.loads を実行する。
関連用語
プロトタイプ汚染
信頼できない入力により Object.prototype を書き換え、全オブジェクトにプロパティを混入させて挙動を変える、場合によっては RCE に至る JavaScript の脆弱性。
マスアサインメント (Mass Assignment)
アプリがクライアントから渡されたフィールドを無検証で内部オブジェクトのプロパティに紐付け、攻撃者が本来制御すべきでない属性を書き換えてしまう脆弱性。
リモートアクセストロイの木馬(RAT)
感染端末を攻撃者がひそかに対話的に操作できるようにするマルウェア。隠された遠隔管理ツールに近い。
Command Injection
Command Injection — definition coming soon.
アクセス制御の不備
認可ルールが欠落または誤って適用され、ユーザーが本来の権限を超えた操作やデータにアクセスできてしまう脆弱性カテゴリ。
OWASP Top 10
OWASP Top 10 — definition coming soon.