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

VetorAV: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 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.

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

CVE-2026-44680
GHSA-CFW5-68C4-FFQP

Produtos afetados

@Mikro-Orm/Knex
@Mikro-Orm/Sql
Knex
Mikroorm
Sql