漏洞
批量赋值漏洞
别称: 自动绑定漏洞, 对象注入
定义
应用将客户端提交的请求字段盲目绑定到内部对象属性,导致攻击者能写入本不应控制的字段的漏洞。
当 Rails、Spring、ASP.NET、NestJS、Django 等框架未使用显式白名单,自动把传入的 JSON 或表单字段映射到模型属性时,就会出现批量赋值漏洞。攻击者可附加额外属性,如 isAdmin、role、balance、tenantId,服务器据此写入数据库。由于赋值是隐式的,代码审查很难发现,该问题也被称为 autobinding 或对象注入。缓解措施包括使用显式 DTO 或输入模式、严格白名单可绑定字段、将仅内部使用的属性从可绑定模型分离,以及在安全测试中提交意料之外的 JSON 键。
示例
- 向 /api/users 发送 {"name":"Bob","isAdmin":true},直接被提升为管理员。
- 通过 POST 在订单中附加隐藏折扣字段,绕过定价规则。