✔Уязвимость в сканере Nuclei позволяла обойти проверку подписи и выполнить код - «Новости»
В популярном опенсорсном сканере уязвимостей Nuclei обнаружена и исправлена уязвимость, которая позволяла злоумышленникам обходить проверку подписи и внедрять вредоносный код в шаблоны, работающие в локальных системах.
Nuclei представляет собой сканер уязвимостей с открытым исходным кодом, разработанный ProjectDiscovery. Он используется для сканирования сайтов, облачных платформ, инфраструктур и сетей в поисках уязвимостей и других слабых мест. При этом система сканирования строится основе шаблонов и предлагает более 10 000 YAML-шаблонов, проверяющих ресурсы на предмет известных багов, неправильных конфигураций, незащищенных файлов, веб-шеллов, бэкдоров и так далее.
Такие YAML-шаблоны могут использоваться для локального выполнения команд или скриптов на устройстве (для расширения их функциональности). Каждый шаблон «подписан» и Nuclei использует эту подпись для проверки того, что шаблон не был изменен и не содержит вредоносного кода. Специальный хеш для этого добавляется в конец шаблона в формате: # digest:
.
Исследователи из компании Wiz обнаружили уязвимость в Nuclei (CVE-2024-43405, 7,4 балла по шкале CVSS), которая позволяла обойти описанную проверку, даже если шаблон из официального репозитория был изменен и содержит вредоносный код.
Проблема связана с использованием регулярных выражений Go и тем, как парсер YAML обрабатывает переносы строк при проверке подписи. Так, в логике Go рассматривается как часть одной строки. Однако парсер YAML интерпретирует это как разрыв строки. В итоге это несоответствие позволяет внедрять в шаблоны вредоносное содержимое, которое обходит проверки и выполняется при обработке парсером YAML.
Еще одна проблема заключается в том, как Nuclei обрабатывает несколько строк # digest:
. Оказалось, что проверяется только первое значение # digest:
в шаблоне, а все дополнительные, встречающиеся после, игнорируются, хотя пригодны для анализа и выполнения.
Этим тоже могут злоупотреблять злоумышленники, добавляя дополнительные вредоносные # digest:
и полезные нагрузки после первоначального # digest:
. Они могут содержать вредоносный раздел code, который затем будет выполнен при использовании шаблона.
Разработчики ProjectDiscovery устранили эти проблемы 4 сентября 2024 года, в составе Nuclei версии 3.3.2.
Теперь всем пользователям старых версий Nuclei настоятельно рекомендуется обновиться. Также исследователи отмечают, что использовать Nuclei лучше на виртуальной машине или в изолированной среде, чтобы предотвратить потенциальные атаки через вредоносные шаблоны.