Hello there, ('ω')ノ
💣 定義
インセキュア・デシリアライゼーションとは、ユーザーから送られてくるデータをそのままデシリアライズ(復元)してしまう危険な処理のことです。
このとき、攻撃者が細工した悪意のあるオブジェクトデータを送ると、意図しないコードの実行やサーバーの制御奪取などの深刻な被害につながる可能性があります。
🧨 なぜ危険なの?
- アプリケーションは本来「信頼されたデータ」をデシリアライズする前提で作られています。
- しかし、攻撃者が「違うクラス(種類)」のオブジェクトを送りつけることも可能です。
- サーバー側にそのクラスが存在していれば、自動的にそのオブジェクトが生成・実行されます。
⚠️ つまり:
「Aという形式のデータが来るはずだったのに、攻撃者がBという爆弾付きのデータを送ってきた」というようなイメージです。
💥 攻撃の流れ(イメージ)
- 攻撃者はアプリケーションが使っているシリアライズフォーマット(例:JavaのSerializable、Pythonのpickleなど)を知る。
- 自分で悪意のあるオブジェクトを作り、任意のコードを含むように細工する。
- そのデータをターゲットのアプリに送信。
- アプリはそれを信頼して自動的にデシリアライズ。
- 攻撃者のコードが実行される。
💡 別名「オブジェクトインジェクション(Object Injection)」
攻撃者が「想定外のオブジェクト」を送り込むことで、サーバー内で勝手に動かしたいコードを注入(Injection)するという意味で、Object Injectionとも呼ばれます。
🔐 まとめ:インセキュア・デシリアライゼーションのリスク
リスク | 内容 |
---|---|
任意コード実行 | 攻撃者の好きなコードが実行される(RCE) |
サーバー操作 | ファイルの読み書き、外部通信、DoS攻撃などが可能に |
既存のセキュリティ機構をバイパス | 認証・権限管理を無視して操作される恐れ |
Best regards, (^^ゞ