Sonic 3 A.I.R. przed commitem 2492d18 zawiera podatność nieograniczonej alokacji pamięci w funkcji ReceivedPacketCache::enqueuePacket(), umożliwiającą nieuwierzytelnionemu atakującemu zdalnie wywołanie awarii procesu serwerowego. Wystarczy przesłanie jednego spreparowanego pakietu UDP, co czyni tę lukę szczególnie łatwą do wykorzystania.
▸ Pokaż oryginał (EN)
Sonic 3 A.I.R. before commit 2492d18 contains an unbounded memory allocation vulnerability in ReceivedPacketCache::enqueuePacket() that allows unauthenticated remote attackers to crash the server process by sending a crafted UDP packet with mUniquePacketID set to the maximum uint32 value. The mUniquePacketID field is read directly from the UDP wire-format packet header without bounds checking, causing the server to allocate one CacheItem per missing packet ID gap, exhausting available host memory and propagating an uncaught std::bad_alloc exception to std::terminate().
Pole mUniquePacketID odczytywane jest bezpośrednio z nagłówka pakietu UDP bez żadnej weryfikacji granic wartości. Gdy atakujący ustawi to pole na maksymalną wartość uint32, serwer interpretuje lukę w sekwencji identyfikatorów jako ogromną liczbę brakujących pakietów i dla każdego z nich alokuje oddzielny obiekt CacheItem. Prowadzi to do wyczerpania dostępnej pamięci hosta, co skutkuje niezłapanym wyjątkiem std::bad_alloc eskalowanym do std::terminate() i natychmiastowym zakończeniem procesu serwera.
Atakujący może trwale wyłączyć proces serwerowy (Denial of Service) poprzez wysłanie jednego pakietu UDP, co skutkuje niedostępnością usługi dla wszystkich połączonych użytkowników.
Należy zaktualizować Sonic 3 A.I.R. do wersji zawierającej commit 2492d1882cd2cf1cc1d7415729ce5c4fd686cd4f lub nowszy, dostępny w repozytorium projektu na GitHub.
Sonic 3 A.I.R. we wszystkich wersjach przed commitem 2492d1882cd2cf1cc1d7415729ce5c4fd686cd4f
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/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:X/AU:X/R:X/V:X/RE:X/U:X