安全ではないデシリアライゼーションについて説明していきます。
■概要
安全ではないデシリアライゼーションは、信頼できないデータをデシリアライズ(オブジェクトに復元)することで、任意のコード実行やデータ改ざんが発生する脆弱性です。
特に、オブジェクト指向言語(Java, Python, PHP, .NET など) では、デシリアライズ処理を誤ると被害につながる可能性があります。
※デシリアライゼーション:保存されたデータをプログラムのオブジェクトとして復元する処理
■想定される被害
安全ではないデシリアライゼーションによって、以下のような被害にあう可能性があります。
どのような被害を受ける可能性があるかあらかじめ把握しておき、攻撃を受けないように対策を検討することが必要です。
・リモートコード実行
・機密情報の漏洩
・アクセス制御の回避
・DoS攻撃
■対策
安全ではないデシリアライゼーションの対策として挙げられるものは以下のようなものとなります。
・信頼できないデータをデシリアライズしない。
・シリアライズされたデータに署名を付与し、改ざんされていないことを検証する。
・ホワイトリスト方式で許可するクラスを指定し、デシリアライズ対象の型を制限する。