In FreeBSD wurde eine Sicherheitsanfälligkeit (CVE-2022-23093) im Ping-Tool festgestellt, das zur Grundausstattung gehört. Dieses Problem könnte potenziell zu einer Remote-Codeausführung mit Root-Rechten führen, wenn über Ping ein externer Host, der von einem Angreifer kontrolliert wird, überprüft wird. Ein Fix wurde in den Updates FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 und 12.3-RELEASE-p10 bereitgestellt. Ob andere BSD-Systeme ebenfalls von dieser Anfälligkeit betroffen sind, ist derzeit unklar (es liegen noch keine Berichte über Schwachstellen in NetBSD, DragonFlyBSD und OpenBSD vor).
Die Schwachstelle wird durch einen Buffer Overflow im Code zur Verarbeitung von ICMP-Nachrichten verursacht, die als Antwort auf die Überprüfungsanfrage eintreffen. Der Code zum Senden und Empfangen von ICMP-Nachrichten in Ping verwendet Raw-Sockets und wird mit erhöhten Rechten ausgeführt (das Tool wird mit dem Flag setuid root ausgeliefert). Die Verarbeitung der Antwort erfolgt auf der Seite von Ping durch die Rekonstruktion der IP- und ICMP-Header von Paketen, die aus dem Raw-Socket empfangen werden. Die extrahierten IP- und ICMP-Header werden von der Funktion pr_pack() in Buffer kopiert, ohne zu berücksichtigen, dass im Paket nach dem IP-Header zusätzliche erweiterte Header vorhanden sein können.
Ähnliche Header werden aus dem Paket herausgefiltert und in den Header-Block aufgenommen, jedoch nicht bei der Berechnung der Puffergröße berücksichtigt. Sollte der Host als Antwort auf eine gesendete ICMP-Anfrage ein Paket mit zusätzlichen Headern zurückgeben, werden deren Inhalte in einen Bereich außerhalb des Puffers im Stack geschrieben. Dies ermöglicht es einem Angreifer, bis zu 40 Bytes Daten im Stack zu überschreiben, was potenziell die Ausführung eigenen Codes ermöglicht. Die Gefährlichkeit des Problems wird dadurch gemildert, dass sich der Prozess zum Zeitpunkt des Fehlers im Zustand der Isolation von Systemaufrufen (Capability Mode) befindet, was den Zugriff auf den Rest des Systems nach der Ausnutzung der Schwachstelle erschwert.
Quelle: opennet.ru
