CyberGlossary

脆弱性

マスアサインメント (Mass Assignment)

別称: オートバインディング脆弱性, オブジェクトインジェクション

定義

アプリがクライアントから渡されたフィールドを無検証で内部オブジェクトのプロパティに紐付け、攻撃者が本来制御すべきでない属性を書き換えてしまう脆弱性。

マスアサインメントは、Rails、Spring、ASP.NET、NestJS、Django などのフレームワークが、明示的な許可リストなしに、受信した JSON やフォームフィールドをモデル属性へ自動マッピングする際に発生します。攻撃者は isAdmin、role、balance、tenantId などの追加プロパティを含めることで、サーバーがそれらを DB に書き込んでしまいます。割り当てが暗黙的なためコードレビューでは見落とされがちで、autobinding やオブジェクトインジェクションとも呼ばれます。対策には、明示的な DTO/入力スキーマ、バインド可能フィールドの厳格な許可リスト、内部専用属性と外部バインド可能モデルの分離、想定外のキーを送るセキュリティテストが有効です。

  • /api/users に {"name":"Bob","isAdmin":true} を送って管理者に昇格する。
  • POST で注文に隠し割引フィールドを付加し、価格ロジックを回避する。

関連用語