Hello there, ('ω')ノ
安全でないデシリアライゼーションを勘違いしていたのでまとめておくことに。
コンピュータサイエンスでは、オブジェクトはデータ構造で。
つまり、データを構造化する方法で。
いくつかの主要な概念をわかりやすくすると。
シリアル化のプロセスは、オブジェクトをバイト文字列に変換して。
逆シリアル化のプロセスは、バイト文字列をオブジェクトに変換して。
攻撃シナリオの例は、以下のとおりで。
シナリオ#1:
攻撃者は「R00」Javaオブジェクトシグネチャに気づいて。
Java Serial Killerを使って、アプリケーションサーバでリモートコードを実行して。
シナリオ#2:
下記のようにPHPオブジェクトのシリアル化を使用して。
ユーザID、ロール、パスワードハッシュなどを含む「super」Cookieを保存して。
a:4:{i:0;i:132;i:1;s:7:"Mallory";i:2;s:4:"user";
i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}
攻撃者は、下記のようにシリアライズされたオブジェクトを変更して。
管理者権限を付与したりと。
a:4:{i:0;i:1;i:1;s:5:"Alice";i:2;s:5:"admin";
i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}
ということで、脆弱性の有無の確定は難しいので。
とりあえずは、緑文字をリクエストで検索して。
ヒットしたら内容を確認して。
脆弱性の可能性を示唆する程度でよろしいのかと。
Burp Suiteの拡張機能で、Java Deserialization Scannerは活用したいなあと。
Best regards, (^^ゞ