PT-2026-39290 · Npm+1 · @Mikro-Orm/Knex+4
Martin Adámek
·
Publicado
2026-05-08
·
Atualizado
2026-05-26
·
CVE-2026-44680
CVSS v3.1
7.6
Alta
| Vetor | AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L |
Nome do Software Vulnerável e Versões Afetadas
@mikro-orm/knex versões anteriores a 6.6.14
@mikro-orm/sql versões anteriores a 7.0.14
Description
O auxiliar de citação de identificadores do MikroORM (
Platform.quoteIdentifier e as substituições de postgres/mssql) e seus emissores de caminho JSON (Platform.getSearchJsonPropertyKey, quoteJsonKey) não escapam adequadamente os caracteres que delimitam o identificador SQL ou o contexto de literal de string. Isso permite que um invasor saia do contexto citado e injete SQL arbitrário quando o código da aplicação passa strings influenciadas por invasores para APIs públicas do ORM que esperam um identificador ou um filtro de propriedade JSON. Isso afeta todos os dialetos SQL suportados, embora o driver MongoDB não seja afetado.Detalhes técnicos incluem vulnerabilidades nas seguintes áreas:
- Opção de
schemamulti-tenant: usada emem.fork({ schema }),qb.withSchema(name),wrap(entity).setSchema(name)eem.create(Cls, data, { schema }), onde a variávelschemaé concatenada ao identificador SQL sem escapar o caractere de citação do dialeto. - Filtros de propriedade JSON em
em.findeqb.where: sub-chaves JSON fornecidas pelo usuário emem.find(Entity, { jsonCol: { [userKey]: value } })são inseridas no literal de string SQL da expressão de caminho JSON sem escape. - Chaves em
qb.where,qb.orderBy,qb.groupBy,qb.havingeqb.select: chaves contendo.ou::ignoram o validador de metadados structured-where emCriteriaNodee são processadas pela funçãoquoteIdentifierdefeituosa.
Recommendations
Atualize o @mikro-orm/knex para a versão 6.6.14 ou posterior.
Atualize o @mikro-orm/sql para a versão 7.0.14 ou posterior.
Para aplicações multi-tenant que utilizam
em.fork({ schema }), wrap().setSchema() ou qb.withSchema(), valide o nome do esquema contra uma lista de permissões rigorosa (ex: ^[A-Za-z ][w$]*$) antes de passá-lo para o ORM.
Para aplicações que passam filtros where ou orderBy a partir de entradas de requisição, valide cada chave contra as propriedades conhecidas da entidade e bloqueie chaves que contenham . ou :: vindas de entrada do usuário.
Para aplicações que permitem a filtragem de colunas JSON a partir de entradas de requisição, valide cada sub-chave JSON contra uma lista de permissões (ex: ^[a-zA-Z ][w]*$) antes de passá-la para em.find.Exploit
Correção
SQL injection
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
@Mikro-Orm/Knex
@Mikro-Orm/Sql
Knex
Mikroorm
Sql