In FreeBSD wurde eine Sicherheitsanfälligkeit (CVE-2022-23093) in der Ping-Utility entdeckt, die Teil der Standardauslieferung ist. Das Problem könnte potenziell zur Remote-Ausführung von Code mit Root-Rechten führen, wenn ein Ping an einen externen, vom Angreifer kontrollierten Host gesendet wird. Ein Patch wurde in den Updates FreeBSD 13.1-RELEASE-p5, 12.4-RC2-p2 und 12.3-RELEASE-p10 bereitgestellt. Ob andere BSD-Systeme von der entdeckten Anfälligkeit betroffen sind, ist noch unklar (Berichte über Anfälligkeiten in NetBSD, DragonFlyBSD und OpenBSD liegen bislang nicht vor).
Die Sicherheitsanfälligkeit wird durch einen Buffer Overflow im Code zur Analyse von ICMP-Nachrichten verursacht, die als Antwort auf den Ping-Anfrage kommen. Der Code für das Senden und Empfangen von ICMP-Nachrichten in Ping verwendet Raw-Sockets und läuft mit erhöhten Rechten (das Utility wird mit dem Setuid-Root-Flag ausgeliefert). Die Verarbeitung der Antwort erfolgt von Ping aus, indem die IP- und ICMP-Header der Pakete, die aus dem Raw-Socket empfangen werden, rekonstruiert werden. Die extrahierten IP- und ICMP-Header werden von der Funktion pr_pack() in Puffer kopiert, ohne zu berücksichtigen, dass im Paket nach dem IP-Header zusätzliche erweiterte Header vorhanden sein können.
Solche Header werden aus dem Paket extrahiert und in den Headerblock aufgenommen, jedoch nicht bei der Berechnung der Pufferspeichergröße berücksichtigt. Falls der Host als Antwort auf die gesendete ICMP-Anfrage ein Paket mit zusätzlichen Headern zurücksendet, wird deren Inhalt in den Bereich außerhalb des Puffers im Stack geschrieben. Infolgedessen kann der Angreifer bis zu 40 Bytes Daten im Stack überschreiben, was potenziell zur Ausführung eigenen Codes führen kann. Die Gefährlichkeit des Problems wird durch die Tatsache gemildert, dass der Prozess zum Zeitpunkt des Auftretens des Fehlers im Zustand isolierter Systemaufrufe (Capability Mode) ist, was den Zugriff auf den Rest des Systems nach der Ausnutzung der Anfälligkeit erschwert.
Quelle: opennet.ru
