Безопасность

Дефект в Nuclei позволяет вредоносным шаблонам обходить проверку подписи

Дефект в Nuclei позволяет вредоносным шаблонам обходить проверку подписи

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

Nuclei - популярный сканер уязвимостей с открытым исходным кодом, созданный ProjectDiscovery, который сканирует веб-сайты на наличие уязвимостей и других слабых мест.

Проект использует систему сканирования на основе шаблонов, состоящую из более чем 10 000 YAML-шаблонов, которые проверяют веб-сайты на наличие известных уязвимостей, неправильной конфигурации, открытых конфигурационных файлов, веб-шеллов и бэкдоров.

Шаблоны YAML также содержат протокол кода, который можно использовать для локального выполнения команд или скриптов на устройстве, расширяющих функциональность шаблона.

Каждый шаблон «подписан» дайджестом хэша, который Nuclei использует для проверки того, что шаблон не был изменен для включения вредоносного кода.

Этот хэш добавляется в нижнюю часть шаблонов в виде:

# digest: <хэш>.

Уязвимость обходит проверку подписи Nuclei

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

Дефект вызван проверкой подписи на основе регекса в Go и тем, как парсер YAML обрабатывает переносы строк при проверке подписи.

При проверке подписи логика проверки Go воспринимает как часть одной строки. Однако парсер YAML интерпретирует его как разрыв строки. Это несоответствие позволяет злоумышленникам внедрять вредоносное содержимое, которое обходит проверку, но все равно выполняется при обработке парсером YAML.

Другая проблема заключается в том, как Nuclei обрабатывает множественные строки подписи # digest:, поскольку процесс проверяет только первое вхождение # digest: в шаблоне, игнорируя все дополнительные, найденные позже в шаблоне.

Это может быть использовано путем добавления дополнительных вредоносных «# digest:» полезных нагрузок после первоначального правильного дайджеста, содержащих вредоносный раздел «code», который затем внедряется и выполняется при использовании шаблона.

«Вооружившись информацией о несовпадении интерпретаций новой строки, мы создали шаблон, использующий несоответствие между реализацией регекса в Go и парсером YAML», - объясняет исследователь Wiz Гай Голденберг.

«Используя в качестве переноса строки, мы можем включить в шаблон вторую строку # digest:, которая обходит процесс проверки подписи, но разбирается и выполняется интерпретатором YAML».

Виз ответственно сообщил об этой ошибке в ProjectDiscovery 14 августа 2024 года, и 4 сентября она была исправлена в Nuclei v3.3.2.

Если вы используете старые версии Nuclei, настоятельно рекомендуем вам обновить последнюю версию после того, как технические детали этой ошибки были публично раскрыты.

Голденберг также рекомендует использовать Nuclei на виртуальной машине или в изолированной среде, чтобы предотвратить потенциальную эксплуатацию вредоносных шаблонов.

Читайте также