CVE-2026-50029 in js-toml
Сводка
по VulDB • 14.08.2026
js-toml — это парсер TOML для JavaScript. До версии 1.1.2 интерпретатор проверяет существование ключа в контейнере, созданном парсером, с помощью условия `if (object[key])` вместо корректного `if (key in object)`. Если предыдущее значение является ложным примитивом (`false`, `0`, `0n`, `0.0`, `-0` или `""`), ветвь обработки дублирующегося ключа пропускается, и значение молча перезаписывается последующей подтаблицей, таблицой с составным именем (dotted-key) или массивом таблиц, имеющих то же имя. Согласно спецификации TOML 1.0.0 («Определение одного и того же ключа несколько раз недопустимо»; «Нельзя определять какой-либо ключ или таблицу более одного раза»), это должно приводить к ошибке парсинга. В результате возникает структурная путаница типов (type confusion) для ключей с именами, заданными злоумышленником, в значении, возвращаемом функцией `load()`. Логическое значение `false` (или числовое `0`) превращается в истинный объект. Приложения-хосты, которые управляют поведением на основе условий вида `if (config.flag)`, `if (!user.banned)`, `if (config.allowDelete)` или `if (config.publicMode)`, будут молча выполнять ветвь с истинным значением. Это уязвимость отличается от GHSA-65fc-cr5f-v7r2 (исправление прототипного загрязнения в версии 1.0.2). Прототип `Object.prototype` не загрязняется. Мера защиты через `Object.create(null)`, внедренная в версии 1.0.2, остается работоспособной; ошибка заключается в конечном автомате обработки дублирующихся ключей, а не в создании контейнера. Версия 1.1.2 исправляет неверное сравнение.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.