fast-uri: подмена схемы URI через percent-кодирование (CVE-2026-110306)
В библиотеке fast-uri для Node.js обнаружена уязвимость, позволяющая обойти проверку опасных схем URI с помощью percent-кодирования. Атакующий может превратить безобидную строку в исполняемую ссылку `javascript:`, `data:` или `vbscript:`, что открывает путь к XSS. Проблема оценена в 6.1 (MEDIUM) и затронула несколько веток версий.
Подробности
Уязвимость затрагивает версии fast-uri до 2.4.8, а также диапазоны с 3.0.0 по 3.1.8 и с 4.0.0 по 4.2.2. При разборе входной строки библиотека выполняет percent-декодирование компонента схемы с помощью устаревшей глобальной функции `unescape()` ещё до этапа валидации. В результате входные данные, схема которых после декодирования представляет собой опасный токен, выдаются как «живая» схема — несмотря на то, что RFC 3986 не допускает percent-кодирование в схеме, и другие парсеры такое представление не принимают. Практическая опасность возникает в приложениях, которые проверяют опасные схемы по исходной строке, а затем сохраняют или отображают нормализованный либо разрешённый результат. В этом случае внешне безвредная строка превращается в исполняемый URL вида `javascript:`, `data:` или `vbscript:`, что создаёт вектор хранимого или отражённого межсайтового скриптинга (XSS). Дополнительный риск связан с методом `equal()`: он считает закодированную и обычную схемы одинаковыми, что позволяет обходить allowlist-проверки, построенные на сравнении.Что делать
Разработчикам рекомендуется обновиться до исправленных версий fast-uri 2.4.8, 3.1.9 или 4.2.3 (или более поздних). Если обновление пока невозможно, следует применить временные меры: - отклонять входные данные, в схеме которых присутствует символ процента; - проверять разобранную схему по allowlist уже после нормализации и использовать для дальнейшей работы именно этот разобранный результат, а не исходную строку. Также стоит пересмотреть логику фильтрации опасных схем в приложениях: проверка «сырого» ввода без учёта нормализации не гарантирует безопасность. Итог: уязвимость требует внимания разработчиков, использующих fast-uri в цепочках обработки пользовательских URL. Обновление до исправленной версии или строгая проверка нормализованной схемы закрывают вектор XSS и обхода allowlist-проверок.Источник: CVE Project (cvelistV5)
