Изследователи по киберсигурност публикуваха концептуален експлойт (PoC) за наскоро коригирана критична уязвимост в сигурността, засягаща Fortinet FortiSIEM, която може да доведе до изпълнение на произволен код.
Уязвимостта, проследявана като CVE-2026-106173 (CVSS оценка: 9.4), представлява критичен дефект от тип обхождане на директории (path traversal), който би могъл да позволи на неавтентикиран атакуващ да изпълнява неоторизиран код или команди чрез специално модифицирани пакети.
Корекциите за сигурност бяха пуснати миналата седмица от Fortinet в следните версии –
- FortiSIEM 7.5.0 (надстройте до 7.5.1 или по-нова)
- FortiSIEM 7.6 (не е засегната)
Според Horizon3.ai проблемът позволява на неавтентикиран атакуващ да се свърже с gRPC услугата, слушаща на TCP порт 27918, и да експлоатира слабостта, за да презапише съществуващ файл извън предвидената директория, превръщайки примитива за запис на произволен файл в отдалечено изпълнение на код.
„Манипулаторът QueryResultReq в gRPC на FortiSIEM обработва ненадеждни метаданни без подходяща валидация на пътя“, заявяват от Horizon3.ai. „Чрез създаване на метаданни, съдържащи както последователности за обхождане на директории (../), така и инжектиране на нулев байт (NUL-byte) в кодиращите слоеве HTTP/2 и HPACK на gRPC, атакуващият може да записва произволни файлове във файловата система.“
Проблемът произтича от опасна конструкция на пътища във функцията SendQueryResult(), която подава директно въведения от потребителя параметър query-id без достатъчна проверка.
С други думи, атакуващ може да се възползва от този недостатък, за да включи последователности за обхождане на директории като ../ и да излезе от разрешената директория. Това обаче само по себе си позволява на атакуващия да се придвижи до избрана директория и да пише в нея, но не и да избере името на файла, тъй като програмата автоматично добавя собствено име на файл result-<source IP address>-0-0-<id>.dat, където <id> е стойност на брояч, управляван от сървъра.
Именно тук се намесва втора слабост: нулев байт (\0) може да бъде вграден в параметъра query-id, което кара операционната система да го интерпретира като край на низ и да отхвърли всичко след него. Това от своя страна води до игнориране на добавеното разширение и име на файл, когато пътят се предава към функцията за отваряне на файлове.
Атакуващ би могъл да се възползва от това поведение, като конструира стойност на query-id с \0, поставен така, че да бъде предшестван от действителното име на файла за презаписване – т.е. ../../../../../opt/charting/redishb.sh\0.... Въпросният файл е shell скрипт, който извършва проверки на състоянието на услугата Redis и се изпълнява на всеки 60 секунди от cron задача.
„Записът попада на точния път, който предшества нулевия байт“, каза Зак Ханли, главен инженер по атаките в Horizon3.ai. „Насочен към съществуващ файл, той го презаписва на място, като запазва оригиналния собственик и права; втори вариант използва две заявки за създаване на чисто нов файл с точно определено име.“