Der er opdaget en sårbarhed (CVE-2022-23093) i ping-værktøjet, der er en del af standardpakken i FreeBSD. Problemet kan potentielt føre til fjernudførelse af kode med root-rettigheder, når man tjekker en ekstern vært, der kontrolleres af en angriber. Rettelser er foreslået i opdateringerne FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 og 12.3-RELEASE-p10. Det er endnu uklart, om andre BSD-systemer er ramt af den opdagede sårbarhed (der er ikke rapporteret nogen sårbarheder i NetBSD, DragonFlyBSD og OpenBSD endnu).
Sårbarheden skyldes en buffer-overløb i koden, der håndterer ICMP-meddelelser, som kommer som svar på kontrolanmodningen. Koden til afsendelse og modtagelse af ICMP-meddelelser i ping bruger rå sockets og kører med forhøjet privilegium (værktøjet leveres med setuid root-flaget). Behandlingen af svaret sker i ping ved rekonstruktion af IP- og ICMP-hovedene fra pakkerne, der modtages fra den rå socket. De allokerede IP- og ICMP-hoveder kopieres af funktionen pr_pack() til buffere, uden at tage hensyn til, at der kan være ekstra udvidede hoveder efter IP-hovedet i pakken.
Sådanne hoveder udtrækkes fra pakken og inkluderes i headerblokken, men tages ikke i betragtning ved beregningen af bufferstørrelsen. Hvis en vært returnerer en pakke med ekstra hoveder som svar på den sendte ICMP-anmodning, vil indholdet af disse hoveder blive skrevet til området uden for bufferen på stakken. Som et resultat kan en angriber overskrive op til 40 byte data på stakken, hvilket potentielt muliggør udførelse af sin egen kode. Problemet er delvist afhjulpet af det faktum, at når fejlen opstår, er processen i en isoleret tilstand af systemopkald (capability mode), hvilket gør det vanskeligt at få adgang til resten af systemet efter udnyttelse af sårbarheden.
Kilde: opennet.ru
