このタイプの攻撃は、PHPアプリケーションのデシリアライズ処理を悪用して、任意のコードを実行したり、サーバー上で意図しないアクションを実行しようとします。
緩和戦略
PHPオブジェクトインジェクションおよび同様の攻撃から防御するには、以下の戦略を検討してください。
- PHPオブジェクトのデシリアライズを無効にする: ユーザー制御の入力に対してunserialize()を使用しないでください。本質的に安全ではありません。
- JSONシリアライズを使用する: データ構造を交換する際は、PHPシリアライズの代わりにJSONエンコード/デコード(json_encode()/json_decode())を使用してください。
- 入力をサニタイズおよび検証する: すべてのユーザー入力を厳密にチェックし、予期しない悪意のあるデータが含まれていないことを確認してください。
- アクセス制御を実装する: 機密性の高い関数やデータへのアクセスを制限します。権限のあるユーザーのみが潜在的に危険な機能にアクセスできるようにしてください。
- 環境の強化: サーバーセキュリティのベストプラクティスに従い、未使用のPHP関数を無効にしたり、ファイルの権限を制限したりします。
- コードレビューと監査: 潜在的なセキュリティ脆弱性について定期的にコードベースをレビューおよび監査します。