Shikata Ga Nai

Private? There is no such things.

インセキュア・デシリアライゼーションとは?

Hello there, ('ω')ノ

💣 定義

インセキュア・デシリアライゼーションとは、ユーザーから送られてくるデータをそのままデシリアライズ(復元)してしまう危険な処理のことです。

このとき、攻撃者が細工した悪意のあるオブジェクトデータを送ると、意図しないコードの実行やサーバーの制御奪取などの深刻な被害につながる可能性があります。


🧨 なぜ危険なの?

  • アプリケーションは本来「信頼されたデータ」をデシリアライズする前提で作られています。
  • しかし、攻撃者が「違うクラス(種類)」のオブジェクトを送りつけることも可能です。
  • サーバー側にそのクラスが存在していれば、自動的にそのオブジェクトが生成・実行されます。

⚠️ つまり:

「Aという形式のデータが来るはずだったのに、攻撃者がBという爆弾付きのデータを送ってきた」というようなイメージです。


💥 攻撃の流れ(イメージ)

  1. 攻撃者はアプリケーションが使っているシリアライズフォーマット(例:JavaのSerializable、Pythonのpickleなど)を知る。
  2. 自分で悪意のあるオブジェクトを作り、任意のコードを含むように細工する。
  3. そのデータをターゲットのアプリに送信。
  4. アプリはそれを信頼して自動的にデシリアライズ
  5. 攻撃者のコードが実行される。

💡 別名「オブジェクトインジェクション(Object Injection)」

攻撃者が「想定外のオブジェクト」を送り込むことで、サーバー内で勝手に動かしたいコードを注入(Injection)するという意味で、Object Injectionとも呼ばれます。


🔐 まとめ:インセキュア・デシリアライゼーションのリスク

リスク 内容
任意コード実行 攻撃者の好きなコードが実行される(RCE)
サーバー操作 ファイルの読み書き、外部通信、DoS攻撃などが可能に
既存のセキュリティ機構をバイパス 認証・権限管理を無視して操作される恐れ

Best regards, (^^ゞ