Atribuição em massa
O que é Atribuição em massa?
Atribuição em massaVulnerabilidade em que a aplicação liga cegamente campos enviados pelo cliente a propriedades internas, permitindo ao atacante definir atributos que não devia controlar.
A atribuição em massa ocorre quando frameworks (Rails, Spring, ASP.NET, NestJS, Django) mapeiam automaticamente campos JSON ou de formulário recebidos para atributos do modelo, sem uma allow-list explícita. Um atacante adiciona propriedades extras — isAdmin, role, balance, tenantId — que o servidor então persiste. A falha é difícil de detectar em revisão de código porque a atribuição é implícita: uma única chamada update_attributes(params) ou de um model-binder oculta o fato de que todos os atributos são graváveis. Está catalogada como CWE-915 e aparece no OWASP API Security Top 10 (2019 A6, incorporada em API3 "Broken Object Property Level Authorization" em 2023).
O incidente canônico é o ataque de Egor Homakov ao GitHub em março de 2012: como o formulário de chave SSH vinculava public_key[user_id] sem uma whitelist, ele adicionou um campo forjado, anexou sua chave à conta de organização do Rails e enviou um commit para rails/rails. O GitHub corrigiu em poucas horas, e o episódio levou o Rails a tornar a whitelist attr_accessible — mais tarde strong_parameters — o padrão.
As mitigações incluem DTOs ou esquemas de entrada explícitos, allow-lists rigorosas de campos vinculáveis, separação de atributos internos dos modelos vinculáveis pelo usuário e testes negativos que enviam chaves JSON inesperadas.
flowchart TD
A["Cliente envia POST com JSON<br/>{name, isAdmin:true}"] --> B[Auto-binder do framework]
B --> C{Allow-list explícita<br/>de campos?}
C -->|Não — atribuição em massa| D[Todas as chaves gravadas no modelo]
D --> E[(isAdmin=true<br/>persistido no BD)]
C -->|Sim — DTO / strong params| F[Apenas campos permitidos vinculados]
F --> G[(Campos privilegiados ignorados)]● Exemplos
- 01
Enviar {"name":"Bob","isAdmin":true} para /api/users e ser promovido a administrador.
- 02
Atualizar um pedido com um campo de desconto oculto via POST, contornando as regras de preços.
● Perguntas frequentes
O que é Atribuição em massa?
Vulnerabilidade em que a aplicação liga cegamente campos enviados pelo cliente a propriedades internas, permitindo ao atacante definir atributos que não devia controlar. Pertence à categoria Vulnerabilidades da cibersegurança.
O que significa Atribuição em massa?
Vulnerabilidade em que a aplicação liga cegamente campos enviados pelo cliente a propriedades internas, permitindo ao atacante definir atributos que não devia controlar.
Como se defender contra Atribuição em massa?
As defesas contra Atribuição em massa costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Atribuição em massa?
Nomes alternativos comuns: Vulnerabilidade de autobinding, Injeção de objeto.