Er is een kwetsbaarheid ontdekt in FreeBSD (CVE-2022-23093) in de ping-tool die bij de basislevering is inbegrepen. Het probleem kan mogelijk leiden tot remote code execution met root-rechten bij het controleren van een externe host die wordt beheerd door een aanvaller. Een oplossing is voorgesteld in de updates van FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 en 12.3-RELEASE-p10. Het is nog niet duidelijk of andere BSD-systemen kwetsbaar zijn voor deze ontdekking (er zijn nog geen kwetsbaarheidsrapporten voor NetBSD, DragonFlyBSD en OpenBSD verschenen).
De kwetsbaarheid is veroorzaakt door een buffer overflow in de code die ICMP-berichten afhandelt die als antwoord op een echo-request komen. De code voor het verzenden en ontvangen van ICMP-berichten in ping gebruikt raw sockets en wordt uitgevoerd met verhoogde privileges (de tool wordt geleverd met de setuid root-vlag). De verwerking van het antwoord wordt gedaan aan de ping-zijde door reconstructie van de IP- en ICMP-header van de pakketten die uit de raw socket komen. De toegewezen IP- en ICMP-headers worden gekopieerd naar buffers door de functie pr_pack(), zonder rekening te houden met het feit dat er naar de IP-header extra headers kunnen komen in het pakket.
Dergelijke headers worden uit het pakket gehaald en opgenomen in de headerblock, maar worden niet in aanmerking genomen bij de berekening van de bufferomvang. Als de host als antwoord op de verzonden ICMP-request een pakket met extra headers retourneert, zal de inhoud ervan in het gebied buiten de buffer in de stack worden geschreven. Dit stelt de aanvaller in staat om tot 40 bytes data in de stack te overschrijven, wat potentieel kan leiden tot de uitvoering van zijn code. Het gevaar van het probleem wordt verminderd doordat, op het moment dat de fout zich zich voordoet, het proces zich in een isolatie-modus van systeemaanroepen bevindt (capability mode), wat het verkrijgen van toegang tot de rest van het systeem na het exploiteren van de kwetsbaarheid bemoeilijkt.
Bron: opennet.ru
