TuxCare Team identifiziert CVE-2021-38604, eine neue Sicherheitslücke in glibc
Das TuxCare-Team ist für die Durchführung eingehender Analysen neuer CVEs verantwortlich. Dies geschieht für jedes neue CVE, das auftaucht und direkt oder indirekt das Linux-Ökosystem betrifft. Wir prüfen, ob die Distributionen, für die wir Dienstleistungen anbieten, betroffen sind. Wenn ein solches CVE die unterstützten Distributionen betrifft, krempeln die Teammitglieder die Ärmel hoch und beginnen, sich mit dem Code zu befassen.
Während der Durchführung dieser Arbeit auf CVE-2021-33574, Nikita Popov, einer unserer Team-Mitglieder, identifiziert ein Problem mit dem Upstream-glibc. Es stellte sich heraus, dass es möglich ist, eine Situation herbeizuführen, in der ein Segmentierungsfehler in einem bestimmten Codepfad innerhalb der Bibliothek ausgelöst werden könnte. Dies kann wiederum dazu führen, dass die Anwendung, die die Bibliothek verwendet, abstürzt, was zu einem Denial-of-Service-Problem führt.
Denken Sie daran, dass die glibc die wichtigsten Systemprimitiven bereitstellt und mit den meisten, wenn nicht allen anderen Linux-Anwendungen verknüpft ist, einschließlich anderer Sprachcompiler und Interpreter. Sie ist die zweitwichtigste Komponente eines Systems nach dem Kernel selbst.
Dieses Problem wurde mit dem ursprünglichen Upstream-Fix für CVE-2021-33574 eingeführt, insbesondere in der Datei mq_notify.c:
@@ -133,8 +133,11 @@ helper_thread (void *arg) |
Während der free() -Aufruf immun gegen die Übergabe von NULL-Zeigern ist, gilt dies für pthread_attr_destroy() nicht. Es war möglich, zwei Situationen zu identifizieren, in denen der Linux-Kernel die Nachricht NOTIFY_REMOVED verwendet und dabei kopierte Thread-Attribute im data.attr-Feld weitergibt. Leider ist eine Host-Anwendung in der Lage, dort einen NULL-Wert zu übergeben, wenn sie möchte, dass die Glibc einen Thread mit Standardattributen erzeugt. In diesem Fall würde die Glibc einen NULL-Zeiger in pthread_attr_destroy dereferenzieren, was zu einem Absturz des gesamten Prozesses führen würde.
Gemäß den Richtlinien zur verantwortungsvollen Offenlegung wurden sowohl die Schwachstelle als auch die Codekorrektur an das für glibc zuständige Team übermittelt, und ein CVE wurde bei Mitre beantragt (CVE-2021-38604). In glibc wurde sie als Fehler 28213 zugewiesen. Dieser wurde bereits in die Upstream-Glibc integriert.
Ein neuer Test wurde auch an die automatisierte Test-Suite der Glibc geschickt, um diese Situation zu erkennen und in Zukunft zu verhindern. Manchmal können Änderungen in nicht zusammenhängenden Codepfaden dazu führen, dass sich das Verhalten an anderer Stelle im Code ändert und der Programmierer sich dessen nicht bewusst ist. Dieser Test wird diese Situation auffangen.
Die Familie der "mq_"-Funktionen bietet POSIX-konforme Message-Queue-API-Funktionen und asynchrone Benachrichtigungen über eingehende Nachrichten und wird in der Regel für die Kommunikation zwischen Prozessen verwendet.
Einschlägige Links:
https://sourceware.org/git/?p=glibc.git;a=commit;h=42d359350510506b87101cf77202fefcbfc790cb
