Die Qualys-Threat-Research-Unit (TRU) hat vor kurzem vier bedeutende Schwachstellen in der GNU-C-Library aufgedeckt, einem Eckpfeiler für unzählige Anwendungen in der Linux-Umgebung.
Bevor wir auf die spezifischen Details der von der Qualys-Threat-ResearchäUnit in der GNU-C-Library entdeckten Schwachstellen eingehen, ist es wichtig, die allgemeinen Auswirkungen und die Bedeutung dieser Erkenntnisse zu verstehen.
Die GNU-C-Library, oder glibc, ist eine wesentliche Komponente von praktisch jedem Linux-basierten System und dient als zentrale Schnittstelle zwischen Anwendungen und dem Linux-Kernel. Die jüngste Entdeckung dieser Schwachstellen ist nicht nur ein technisches Problem, sondern eine Angelegenheit mit weitreichenden Sicherheitsauswirkungen.
Die in den glibc-Funktionen syslog und qsort festgestellten Schwachstellen verdeutlichen einen kritischen Aspekt der Softwaresicherheit: Selbst die grundlegendsten und vertrauenswürdigsten Komponenten sind nicht vor Fehlern gefeit. Die Auswirkungen dieser Schwachstellen gehen weit über einzelne Systeme hinaus und betreffen viele Anwendungen und potenziell Millionen von Benutzern weltweit. Hier sollen die Besonderheiten dieser Schwachstellen, ihre potenziellen Auswirkungen und die Maßnahmen zu ihrer Behebung beleuchtet werden.
Für die erste Schwachstelle (CVE-2023-6246) wurde eine bedeutende Sicherheitslücke in der Funktion __vsyslog_internal() der GNU-C-Library identifiziert, die syslog() und vsyslog() betrifft. Diese Heap-basierte Buffer-Overflow-Schwachstelle wurde versehentlich in glibc 2.37 (August 2022) eingeführt und anschließend in glibc 2.36 zurückportiert, während eine andere, weniger schwerwiegende Schwachstelle (CVE-2022-39046) behoben wurde. Große Linux-Distributionen wie Debian (Versionen 12 und 13), Ubuntu (23.04 und 23.10) und Fedora (37 bis 39) sind nachweislich verwundbar. Dieser Fehler ermöglicht eine lokale Privilegienerweiterung, die es einem unprivilegierten Benutzer ermöglicht, vollen Root-Zugriff zu erlangen, wie in Fedora 38 demonstriert.
Bei unserer Analyse der gleichen Funktion, die von CVE-2023-6246 betroffen ist, haben wir zwei weitere, wenn auch geringfügige, Schwachstellen festgestellt:
- CVE-2023-6779 (glibc): Diese Sicherheitslücke beinhaltet einen Heap-basierten Buffer Overflow in der Funktion __vsyslog_internal().
- CVE-2023-6780 (glibc): Hierbei handelt es sich um ein Integer-Überlauf-Problem in der Funktion __vsyslog_internal().
Nach unserer Einschätzung scheint das Auslösen dieser Schwachstellen schwieriger zu sein als CVE-2023-6246. Außerdem ist es wahrscheinlich komplexer, sie effektiv auszunutzen.
Zur letzten Schwachstelle: In der Funktion qsort () der GNU C Library wurde ein Problem der Memory-Corruption gefunden, das durch eine fehlende Überprüfung der Grenzen verursacht wird. Diese Verwundbarkeit kann ausgelöst werden, wenn qsort() mit einer nicht-transitiven Vergleichsfunktion (wie cmp(int a, int b), die (a – b) zurückgibt) und einer großen Anzahl von Elementen, die von einem Angreifer kontrolliert werden, verwendet wird, was möglicherweise zu einem malloc()-Fehler führt.
Schwachstellen in der GNU-C-Library:
Die Entdeckung von Sicherheitslücken in den syslog- und qsort-Funktionen der GNU-C-Library gibt Anlass zu großen Sicherheitsbedenken. Die syslog-Schwachstelle, ein Heap-basierter Buffer Overflow, kann es lokalen Benutzern ermöglichen, vollen Root-Zugriff zu erlangen, was Auswirkungen auf die wichtigsten Linux-Distributionen hat. Ebenso kann die qsort-Schwachstelle, die auf eine fehlende Grenzprüfung zurückzuführen ist, zu einer Beschädigung des Speichers führen und betrifft alle glibc-Versionen seit 1992. Diese Schwachstellen machen deutlich, wie wichtig strenge Sicherheitsmaßnahmen bei der Softwareentwicklung sind, insbesondere bei Kernbibliotheken, die von vielen Systemen und Anwendungen genutzt werden.
Heap-basierter Pufferüberlauf in der Funktion __vsyslog_internal() (CVE-2023-6246):
Bei dieser identifizierten Schwachstelle handelt es sich um einen Heap-basierten Buffer Overflow in der Funktion __vsyslog_internal() der GNU C Library, auch bekannt als glibc. Diese kritische Funktion untermauert die weit verbreiteten syslog() und vsyslog() Funktionen. Das Buffer Overflowproblem, das auf die Einführung der glibc-Version 2.37 zurückgeführt wird, stellt eine erhebliche Bedrohung dar, da es eine lokale Privilegienerweiterung ermöglichen könnte, so dass ein nicht privilegierter Benutzer durch manipulierte Eingaben in Anwendungen, die diese Protokollierungsfunktionen verwenden, vollständigen Root-Zugriff erlangen kann.
Obwohl die Schwachstelle nur unter bestimmten Bedingungen ausgenutzt werden kann (z. B. durch ein ungewöhnlich langes argv[0] oder openlog() ident-Argument), sind die Auswirkungen aufgrund der weiten Verbreitung der betroffenen Bibliothek erheblich. Interessanterweise wurde ein ähnliches Problem bereits im Dezember 1997 in einer älteren Linux libc Version gemeldet.
Memory-Corruption in der Funktion qsort():
Die zweite Schwachstelle betrifft einen subtilen, aber gefährlichen Fehler in der qsort()-Funktion der glibc. Dieses Problem entsteht durch eine fehlende Überprüfung der Grenzen, was zu einer Beschädigung des Speichers führt. Damit eine Anwendung verwundbar ist, muss sie die Funktion qsort() mit einem bestimmten Satz von Kriterien verwenden: eine nichttransitive Vergleichsfunktion (wie ein einfaches cmp(int a, int b), das (a – b) zurückgibt) und eine erhebliche Anzahl von Elementen, die von einem Angreifer kontrolliert werden. Dieses Szenario könnte zu einem malloc()-Fehler innerhalb von qsort() führen und damit die Tür für einen Missbrauch öffnen.
Es wurden jedoch keine realen Beispiele für verwundbare Programme identifiziert. Dieses Problem betrifft alle Versionen der glibc von September 1992 (Version 1.04) bis zur neuesten Version (Version 2.38). Die Glibc-Entwickler haben dieses Problem bereits in einem kürzlich erschienenen Update behoben, nachdem es während einer Überarbeitung von qsort() unabhängig entdeckt wurde. Das Glibc-Sicherheitsteam stellte klar, dass die Schwachstelle von Anwendungen herrührt, die nicht-transitive Vergleichsfunktionen verwenden, die nicht mit den POSIX- und ISO-C-Standards konform sind.
Qualys QID-Abdeckung:
Wir werden die Details der verschiedenen QIDs im Zusammenhang mit dieser Schwachstelle bekannt geben, sobald sie verfügbar sind. Weitere Details werden nach ihrer Veröffentlichung aktualisiert.
Weitere QIDs werden für diese Sicherheitslücken veröffentlicht, sobald die Linux-Distributionen ihre backported Fixes veröffentlichen.
Verbessern Sie die Sicherheitslage mit Qualys-Vulnerability-Management,-Detection, and Response (VMDR)
Qualys VMDR bietet eine umfassende Abdeckung und Sichtbarkeit von Schwachstellen und versetzt Unternehmen in die Lage, schnell zu reagieren, Prioritäten zu setzen und die damit verbundenen Risiken zu minimieren.
Nutzen Sie die Leistungsfähigkeit von Qualys-VMDR zusammen mit Trurisk und der Qualys-Query-Language (QQL), um anfällige Assets effizient zu identifizieren und zu priorisieren und die oben genannten Schwachstellen effektiv zu beheben.
Verwenden Sie diese QQL-Anweisung:
Disclosure Timeline for CVE-2023-6246, CVE-2023-6779 and CVE-2023-6780
- 2023-11-07: We sent a preliminary draft of our advisory to Red Hat Product Security.
- 2023-11-15: Red Hat Product Security acknowledged receipt of our email.
- 2023-11-16: Red Hat Product Security asked us if we could share our exploit with them.
- 2023-11-17: We sent our exploit to Red Hat Product Security.
- 2023-11-21: Red Hat Product Security confirmed that our exploit worked, and assigned CVE-2023-6246 to this heap-based buffer overflow in __vsyslog_internal().
- 2023-12-05: Red Hat Product Security sent us a patch for CVE-2023-6246 (written by the glibc developers) and asked us for our feedback.
- 2023-12-07: While reviewing this patch, we discovered two more minor vulnerabilities in the same function (an off-by-one buffer overflow and an integer overflow). We immediately sent an analysis, proof of concept, and patch proposal to Red Hat Product Security, and suggested that we directly involve the glibc security team.
- 2023-12-08: Red Hat Product Security acknowledged receipt of our email, and agreed that we should directly involve the glibc security team. We contacted them on the same day, and they immediately replied with very constructive comments.
- 2023-12-11: The glibc security team suggested that we postpone the coordinated disclosure of all three vulnerabilities until January 2024 (because of the upcoming holiday season). We agreed.
- 2023-12-13: Red Hat Product Security assigned CVE-2023-6779 to the off-by-one buffer overflow and CVE-2023-6780 to the integer overflow in __vsyslog_internal().
- 2024-01-04: We suggested either January 23 or January 30 for the Coordinated Release Date of these vulnerabilities. The glibc developers agreed on January 30.
- 2024-01-12: The glibc developers sent us an updated version of the patches for these vulnerabilities.
- 2024-01-13: We reviewed these patches and sent our feedback to the glibc developers.
- 2024-01-15: The glibc developers sent us the final version of the patches for these vulnerabilities.
- 2024-01-16: We sent these patches and a draft of our advisory to the linux-distros@openwall. They immediately acknowledged receipt of our email.
- 2024-01-30: Coordinated Release Date (18:00 UTC).
Disclosure Timeline for Out-of-bounds read & write in glibc’s qsort()
- 2023-12-12: We sent a draft of our advisory to the glibc security team. They immediately acknowledged receipt of our email.
- 2023-12-19: The glibc security team decided to not treat this memory corruption in qsort() as a vulnerability in the glibc itself, as explained in the “Summary” of our advisory.
- 2024-01-16: We backported commit b9390ba to all current and past stable versions of the glibc, and sent this patch and a draft of our advisory to the linux-distros@openwall (to piggyback on the glibc embargo for CVE-2023-6246). They immediately acknowledged receipt of our email.
- 2024-01-30: Coordinated Release Date (18:00 UTC).
Technical Details
Weitere technische Details finden sich unter:
https://www.qualys.com/2024/01/30/syslog
https://www.qualys.com/2024/01/30/qsort
Zusammenfassend lässt sich sagen, dass die jüngste Entdeckung dieser schwerwiegenden Schwachstellen in der GNU-C-Library die Sicherheitsprobleme in weit verbreiteten Softwarekomponenten deutlich macht. Diese Schwachstellen, die die wichtigsten Linux-Distributionen betreffen, unterstreichen die Notwendigkeit ständiger Wachsamkeit und zeitnaher Aktualisierungen der Softwaresicherheit.
Von Saeed Abbasi, Product Manager – Threat Research Unit, Qualys