Фёдор Индутный: ложные CVE разрушают open-source проекты

Фёдор Индутный: ложные CVE разрушают open-source проекты

Разработчик Node.js раскритиковал систему присвоения CVE-идентификаторов.

image

Фёдор Индутный, автор платформы Io.js (форк Node.js) и член технического комитета по разработке Node.js, поднял вопрос о проблеме назначения CVE-идентификаторов для ложных отчетов об уязвимостях, которые не соответствуют реальной угрозе или уровню опасности.

Индутный обратил внимание на то, что CVE-идентификаторы присваиваются без должной проверки и без консультации с разработчиками, что позволяет злоумышленникам выдавать несущественные ошибки за критические уязвимости.

Ложные CVE-идентификаторы наносят ущерб репутации проектов и создают значительную нагрузку на разработчиков, которые вынуждены разбираться с многочисленными запросами и сообщениями, связанными с такими CVE. Особенно проблематично то, что разработчики не могут оспорить присвоенный уровень опасности или добиться отмены CVE.

Конкретный случай, описанный Индутным, касается библиотеки node-ip для Node.js, которая до публикации отчета об уязвимости загружалась примерно 30 миллионов раз в неделю, но после этого за 5 месяцев количество загрузок сократилось до 17 миллионов в неделю. Предполагается, что отчет о критической уязвимости повлиял на популярность библиотеки.

Node-ip используется в более чем 3500 проектах, и из-за ложного CVE при сборке проектов возникает предупреждение при выполнении команды «npm audit». Поток жалоб и сообщений привел к тому, что после нескольких месяцев попыток снизить уровень опасности в CVE, разработчик node-ip перевел проект в архивный режим. Через несколько дней репозиторий был восстановлен.

Отчет об уязвимости CVE-2023-42282 был опубликован в начале февраля, хотя исследователь, выявивший проблему, пытался получить вознаграждение на платформе Huntr с декабря 2022 года. В отчете утверждается, что Huntr более года пытались связаться с разработчиками node-ip для устранения проблемы, и только после этого раскрыли детали публично.

Суть проблемы заключалась в том, что функции isPublic() и isPrivate() обрабатывают только каноническое представление IP-адресов, что могло привести к неправильным результатам проверки при передаче адресов в нетипичных форматах. Утверждалось, что ошибка может быть использована для обхода SSRF-защиты и проверки доступа к ресурсам. В CVE уязвимость получила критический уровень опасности (9.8 из 10), а в отчете на GitHub её отметили, как опасную.

Автор node-ip выразил несогласие с оценкой опасности уязвимости, указав, что для успешной атаки необходимо специально передать значение в функции isPublic() и isPrivate(). Обычно информация об IP-адресе клиента получается из системных функций или переменных окружения веб-сервера, которые выдают корректные значения.

Для устранения проблемы в середине февраля были выпущены версии node-ip 1.1.9 и 2.0.1 с добавленными проверками для нетипичных форм представления IP-адресов. Однако поток запросов и сообщений пользователей не прекратился. В базе данных MITRE уязвимость до сих пор отмечена как критическая, но в базе данных GitHub Advisory Database её удалось понизить до минимального уровня опасности.

Примером другого отчета с завышенным уровнем опасности является уязвимость в LibreOffice 24.2.4 CVE-2024-5261 , которая получила критический уровень опасности (10 из 10). Недавно исправленная проблема затрагивала библиотеку LibreOfficeKit, используемую для доступа к функциям LibreOffice из внешних приложений. Уязвимость заключалась в использовании настройки libCurl (CURLOPT_SSL_VERIFYPEER=0), отключающей проверку сертификатов при загрузке ресурсов по HTTPS.

Не ждите, пока хакеры вас взломают - подпишитесь на наш канал и станьте неприступной крепостью!

Подписаться