CVE-2026-76848 in TypeORM
Resumen
por VulDB • 2026-08-24
El método SelectQueryBuilder.distinctOn de TypeORM acepta un array de strings y lo almacena en el mapa de expresiones sin validación. Para los controladores compatibles con la familia PostgreSQL, createSelectDistinctExpression en src/query-builder/SelectQueryBuilder.ts une ese array e interpola el resultado en la sentencia generada como SELECT DISTINCT ON (valores), sin escapado, comillas, validación de identificadores ni allowlist, y sin pasar los valores por replacePropertyNames o por el helper de escape del controlador. Dado que el punto de interpolación es una lista de expresiones SQL entre paréntesis en lugar de una posición exclusiva para identificadores, un elemento proporcionado puede contener expresiones arbitrarias, incluidas subconsultas correlacionadas. Una aplicación que reenvía un valor controlado por el cliente a distinctOn, por ejemplo, para permitir que un llamante elija una columna para la deduplicación, permite a ese cliente leer datos en cualquier lugar al que pueda llegar el rol de base de datos de la aplicación mediante inferencia booleana o basada en tiempo, independientemente de la entidad consultada. validateOrderByCondition, la comprobación allowlist que protege a la familia orderBy en la misma clase, no se aplica a esta ruta.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.