Martin Adámek

#34352de 53,635
7.6CVSS total
Vulnerabilidades · 1
PT-2026-39290
7.6
2026-05-08
Npm · @Mikro-Orm/Knex · CVE-2026-44680
**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 `schema` multi-tenant: usada em `em.fork({ schema })`, `qb.withSchema(name)`, `wrap(entity).setSchema(name)` e `em.create(Cls, data, { schema })`, onde a variável `schema` é concatenada ao identificador SQL sem escapar o caractere de citação do dialeto. - Filtros de propriedade JSON em `em.find` e `qb.where`: sub-chaves JSON fornecidas pelo usuário em `em.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.having` e `qb.select`: chaves contendo `.` ou `::` ignoram o validador de metadados structured-where em `CriteriaNode` e são processadas pela função `quoteIdentifier` defeituosa. **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`.