JS8Call i JS8Call-improved zawierają podatność typu stack-based buffer overflow, którą można wywołać poprzez przesłanie spreparowanej transmisji radiowej zawierającej komendę @APRSIS GRID z nadmiernie długim lokatorem Maidenhead. Podatność otrzymała maksymalną ocenę CVSS 10.0, co czyni ją krytycznym zagrożeniem dla użytkowników oprogramowania.
▸ Pokaż oryginał (EN)
JS8Call through 2.3.1 and JS8Call-improved before 3.0 have a stack-based buffer overflow via a radio transmission of @APRSIS GRID followed by a long Maidenhead locator. This occurs in grid2deg in APRSISClient.cpp.
Podatność tkwi w funkcji grid2deg w pliku APRSISClient.cpp. Gdy aplikacja odbiera przez radio wiadomość APRS-IS z komendą @APRSIS GRID, przekazuje lokator Maidenhead do wspomnianej funkcji bez odpowiedniej weryfikacji długości danych. Zbyt długi ciąg znaków powoduje przepełnienie bufora na stosie (stack-based buffer overflow, CWE-121). Atakujący może dostarczyć złośliwy payload za pośrednictwem transmisji radiowej — bez jakiegokolwiek uwierzytelnienia i bez interakcji ze strony ofiary.
Skuteczne wykorzystanie podatności może umożliwić atakującemu zdalne wykonanie dowolnego kodu (RCE) na maszynie uruchamiającej JS8Call. W najgorszym przypadku może to prowadzić do pełnego przejęcia kontroli nad systemem ofiary.
Należy zaktualizować JS8Call-improved do wersji 3.0 lub nowszej, w której podatność została załatana (commit a6c7a19b82bbd7c2c0c892576f84d7449e8c7088). Dla oryginalnego JS8Call (do wersji 2.3.1) należy śledzić referencje producenta w celu uzyskania dostępnych patchy. Do czasu aktualizacji zaleca się ograniczenie ekspozycji na niezaufane transmisje radiowe APRS-IS.
JS8Call w wersji do 2.3.1 włącznie oraz JS8Call-improved w wersjach przed 3.0.
Podatność jest wyjątkowa pod względem wektora ataku — exploit dostarczany jest drogą radiową (transmisja RF), co oznacza, że potencjalny zasięg ataku zależy od mocy nadajnika i warunków propagacji. Nie wymaga dostępu do sieci IP ani żadnej interakcji użytkownika po stronie ofiary.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:P/AU:Y/R:U/V:D/RE:M/U:Green