ClickCease Update für erweiterten Lebenszyklus-Support für Binutils

Abonnieren Sie unseren beliebten Newsletter

Schließen Sie sich 4.500+ Linux- und Open-Source-Experten an!

2x im Monat. Kein Spam.

Extended Lifecycle Support Update für binutils deckt 92 CVEs ab

27. Dezember 2021. TuxCare PR Team

GNU Binutils ist eines der grundlegenden Pakete in einer Entwicklungsumgebung - es enthält mehrere verschiedene Werkzeuge zur Manipulation von ELF-Dateien, Objektdateien und anderen, die für den Prozess der Binärerstellung wichtig sind. Das Auffinden und Beheben von Problemen in diesem Paket stärkt also den gesamten Prozess und hat weitreichende Vorteile.

 

In den letzten Updates, die vom Extended Lifecycle Support Team für die unterstützten Linux-Distributionen veröffentlicht wurden, wurden über 90 CVEs in GNU Binutils behoben.

INHALT:
  1. Der erweiterte Lebenszyklus-Support aus der Sicht der Benutzer
  2. Auf einer tieferen Ebene
  3. Abschließende Gedanken
  4. Nachtrag

 

 

DIE ERWEITERTE LEBENSZYKLUSUNTERSTÜTZUNG AUS DER SICHT DER NUTZER

 

Als Dienstnutzer können Sie sich darauf verlassen, dass ein engagiertes Team von Sicherheits- und Linux-Experten angemessene Updates für Systeme vorbereitet, für die sonst keine Updates verfügbar wären.

 

In diesem speziellen Fall ist binutils ein grundlegendes Paket, auf das viele andere Werkzeuge wie Entwicklungsstacks, Debugger, Codeanalyse und viele andere, nicht unbedingt entwicklungsbezogene Werkzeuge, angewiesen sind. Es sicher zu halten, hat also direkte Auswirkungen auf die Sicherheit und Stabilität des gesamten Systems.

 

 

Auf einer tieferen Ebene

 

Das Extended Lifecycle Support-Team von TuxCare ist in der Regel damit beschäftigt, den Code von CVE-Fixes zu testen, ihn an ältere Versionen von Paketen anzupassen, die in den unterstützten Linux-Distributionen enthalten sind, und sicherzustellen, dass die veröffentlichten Pakete die Benutzer tatsächlich vor den Schwachstellen schützen, die angeblich behoben werden. Dieser Prozess wird "Backporting" genannt, da er darin besteht, eine Korrektur, die für eine neuere Version eines Pakets gilt, an ältere Versionen anzupassen, wie sie in den von ELS abgedeckten Linux-Distributionen vorhanden sind. Infolgedessen wird viel Zeit damit verbracht, den Code nur mit den Augen zu betrachten und Tests durchzuführen.

 

Bei der Arbeit an CVEs werden bei der Analyse manchmal neue Probleme festgestellt, die zu dem Zeitpunkt, als sie ursprünglich behandelt wurden, übersehen wurden. Das ELS-Team ist stets bestrebt, die vorgelagerten Open-Source-Projekte verantwortungsbewusst zu informieren und den Code zu diesen Projekten beizusteuern. Dies hat den zusätzlichen Vorteil, dass die Sicherheit des gesamten IT-Ökosystems verbessert wird. Natürlich werden die Korrekturen für diese neuen Probleme auch den ELS-Benutzern zur Verfügung gestellt, da die Systeme, die sie betreiben, nicht mehr vom ursprünglichen Hersteller unterstützt werden und den korrigierten Code sonst nicht auf anderem Wege erhalten würden.

 

Eines der jüngsten Ergebnisse dieser Aktivität, das bereits in den verfügbaren Updates enthalten ist, behebt insgesamt 92 Sicherheitslücken allein in binutils. Diese reichen von "Pufferüberläufen" bis hin zu "use after free"-Problemen und weisen eine breite Palette von CVSS-Scores auf - nicht alle sind kritisch, aber viele sind es tatsächlich.

 

Als grundlegendes Paket enthält binutils Werkzeuge, die bei der Code-Analyse, beim Debuggen und bei Linking-Operationen ausgiebig genutzt werden und die auch von vielen anderen Drittanbieter-Werkzeugen verwendet werden. Sie müssen nicht wirklich an der Entwicklung arbeiten, um binutils in Ihrem System zu haben, Sie haben es wahrscheinlich als Abhängigkeit für eine andere Anwendung oder ein Werkzeug, das eingesetzt wird. Wenn Sie binutils auf dem neuesten Stand halten, gewährleisten Sie den korrekten und sicheren Betrieb von mehr als nur binutils selbst.

 

Bei einigen dieser CVEs stellte das Team Situationen fest, in denen die ursprünglichen CVE-Fixes neue Probleme wie undefiniertes Verhalten oder andere Sicherheitsprobleme mit sich brachten. Diese erforderten eine interne Code-Entwicklung, um sie zu beheben. Dieser Code wurde dann an vorgelagerte Open-Source-Projekte übermittelt, die ihn wiederum entweder akzeptierten und in diese Projekte einbrachten oder ihren eigenen Code zur Behebung der neu gemeldeten Probleme vorbereiteten.

 

Ein Beispiel hierfür ist CVE-2018-7568. Das ELS-Team hat eine Situation identifiziert, in der die ursprünglich eingereichte Codebehebung ein undefiniertes Verhalten verursachen würde, und dies wurde dem Upstream-Projekt hier gemeldet.

 

Das Problem wurde von Nikita Popov, einem Teammitglied, entdeckt, als er die Änderungen am ursprünglichen CVE-Fix überprüfte, um sicherzustellen, dass er auf älteren Linux-Distributionen nicht versagt und mit dem Rest des Codes "gut funktioniert".

 

Es stellt sich heraus, dass der Patch für CVE-2018-7568 eine vorzeichenlose Art als Blocklänge (block_len) Zähler verwendet enthält. Bei Verwendung in Ausdrücken wie

xptr + block_len < xptr

unter den richtigen Umständen - block_len ist vorzeichenlos - könnte dies vom Compiler, der diese Zeile wegoptimieren könnte, vollständig weggelassen werden. Diese Art von Ausdrücken wird von der ISO C-Norm genau aus diesem Grund ausdrücklich verboten, und verschiedene Compiler oder derselbe Compiler unter verschiedenen Architekturen/Plattformen könnten diese Situation auf unterschiedliche Weise angehen und damit ein undefiniertes Verhalten verursachen. Der vom Team eingereichte Fehlerbericht enthält eine umfassendere Erklärung des Problems und den eingereichten Code, der es behebt.

 

Es wurde in die Upstream-Code-Basis aufgenommen und ist nun Teil des binutils-Pakets, und es wurde sogar schon von anderen Entwicklern weiter verfeinert. Dies ist ein Paradebeispiel dafür, wie Open-Source-Projektentwicklung richtig gemacht werden kann, und das ELS-Team arbeitet aktiv in diesem Bereich.

 

Ein Problem mit der Korrektur für CVE-2018-12700, das die Situation, die es zu lösen vorgibt, nicht zu verhindern scheint und das durch unsere Tests immer noch ausgelöst werden kann, wurde ebenfalls an die Upstream-Abteilung gemeldet und wartet auf Klärung.

 

Nach der Arbeit, die in diesem Update für binutils geleistet wurde, kommentierte Pavel Mayorov, ein weiterer Entwickler, der an binutils arbeitet, dass "soweit ich weiß, wir alle existierenden CVE für binutils bearbeitet haben... aber wir warten immer noch auf eine Antwort bezüglich des Problems mit CVE-2018-12700".

 

 

SCHLUSSGEDANKEN

 

Ältere Systeme auf dem neuesten Stand zu halten, ist nicht nur aus rein sicherheitstechnischer Sicht notwendig, auch wenn dies an sich schon wichtig ist. Sie ist auch erforderlich, um die Einhaltung verschiedener Geschäftsstandards zu erreichen und aufrechtzuerhalten, in denen die Fristen für die Aktualisierung von Patches festgelegt sind.

 

Wenn Sie sich auf ELS als Quelle für Ihre Sicherheitspatches und -updates verlassen, wirkt sich die sorgfältige Arbeit des Teams direkt auf die Sicherheit Ihrer Systeme und die Einhaltung der Anforderungen aus und gibt Ihnen die Gewissheit, dass Sie sich darauf verlassen können. Im Ergebnis sind Ihre Systeme geschützt und stabil, so dass Sie sich auf Ihre spezifischen Geschäftsanforderungen konzentrieren können.

 

 

ADDENDUM

 

Vollständige Liste der CVEs, die durch das letzte binutils-Update abgedeckt sind, das über den Extended Lifecycle Support Service verfügbar ist, gruppiert nach CVE-Jahr.

 

CVE-2016-2226: Behebung eines Integer-Überlaufs in der Funktion string_appends in cplus-dem.c

CVE-2016-4487: Behebung der Use-after-free-Schwachstelle in libiberty

CVE-2016-4488: Behebung der Use-after-free-Schwachstelle in libiberty

CVE-2016-4489: Behebung eines Integer-Überlaufs in libiberty

CVE-2016-4490: Behebung eines Integer-Überlaufs in cp-demangle.c in libiberty

CVE-2016-4492: Pufferüberlauf in der do_type-Funktion in cplus-dem.c in libiberty beheben

CVE-2016-4493: Fix out-of-bounds read in demangle_template_value_parm und do_hpacc_template_literal

CVE-2016-6131: Behebung einer Endlosschleife, Stapelüberlauf

 

CVE-2017-7223: Behebung eines globalen Pufferüberlaufs (der Größe 1)

CVE-2017-7224: Behebung eines ungültigen Schreibvorgangs (der Größe 1) beim Disassemblieren

CVE-2017-7225: Behebung einer NULL-Zeiger-Dereferenz und eines ungültigen Schreibvorgangs

CVE-2017-7226: Behebung eines Heap-basierten Pufferüberlaufs der Größe 4049

CVE-2017-7227: Behebung eines Heap-basierten Pufferüberlaufs

CVE-2017-7299: Fix ungültig lesen (der Größe 8) in ELF reloc Abschnitt

CVE-2017-7300: Fix Heap-basierte Puffer überlesen (off-by-one)

CVE-2017-7301: Off-by-One-Schwachstelle beheben

CVE-2017-7302: Ungültiges Lesen (der Größe 4) beheben

CVE-2017-7614: Problem mit undefiniertem Verhalten beheben

CVE-2017-8393: Behebung eines globalen Pufferüberlesefehlers

CVE-2017-8394: Behebt ungültiges Lesen der Größe 4 aufgrund von NULL-Zeiger-Dereferenzierung

CVE-2017-8396: Fix ungültiges Lesen der Größe 1

CVE-2017-8398: Behebung eines ungültigen Lesevorgangs der Größe 1 beim Dumping von Debug-Informationen

CVE-2017-8421: Speicherleck-Schwachstelle beheben

CVE-2017-9742: Pufferüberlauf beheben

CVE-2017-9744: Pufferüberlauf beheben

CVE-2017-9747: Pufferüberlauf beheben

CVE-2017-9748: Pufferüberlauf beheben

CVE-2017-9749: Pufferüberlauf beheben

CVE-2017-9753: Pufferüberlauf beheben

CVE-2017-9754: Pufferüberlauf beheben

CVE-2017-12448: Fix Verwendung nach frei

CVE-2017-12449: Behebung von Heap-Lesungen außerhalb der Grenzen

CVE-2017-12455: Behebung der Überschreitung von Grenzen Heap lesen

CVE-2017-12457: Behebung der NULL-Dereferenz

CVE-2017-12458: Behebung der Überschreitung von Grenzen Heap lesen

CVE-2017-12459: Behebung von Grenzüberschreitungen beim Heap-Write

CVE-2017-12450: Fix out of bounds heap write

CVE-2017-12452: Behebung von Heap-Lesevorgängen außerhalb der Grenzen

CVE-2017-12453: Behebung von Heap-Lesevorgängen außerhalb der Grenzen

CVE-2017-12454: Behebt das Lesen von beliebigem Speicher

CVE-2017-12456: Fix out of bounds heap read

CVE-2017-14333: Fix Integer-Überlauf, und hängen wegen einer zeitaufwendigen Schleife

CVE-2017-12451: Fix out of bounds stack read

CVE-2017-12799: Pufferüberlauf beheben

CVE-2017-13710: Behebung der NULL-Zeiger-Dereferenz

CVE-2017-14130: Fix _bfd_elf_attr_strdup Heap-basierter Pufferüberlauf

CVE-2017-14932: Behebung einer Endlosschleife

CVE-2017-14938: Behebung einer übermäßigen Speicherzuweisung

CVE-2017-14940: Behebung der NULL-Zeiger-Dereferenz

CVE-2017-15020: Fix parse_die Heap-basierter Pufferüberlauf

CVE-2017-15022: Fix bfd_hash_hash NULL-Zeiger-Dereferenz

CVE-2017-15225: Behebung eines Divide-by-Zero-Fehlers

CVE-2017-15938: Fix find_abstract_instance_name ungültiges Speicherlesen, Segmentierungsfehler

CVE-2017-15939: Behebung einer NULL-Zeiger-Dereferenz

CVE-2017-15996: Pufferüberlauf im gefuzzten Archiv-Header behoben

CVE-2017-16826: Ungültigen Speicherzugriff beheben

CVE-2017-16827: slurp_symtab ungültig frei

CVE-2017-16828: Behebung eines Integer-Überlaufs und eines Heap-basierten Pufferüberlaufs

CVE-2017-16831: Behebung eines Integer-Überlaufs oder einer übermäßigen Speicherzuweisung

CVE-2017-17080: Behebt bfd_getl32 Heap-basiertes Pufferüberlesen

CVE-2017-17121: Speicherzugriffsverletzung beheben

CVE-2017-17123: Behebung der NULL-Zeiger-Dereferenz

CVE-2017-17124: Behebung eines übermäßigen Speicherverbrauchs oder eines Heap-basierten Pufferüberlaufs

CVE-2017-17125: Pufferüberlesung beheben

 

CVE-2018-6323: Behebung eines Integer-Überlaufs ohne Vorzeichen

CVE-2018-6543: Behebung eines Integer-Überlaufs

CVE-2018-6759: Segmentierungsfehler beheben

CVE-2018-7208: Segmentierungsfehler beheben

CVE-2018-7568: Behebung eines Integer-Überlaufs

CVE-2018-7569: Integer-Unterlauf oder -Überlauf beheben

CVE-2018-7642: Fix aout_32_swap_std_reloc_out NULL-Zeiger-Dereferenz

CVE-2018-7643: Behebung eines Integer-Überlaufs

CVE-2018-8945: Segmentierungsfehler beheben

CVE-2018-13033: Korrektur der übermäßigen Speicherzuweisung

CVE-2018-10373: Behebung einer NULL-Zeiger-Dereferenz

CVE-2018-10535: Behebung der NULL-Zeiger-Dereferenz

CVE-2018-18309: Ungültige Speicheradressen-Dereferenzierung beheben

CVE-2018-18605: Behebung von Fehlbedienungen bei Abschnittszusammenführungen

CVE-2018-18606: Fix NULL-Zeiger-Dereferenz

CVE-2018-18607: Behebung einer NULL-Zeiger-Dereferenz in elf_link_input_bfd

CVE-2018-19931: Behebung eines Heap-basierten Pufferüberlaufs in bfd_elf32_swap_phdr_in

CVE-2018-19932: Integer-Überlauf und Endlosschleife behoben

CVE-2018-20002: Korrektur des Speicherverbrauchs

CVE-2018-20623: Fix use-after-free in der Fehlerfunktion

 

CVE-2018-20671: Behebung einer Integer-Überlauf-Schwachstelle

CVE-2018-1000876: Fix Integer-Überlauf, der einen Heap-Überlauf auslöst

 

CVE-2019-9073: Übermäßige Speicherzuweisung beheben

CVE-2019-9075: Behebung eines Heap-basierten Pufferüberlaufs in _bfd_archive_64_bit_slurp_armap

CVE-2019-9077: Behebung eines Heap-basierten Pufferüberlaufs in process_mips_specific

CVE-2019-12972: Behebung eines Heap-basierten Pufferüberlaufs in _bfd_doprnt

CVE-2019-14444: Behebung eines Integer-Überlaufs

CVE-2019-17450: Behebung einer unendlichen Rekursion

Möchten Sie das Patchen von Sicherheitslücken ohne Kernel-Neustart, Systemausfallzeiten oder geplante Wartungsfenster automatisieren?

Erfahren Sie mehr über Live-Patching mit TuxCare

Werden Sie ein TuxCare-Gastautor

Los geht's

E-Mail

Beitreten

4,500

Linux & Open Source
Fachleute!

Abonnieren Sie
unseren Newsletter