← Wszystkie artykuły
2026-06-18

CVE-2026-40456: command injection przez helper live traffic w LMS

Opis podatności

CVE-2026-40456 dotyczyło obsługi adresu IP przekazywanego do funkcji live traffic w LMS. W podatnych wersjach, sprzed commita 9fcb4de, wartość wejściowa mogła zostać użyta przy budowie polecenia systemowego uruchamianego przez exec().

Istotny jest warunek konfiguracyjny: wektor miał znaczenie wtedy, gdy w LMS była ustawiona opcja phpui.live_traffic_helper. W tej konfiguracji ścieżka getThroughput($ip) w modules/netdevxajax.inc.php i modules/nodexajax.inc.php korzystała z helpera, a przekazany adres IP był podstawiany do komendy wykonywanej przez exec().

Od parametru do exec()

Przepływ wyglądał tak:

  • do funkcji getThroughput($ip) trafiał parametr IP
  • konfiguracja phpui.live_traffic_helper dostarczała komendę helpera
  • IP było podstawiane do komendy w miejscu placeholdera %i
  • finalnie uruchamiane było exec()

Jeżeli wartość nie jest sprawdzona jako adres IP przed podstawieniem do helpera, dane wejściowe mogą zostać potraktowane jako część komendy wykonywanej przez exec(). To jest bezpośrednie miejsce ryzyka dla command injection.

CVSS v4 to 8.6 HIGH z AV:A/PR:L/UI:N. Podatność pozwalała na wykonanie komend systemowych, ale opis warunków powinien uwzględniać wymagane niskie uprawnienia, osiągalność zgodną z AV:A, aktywną konfigurację phpui.live_traffic_helper oraz uprawnienia procesu PHP.

Patch

Commit 9fcb4de dodaje check_ip($ip) przed uruchomieniem helpera. Jeżeli wartość nie przechodzi walidacji adresu IP, kod kończy obsługę zamiast składać i wykonywać komendę.

Poprawka zamyka zgłoszony wektor przez odrzucenie wartości, które nie są poprawnym adresem IP. W podobnym kodzie każda granica między aplikacją a shellem powinna mieć osobną walidację wejścia, kontrolowany sposób przekazywania argumentów i możliwie mało składania poleceń z danych użytkownika.

Źródła