CVE-2026-76848 in TypeORM
Сводка
по VulDB • 24.08.2026
В SelectQueryBuilder.distinctOn библиотеки TypeORM принимается массив строк и сохраняется в карте выражений без какой-либо проверки. Для драйверов семейства PostgreSQL функция createSelectDistinctExpression из src/query-builder/SelectQueryBuilder.ts объединяет этот массив и интерполирует результат в сгенерированный SQL-запрос как SELECT DISTINCT ON (значения), причем отсутствует экранирование, кавычки для идентификаторов, проверка допустимости идентификаторов или использование белого списка. Кроме того, значения не пропускаются через replacePropertyNames или вспомогательные функции экранирования драйвера. Поскольку точка интерполяции представляет собой список SQL-выражений в круглых скобках, а не позицию только для идентификатора, переданный элемент может содержать произвольные выражения, включая коррелированные подзапросы. Приложение, которое передает управляемое клиентом значение в distinctOn (например, чтобы позволить вызывающей стороне выбрать столбец для устранения дубликатов), позволяет этому клиенту считывать данные из любой части базы данных, доступной роли приложения, используя булеву или временную инференцию, независимо от того, какая сущность запрашивается. Функция validateOrderByCondition, которая является проверкой белого списка, защищающей семейство orderBy в том же классе, к этому пути не применяется.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.