Insecure Object Serialization
安全でないオブジェクトのシリアライゼーション
説明
アプリケーションは、信頼できないデータからの安全でないデシリアライゼーションスキームを使用しています。
安全でないオブジェクトのデシリアライゼーションは、以下の結果をもたらす可能性があります。
- 任意のりモートコード実行 (RCE)
- アプリケーションロジックの変更
- アクセス制御のバイパスなどのデータの改ざん
デシリアライゼーションの脆弱性のエクスプロイトは、既製のものがなく、標的となるエクスプロイトに合わせて微調整する必要があるため困難です。
推奨事項
オブジェクトのシリアライゼーションの脆弱性を防ぐために、アプリケーションは以下のいずれかを行う必要があります。
- 信頼できるソースからのシリアライズされたオブジェクトのみを受け入れる
- シリアライゼーションのプリミティブデータ型のみを使用する
これらの対策が不可能な場合は、以下を検討してください。
- ホストオブジェクトの作成やデータの改ざんを防ぐために、シリアライズされたオブジェクトにデジタル署名などの完全性チェックを実装する。
- コードは通常、定義可能なクラスのセットを想定しているため、オブジェクトを作成する前のデシリアライゼーション中に厳密な型制約を強制する。ただし、この手法のバイパスが実証されているため、これのみに依存することはお勧めしません。
- 可能な限り、低権限の環境でデシリアライズするコードを分離して実行する。
- 受信する型が想定される型でない場合や、デシリアライゼーションが例外をスローする場合など、デシリアライゼーションの例外と失敗をログに記録する。
- デシリアライズするコンテナまたはサーバーとの間の送受信ネットワーク接続を制限または監視する。
- デシリアライゼーションを監視し、ユーザーが継続的にデシリアライズしている場合はアラートを発する。
リンク
- Java unmarsheller security
- Deserialization of untrusted data (OWASP)
- Java deserialization cheat sheet
- CWE-502: Deserialization of Untrusted Data
基準
- CWE_TOP_25:
- CWE_502
- OWASP_ASVS_L1:
- V5_5_1
- V5_5_3
- OWASP_ASVS_L2:
- V1_5_2
- V5_5_1
- V5_5_3
- OWASP_ASVS_L3:
- V1_5_2
- V5_5_1
- V5_5_3
- PCI_STANDARDS:
- REQ_2_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213
- SECURITY255
- SECURITY258
- SOC2_CONTROLS:
- CC_2_1
- CC_4_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5