CRITICAL🇬🇧 English

CVE-2026-48686

Stack buffer overflow w FastNetMon — RCE przez BGP NLRI

CVSS 9.8pub. 2026-05-26upd. 2026-05-27

FastNetMon Community Edition do wersji 1.2.9 zawiera stack-based buffer overflow w dekoderze BGP NLRI, umożliwiający zdalne wykonanie kodu bez uwierzytelnienia. Podatność jest krytyczna ze względu na sieciowy wektor ataku i brak wymaganych uprawnień.

Pokaż oryginał (EN)

FastNetMon Community Edition through 1.2.9 contains a stack-based buffer overflow in the BGP NLRI (Network Layer Reachability Information) decoder. The function decode_bgp_subnet_encoding_ipv4_raw() in src/bgp_protocol.cpp reads prefix_bit_length directly from the BGP packet (line 99) without validating it is <= 32 for IPv4 prefixes. This value is passed to how_much_bytes_we_need_for_storing_certain_subnet_mask() which computes ceil(prefix_bit_length / 8), returning up to 32 bytes for a prefix_bit_length of 255. The result is used as the length argument to memcpy() (line 106), which copies into a 4-byte uint32_t stack variable (prefix_ipv4). This causes a stack buffer overflow of up to 28 bytes, which can be exploited for arbitrary code execution. Additionally, the unvalidated prefix_bit_length is passed to convert_cidr_to_binary_netmask_local_function_copy() (line 111), where a shift of (32 - cidr) with cidr > 32 causes undefined behavior.

🤖 Analiza AI
Jak działa

Funkcja decode_bgp_subnet_encoding_ipv4_raw() w pliku src/bgp_protocol.cpp odczytuje wartość prefix_bit_length bezpośrednio z pakietu BGP bez walidacji, że nie przekracza 32 (maksymalna długość prefiksu IPv4). Wartość ta trafia do funkcji how_much_bytes_we_need_for_storing_certain_subnet_mask(), która oblicza liczbę bajtów jako ceil(prefix_bit_length / 8) — dla wartości 255 zwraca aż 32 bajty. Wynik jest następnie używany jako argument length w wywołaniu memcpy(), które kopiuje dane do 4-bajtowej zmiennej stosu prefix_ipv4, powodując przepełnienie bufora stosu o nawet 28 bajtów. Dodatkowo niezwalidowana wartość prefix_bit_length przekazywana jest do funkcji convert_cidr_to_binary_netmask_local_function_copy(), gdzie przesunięcie bitowe (32 - cidr) dla cidr > 32 wywołuje niezdefiniowane zachowanie (undefined behavior).

Skutki

Atakujący może przeprowadzić atak zdalnie bez uwierzytelnienia i uzyskać możliwość wykonania dowolnego kodu (RCE) w kontekście procesu FastNetMon, co w praktyce może oznaczać pełne przejęcie kontroli nad systemem.

Mitygacja

Należy zastosować patche dostępne u producenta zgodnie z referencjami. Do czasu aktualizacji zaleca się ograniczenie dostępu sieciowego do interfejsów BGP wyłącznie do zaufanych peerów poprzez reguły firewall oraz monitoring ruchu BGP pod kątem anomalnych długości prefiksów.

Kogo dotyczy

FastNetMon Community Edition w wersjach do 1.2.9 włącznie

Uwagi

Szczegółowy opis techniczny podatności dostępny jest w analizie opublikowanej przez Lorikeetsecurity pod adresem https://lorikeetsecurity.com/blog/fastnetmon-cve-2026-48686-bgp-nlri-stack-overflow. Referencje wskazują bezpośrednio na podatną linię kodu (linia 99 i 106 w src/bgp_protocol.cpp).

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Pavel Odintsov Fastnetmon

    APP
    Pavel-Odintsov
    ≤ 1.2.9
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
RCEMemory
CWE
Referencje

Powiązane podatności

CVE-2026-48691CRITICAL9.8PL ✓ten sam produkt

FastNetMon: integer overflow w enkodowaniu BGP AS_PATH prowadzący do heap buffer overflow

CVE-2026-48687CRITICAL9.8PL ✓ten sam produkt

Command injection w pluginie Juniper FastNetMon Community Edition

CVE-2026-48689CRITICAL9.8PL ✓ten sam produkt

FastNetMon: off-by-one heap buffer overflow umożliwiający RCE

CVE-2026-48690HIGH7.1ten sam produkt

FastNetMon Community Edition through 1.2.9 contains an integer overflow vulnerability in the packet capture bu...

CVE-2026-48688HIGH7.5ten sam produkt

FastNetMon Community Edition through 1.2.9 contains multiple out-of-bounds reads in the BGP MP_REACH_NLRI IPv6...