FastNetMon Community Edition w wersji do 1.2.9 zawiera podatność typu OS command injection w pluginie integracji z routerami Juniper. Atakujący może wstrzyknąć dowolne polecenia systemowe, co przy ocenie CVSS 9.8 (CRITICAL) czyni tę lukę poważnym zagrożeniem dla infrastruktury sieciowej.
▸ Pokaż oryginał (EN)
FastNetMon Community Edition through 1.2.9 contains an OS command injection vulnerability in the Juniper router integration plugin. The _log() function in src/juniper_plugin/fastnetmon_juniper.php (lines 117-118) constructs shell commands by concatenating the $msg parameter directly into exec() calls: exec("echo `date` \"- {FASTNETMON] - " . $msg . " \" >> " . $FILE_LOG_TMP). The $msg variable contains unsanitized data derived from command-line arguments argv[1] through argv[3], which represent the attack IP address, direction, and power. While FastNetMon's C++ core currently passes IP addresses via inet_ntoa() (which only produces safe dotted-decimal notation), the PHP script performs no input validation or shell escaping. If the script is invoked directly, by another orchestration system, or if future code changes pass string-sourced IPs, arbitrary commands can be injected. The correct fix is to replace exec() with file_put_contents() or use escapeshellarg() on all parameters.
Funkcja _log() w pliku src/juniper_plugin/fastnetmon_juniper.php (linie 117–118) buduje polecenia powłoki poprzez bezpośrednie sklejanie parametru $msg z wywołaniem exec(): exec("echo `date` \"- [FASTNETMON] - " . $msg . " \" >> " . $FILE_LOG_TMP). Zmienna $msg zawiera dane nieskażone walidacją, pochodzące z argumentów wiersza poleceń argv[1]–argv[3], które reprezentują adres IP ataku, kierunek ruchu oraz siłę ataku. Skrypt PHP nie wykonuje żadnej walidacji danych wejściowych ani escapowania argumentów powłoki, co umożliwia wstrzyknięcie arbitralnych poleceń. Podatność jest aktywna w przypadku bezpośredniego wywołania skryptu, wywołania przez zewnętrzny system orkiestracji lub po ewentualnych przyszłych zmianach w kodzie przekazującym dane inne niż bezpieczna notacja dziesiętno-kropkowa.
Atakujący mogący kontrolować argumenty przekazywane do skryptu PHP może wykonać dowolne polecenia systemowe w kontekście uprawnień procesu, co może prowadzić do pełnego przejęcia kontroli nad serwerem, wycieku danych oraz naruszenia integralności i dostępności systemu.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Jako tymczasowe obejście zaleca się zastąpienie wywołania exec() funkcją file_put_contents() lub zastosowanie escapeshellarg() na wszystkich parametrach wejściowych. Należy również ograniczyć możliwość bezpośredniego wywoływania skryptu PHP przez nieuprawnione systemy lub użytkowników.
FastNetMon Community Edition w wersjach do 1.2.9 (włącznie), z aktywną integracją pluginu Juniper (plik src/juniper_plugin/fastnetmon_juniper.php)
Producent i badacze wskazują na konkretne rozwiązanie techniczne: zastąpienie exec() przez file_put_contents() lub użycie escapeshellarg() na wszystkich parametrach. Podatność opisana została przez Lorikeetsecurity.com (źródło w referencjach). Rdzeń C++ FastNetMon przekazuje adresy IP przez inet_ntoa(), co ogranicza bieżące ryzyko do bezpiecznej notacji dziesiętno-kropkowej, jednak brak walidacji po stronie PHP pozostaje krytycznym niedopatrzeniem architektonicznym.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HPavel Odintsov Fastnetmon
APPPavel-Odintsov≤ 1.2.9
Powiązane podatności
FastNetMon: integer overflow w enkodowaniu BGP AS_PATH prowadzący do heap buffer overflow
Stack buffer overflow w FastNetMon — RCE przez BGP NLRI
FastNetMon: off-by-one heap buffer overflow umożliwiający RCE
FastNetMon Community Edition through 1.2.9 contains an integer overflow vulnerability in the packet capture bu...
FastNetMon Community Edition through 1.2.9 contains multiple out-of-bounds reads in the BGP MP_REACH_NLRI IPv6...