PT-2026-80857 · Typeorm · Typeorm
CVSS v4.0
8.7
Alta
| Vetor | AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N |
Nome do Software Vulnerável e Versões Afetadas
TypeORM versões 0.2.21 through 1.1.0
Description
O método
SelectQueryBuilder.distinctOn do TypeORM aceita um array de strings e o armazena no mapa de expressões sem validação. Para drivers da família PostgreSQL, a função createSelectDistinctExpression() em src/query-builder/SelectQueryBuilder.ts une esse array e interpola o resultado na instrução gerada como SELECT DISTINCT ON (values). Isso ocorre sem escape, aspas, validação de identificadores ou lista de permissões (allowlist), e sem passar pelo auxiliar de escape do driver ou pelo replacePropertyNames. Como o ponto de interpolação é uma lista de expressões SQL entre parênteses, um invasor pode inserir expressões arbitrárias, incluindo subconsultas correlacionadas. Se uma aplicação encaminhar valores controlados pelo cliente para o distinctOn, isso permite que o cliente leia dados acessíveis pela função do banco de dados da aplicação através de inferência booleana ou baseada em tempo, independentemente da entidade consultada. Este caminho não é protegido pela verificação de lista de permissões validateOrderByCondition utilizada pela família orderBy.Recommendations
Atualize o TypeORM para uma versão posterior à 1.1.0.
Como medida paliativa temporária, evite passar valores controlados pelo cliente para o método
distinctOn do SelectQueryBuilder.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
Typeorm