Injecao em ORM
O que é Injecao em ORM?
Injecao em ORMInjecao contra aplicacoes que usam um ORM, abusando de queries dinamicas, mass-assignment ou escapes para SQL bruto para manipular o acesso a dados.
A injecao em ORM ocorre quando uma entrada influenciada pelo atacante chega a um ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) por APIs que constroem queries dinamicamente. Padroes vulneraveis: concatenacao HQL/JPQL, where(string) interpolado em ActiveRecord, Op.literal em Sequelize, text() formatado em SQLAlchemy, mass-assignment de atributos nao previstos e parametros inseguros de ordenacao ou filtragem em APIs JSON. As consequencias vao da injecao SQL classica ao contorno de autorizacao quando os controlos vivem na camada ORM. Defesas: query builders parametrizados, allowlists para campos ordenaveis/filtraveis, strong parameters e evitar escapes para SQL bruto com entradas nao confiaveis.
● Exemplos
- 01
Uma app Rails a chamar User.where("name = '#{params[:q]}'") expoe SQL injection via ORM.
- 02
Endpoint Sequelize que aceita order do atacante e o passa por Op.literal.
● Perguntas frequentes
O que é Injecao em ORM?
Injecao contra aplicacoes que usam um ORM, abusando de queries dinamicas, mass-assignment ou escapes para SQL bruto para manipular o acesso a dados. Pertence à categoria Ataques e ameaças da cibersegurança.
O que significa Injecao em ORM?
Injecao contra aplicacoes que usam um ORM, abusando de queries dinamicas, mass-assignment ou escapes para SQL bruto para manipular o acesso a dados.
Como funciona Injecao em ORM?
A injecao em ORM ocorre quando uma entrada influenciada pelo atacante chega a um ORM (Hibernate, Entity Framework, SQLAlchemy, ActiveRecord, Sequelize, Prisma, Django ORM) por APIs que constroem queries dinamicamente. Padroes vulneraveis: concatenacao HQL/JPQL, where(string) interpolado em ActiveRecord, Op.literal em Sequelize, text() formatado em SQLAlchemy, mass-assignment de atributos nao previstos e parametros inseguros de ordenacao ou filtragem em APIs JSON. As consequencias vao da injecao SQL classica ao contorno de autorizacao quando os controlos vivem na camada ORM. Defesas: query builders parametrizados, allowlists para campos ordenaveis/filtraveis, strong parameters e evitar escapes para SQL bruto com entradas nao confiaveis.
Como se defender contra Injecao em ORM?
As defesas contra Injecao em ORM costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.
Quais são outros nomes para Injecao em ORM?
Nomes alternativos comuns: Injecao HQL, Injecao JPQL.
● Termos relacionados
- attacks№ 1084
Injeção SQL
Ataque de injeção de código que insere SQL controlado pelo atacante numa consulta à base de dados, permitindo ler, alterar ou destruir dados.
- attacks№ 743
Injeção NoSQL
Ataque de injeção que manipula operadores, JSON ou o DSL de consulta de uma base NoSQL para contornar a lógica ou extrair dados.
- attacks№ 1106
Abuso de procedimentos armazenados
Exploracao de procedimentos armazenados privilegiados ou inseguros para executar SQL arbitrario, comandos do SO ou escalar privilegios a partir da base de dados.
- vulnerabilities№ 653
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.
- appsec№ 538
Validação de entrada
Verificação no servidor que confirma se toda entrada não confiável corresponde ao tipo, comprimento, intervalo, formato e conjunto de valores esperados antes do processamento.