Kysely — это типобезопасный построитель SQL-запросов TypeScript. До версии 0.28.14 `DefaultQueryCompiler.sanitizeStringLiteral()` Kysely экранирует только одинарные кавычки, удваивая их (`'` → `''`), но не экранирует обратную косую черту. При использовании с диалектом MySQL (где NO_BACKSLASH_ESCAPES по умолчанию отключено) злоумышленник может использовать обратную косую черту, чтобы выйти из конечной кавычки строкового литерала, вырвавшись из строкового контекста и внедрив произвольный SQL.
Это влияет на любой путь кода, который использует ImmediateValueTransformer для встраивания значений, в частности CreateIndexBuilder.where() и CreateViewBuilder.as(). Версия 0.28.14 содержит исправление.
Показать оригинальное описание (EN)
Kysely is a type-safe TypeScript SQL query builder. Prior to version 0.28.14, Kysely's `DefaultQueryCompiler.sanitizeStringLiteral()` only escapes single quotes by doubling them (`'` → `''`) but does not escape backslashes. When used with the MySQL dialect (where `NO_BACKSLASH_ESCAPES` is OFF by default), an attacker can use a backslash to escape the trailing quote of a string literal, breaking out of the string context and injecting arbitrary SQL. This affects any code path that uses `ImmediateValueTransformer` to inline values — specifically `CreateIndexBuilder.where()` and `CreateViewBuilder.as()`. Version 0.28.14 contains a fix.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Kysely Kysely
cpe:2.3:a:kysely:kysely:*:*:*:*:*:node.js:*:*
|
— |
0.28.14
|