В Nuclei на ProjectDiscovery, широко използван скенер за уязвимости с отворен код, е разкрит сериозен недостатък в сигурността, който, ако бъде използван успешно, може да позволи на атакуващите да заобиколят проверките на сигнатурите и потенциално да изпълнят зловреден код.
Проследена като CVE-2024-43405, тя има CVSS оценка 7,4 от максимална 10,0. Тя засяга всички версии на Nuclei, по-нови от 3.0.0.
„Уязвимостта се дължи на несъответствие между начина, по който процесът на проверка на подписи и YAML парсерът обработват символите за нов ред, в комбинация с начина, по който се обработват множество сигнатури“, се казва в описанието на уязвимостта.
„Това позволява на атакуващия да инжектира злонамерено съдържание в шаблона, като същевременно поддържа валидна сигнатура за доброкачествената част на шаблона.“
Nuclei е скенер за уязвимости, предназначен да изследва съвременни приложения, инфраструктура, облачни платформи и мрежи, за да идентифицира пропуски в сигурността. Механизмът за сканиране използва шаблони, които не са нищо друго освен YAML файлове, за изпращане на специфични заявки, за да се определи наличието на недостатък.
Освен това той може да даде възможност за изпълнение на външен код в хост операционната система, като използва протокола за код, като по този начин дава на изследователите по-голяма гъвкавост по отношение на работните процеси за тестване на сигурността.
Фирмата за облачна сигурност Wiz, която откри CVE-2024-43405, заяви, че уязвимостта се корени в процеса на проверка на сигнатурата на шаблона, който се използва за гарантиране на целостта на шаблоните, предоставени в официалното хранилище за шаблони.
Успешното използване на уязвимостта представлява заобикаляне на тази важна стъпка за проверка, което позволява на нападателите да създадат злонамерени шаблони, които могат да изпълняват произволен код и да получават достъп до чувствителни данни от хоста.
„Тъй като тази проверка в момента е единственият наличен метод за валидиране на шаблоните на Nuclei, тя представлява потенциална единствена точка на провал“, заяви изследователят на Wiz Гай Голдънбърг в петъчен анализ.
В същността си проблемът произтича от използването на регулярни изрази (известни още като regex) за проверка на подписите и конфликта при парсирането, възникващ в резултат на използването едновременно на regex и YAML парсер, като по този начин се отваря вратата за сценарий, при който атакуващият може да въведе символа „r“ така, че той да заобиколи проверката на сигнатурите, базирана на regex, и да бъде интерпретиран като прекъсване на реда от YAML парсера.
Казано по друг начин, тези несъответствия при парсирането могат да бъдат верижно свързани, за да се създаде шаблон на Nuclei, който използва „r“, за да включи втори ред „# digest:“, който заобикаля процеса на проверка на подписа, но се парсира и изпълнява от YAML интерпретатора.
„Базираната на regex проверка на Go третира \r като част от един и същи ред, докато YAML парсерът го интерпретира като прекъсване на ред. Това несъответствие позволява на атакуващите да инжектират съдържание, което заобикаля проверката, но се изпълнява от YAML анализатора“, обясни Голдънбърг.
„Логиката за проверка потвърждава само първия # digest: ред. Допълнителните # digest: редове се игнорират по време на проверката, но остават в съдържанието, за да бъдат анализирани и изпълнени от YAML.“
Освен това процесът на верификация включва стъпка за изключване на реда със сигнатурата от съдържанието на шаблона, но го прави по начин, по който се валидира само първият ред, като по този начин следващите редове остават невитифицирани, но изпълними.
След разкриването на отговорността, тя е разгледана от ProjectDiscovery на 4 септември 2024 г. с версия 3.3.2. Настоящата версия на Nuclei е 3.3.7.
„Атакуващите биха могли да създадат злонамерени шаблони, съдържащи манипулирани # digest редове или внимателно поставени r прекъсвания на редовете, за да заобиколят проверката на сигнатурата на Nuclei“, каза Голдънбърг.
„Векторът на атака за тази уязвимост възниква, когато организациите използват ненадеждни или предоставени от общността шаблони без подходяща валидация или изолация. Нападателят може да се възползва от тази функционалност, за да инжектира злонамерени шаблони, което води до изпълнение на произволни команди, ексфилтрация на данни или компрометиране на системата.“









