マスアサインメント (Mass Assignment)
マスアサインメント (Mass Assignment) とは何ですか?
マスアサインメント (Mass Assignment)アプリがクライアントから渡されたフィールドを無検証で内部オブジェクトのプロパティに紐付け、攻撃者が本来制御すべきでない属性を書き換えてしまう脆弱性。
マスアサインメントは、Rails、Spring、ASP.NET、NestJS、Django などのフレームワークが、明示的な許可リストなしに、受信した JSON やフォームフィールドをモデル属性へ自動マッピングする際に発生します。攻撃者は isAdmin、role、balance、tenantId などの追加プロパティを含めることで、サーバーがそれらを DB に書き込んでしまいます。割り当てが暗黙的なためコードレビューでは見落とされがちで、autobinding やオブジェクトインジェクションとも呼ばれます。対策には、明示的な DTO/入力スキーマ、バインド可能フィールドの厳格な許可リスト、内部専用属性と外部バインド可能モデルの分離、想定外のキーを送るセキュリティテストが有効です。
● 例
- 01
/api/users に {"name":"Bob","isAdmin":true} を送って管理者に昇格する。
- 02
POST で注文に隠し割引フィールドを付加し、価格ロジックを回避する。
● よくある質問
マスアサインメント (Mass Assignment) とは何ですか?
アプリがクライアントから渡されたフィールドを無検証で内部オブジェクトのプロパティに紐付け、攻撃者が本来制御すべきでない属性を書き換えてしまう脆弱性。 サイバーセキュリティの 脆弱性 カテゴリに属します。
マスアサインメント (Mass Assignment) とはどういう意味ですか?
アプリがクライアントから渡されたフィールドを無検証で内部オブジェクトのプロパティに紐付け、攻撃者が本来制御すべきでない属性を書き換えてしまう脆弱性。
マスアサインメント (Mass Assignment) からどのように防御しますか?
マスアサインメント (Mass Assignment) に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
マスアサインメント (Mass Assignment) の別名は何ですか?
一般的な別名: オートバインディング脆弱性, オブジェクトインジェクション。