Skip to main content

Kritische WebP-0-Day-Sicherheitslücke CVE-2023-4863 betrifft ein breiteres Software-Ökosystem

feature insights context

28. September 2023

0 Min. Lesezeit

Diesen Monat haben Apple Security Engineering and Architecture (SEA) und The Citizen Lab an der Munk School der University of Toronto zwei Critical Sicherheitslücken im Zusammenhang mit manipulierten WebP-Bildern bekannt gemacht. Diese könnten ausgenutzt werden, um den Chrome-Browser sowie die Bibliothek webmproject/libwebp von Google anzugreifen.

Am 27. September 2023 wurden die folgenden CVEs aktiv zur Nachverfolgung dieser libwebp-Sicherheitslücke verwendet:

  • CVE-2023-4863: Am 11. September 2023 bekannt gemacht, mit einem CVSS-Score von 9,6. EPSS-Score: 31,86 % (97. Perzentil*). Hinweis: Der CVE wurde ursprünglich mit 8,8 („Hoch“) bewertet, bevor weitere Details bekannt wurden. 

  • CVE-2023-5129: Am 25. September 2023 bekannt gemacht, mit einem CVSS-Score von 10 (dem höchstmöglichen Wert); Google, die zuständige CVE-Nummerierungsstelle, lehnte ihn später am 27. September 2023 als Duplikat ab.

Die in der WebP-Bibliothek libwebp identifizierte Sicherheitslücke betrifft nicht nur Browser und Chrome-basierte Anwendungen (z. B. 1Password für macOS). Das ist besonders bedeutsam, da die Bibliothek libwebp von vielen Betriebssystemen und beliebten Anwendungs-Frameworks zum Rendern von .webp-Bildern genutzt wird, darunter das weit verbreitete Electron-Framework. Somit betrifft die libwebp-Sicherheitslücke auch universell einsetzbare Software wie Pillow sowie andere Anwendungen wie ffmpeg und Gimp. Beachten Sie, dass einige dieser Anwendungen und Softwarekomponenten in Container-Images enthalten sind.

Betroffen sind Versionen von webmproject/libwebp ab 0.5.0 bis einschließlich 1.3.1. Stellen Sie sicher, dass Ihr Betriebssystem und Ihre Softwareprojekte mindestens Version 1.3.2 erfordern, um die Sicherheitslücke zu beheben. Beachten Sie jedoch, dass libwebp meist indirekt von anderer Software verwendet wird, die die Bibliothek mitliefert. Das trägt dazu bei, dass sich die Auswirkungen dieser Sicherheitslücke auf ein breiteres Software-Ökosystem erstrecken.

Google und andere Anbieter veröffentlichten als Reaktion auf den ursprünglichen CVE schnell Korrekturen für beliebte Browser. 

Snyk beobachtet diese Sicherheitslücke und aktualisiert diesen Artikel, sobald neue Informationen vorliegen. Auch die Snyk Vulnerability Database ergänzen wir mit den neuesten verfügbaren Daten. Führen Sie daher weiterhin regelmäßig Scans durch, um Ihre Projekte zu schützen. Diese libwebp-Sicherheitslücke zeigt erneut, wie wichtig es ist, Ihre Anwendungen und Container-Images auf Sicherheitslücken zu prüfen – und wie häufig Sie dies tun sollten, um Ihre Software-Lieferkette zu schützen.

Besuchen Sie uns erneut oder folgen Sie uns auf X (@snyksec), um die neuesten Nachrichten und Entwicklungen zu erfahren. Weitere Informationen finden Sie weiter unten.

EPSS bewertet die direkte Ausgabe des EPSS-Modells. Die Scores vermitteln einen Gesamteindruck davon, wie groß die Gefahr einer Ausnutzung in freier Wildbahn ist. Das Perzentil gibt die EPSS-Wahrscheinlichkeit im Verhältnis zu allen bekannten EPSS-Scores an. In diesem Fall ist die Wahrscheinlichkeit, dass CVE-2023-4863 ausgenutzt wird, höher als bei 97 % aller bewerteten Schwachstellen – das bedeutet, dass diese Schwachstelle mit größerer Wahrscheinlichkeit als die meisten anderen von einem Angreifer ausgenutzt wird. Diese Daten werden täglich aktualisiert und basieren auf der jeweils neuesten verfügbaren Version des EPSS-Modells. Weitere Informationen finden Sie in der EPSS-Dokumentation.

Was verwendet libwebp?

Die Sicherheitslücke ist wahrscheinlich auch in Entwickler-Ökosystemen weit verbreitet, da höhere Programmiersprachen häufig die zugrunde liegende libwebp-Bibliothek verwenden. Beispielsweise ist die für die Entwicklung von 2D- und 3D-Spielen genutzte GoDot Game Engine von der libwebp-Bibliothek abhängig, und auch das weit verbreitete FFmpeg-Dienstprogramm verwendet die libwebp-Bibliothek. 

Sicherheitsexpertinnen und -experten ermitteln noch immer das gesamte Ausmaß der Nutzung in Anwendungen, da die Sicherheitslücke wahrscheinlich Softwarekomponenten betrifft, die .webp-Bild-Codecs verwenden und deren Inhalte rendern (z. B. Browser, Design-Tools usw.).

Die Sicherheitslücke in libwebp erklärt

Die libwebp-Bibliothek verarbeitet Bilder im .webp-Format. Sie wurde vor über zehn Jahren von Google entwickelt und wird in den meisten Anwendungen genutzt, die .webp-Bilder rendern. Die Sicherheitslücke kann mithilfe einer bösartig gestalteten verlustfreien .webp-Datei ausgenutzt werden, die einen Pufferüberlauf in der anfälligen Bibliothek verursacht.

Angriffe über diese Sicherheitslücke können von Denial-of-Service-Angriffen (DoS) bis hin zur möglichen Remotecodeausführung (RCE) reichen. So zeigten eng verwandte Angriffe wie der 0-Day-Exploit BLASTPASS (Apple CVE-2023-41064,CVE-2023-41061), dass über das iMessage-System versendete, bösartige .webp-Bilder das iOS-Gerät eines Opfers kompromittieren konnten, ohne dass die Besitzerin oder der Besitzer etwas tun musste.

Weitere Informationen sowie Links zu detaillierten Analysen und Proof-of-Concept-Beispielen finden Sie auf der Seite zur Snyk Vulnerability Database.

Die libwebp-Sicherheitslücke mit Snyk erkennen

Mit Snyk können Sie die libwebp-Sicherheitslücke auf verschiedene Weise erkennen. Mit der Snyk CLI können Sie Ihre Projekte lokal testen. Sie können Ihre Projekte über unsere SCM-Integrationen in Snyk importieren oder Snyk-Berichte verwenden, um schnell alle Projekte zu durchsuchen, die Sie bereits in Snyk importiert haben, und nach libwebp zu suchen. 

Projekte mit der Snyk CLI testen

Snyk Container kann Sie über Betriebssystempakete informieren, die von anfälligen Versionen von libwebp abhängig sind.  Snyk kann Ihre Container oder Dockerfiles über die Weboberfläche überwachen. Alternativ können Sie einen Scan manuell mit diesem CLI-Befehl starten: snyk container test.

Das folgende Beispiel zeigt, wie die Snyk CLI das Docker-Container-Image python:3.11.1 scannt und auf die libwebp-0-Day-Sicherheitslücke libwebp prüft:

$ snyk container test python:3.11.1

Testing python:3.11.1...
…
✗ Critical severity vulnerability found in libwebp/libwebpdemux2
  Description: Improper Input Validation
  Info: https://security.snyk.io/vuln/SNYK-DEBIAN11-LIBWEBP-5918870
  Introduced through: libwebp/libwebp-dev@0.6.1-2.1, imagemagick@8:6.9.11.60+dfsg-1.3, meta-common-packages@meta
  From: libwebp/libwebp-dev@0.6.1-2.1 > libwebp/libwebpdemux2@0.6.1-2.1
  From: imagemagick@8:6.9.11.60+dfsg-1.3 > imagemagick/imagemagick-6.q16@8:6.9.11.60+dfsg-1.3 > imagemagick/libmagickcore-6.q16-6@8:6.9.11.60+dfsg-1.3 > libwebp/libwebpdemux2@0.6.1-2.1
  From: libwebp/libwebp-dev@0.6.1-2.1 > libwebp/libwebpmux3@0.6.1-2.1
  and 3 more...
  Fixed in: 0.6.1-2.1+deb11u2
…

Tested 1 dependency for known issues, found 1 issue.

C++-Projekte mit der CLI testen

Snyk Open Source kann Sie auf eine anfällige libwebp-Version in den C/C++-Abhängigkeiten Ihrer Anwendung hinweisen. Snyk kann Ihre Anwendungen über die Weboberfläche überwachen. Alternativ können Sie einen Scan Ihrer Open-Source-Abhängigkeiten manuell mit diesem CLI-Befehl starten: snyk test --unmanaged.

$ snyk test --unmanaged

Testing /Users/developer/myapp...

Issues:

 ✗ [Critical] Heap-based Buffer Overflow
   Introduced through: https://github.com|webmproject/libwebp@1.3.1
   URL: https://security.snyk.io/vuln/SNYK-UNMANAGED-WEBMPROJECTLIBWEBP-5918283

Tested 1 dependency for known issues, found 1 issue.

Weitere Informationen zu den Scan-Funktionen für C/C++ finden Sie in der Snyk User Documentation.

Projekte mithilfe einer SCM-Integration testen

Wenn Sie Ihr Projekt mithilfe unserer unterstützten SCM-Integrationen (GitHub, Bitbucket, GitLab, Azure Repos) in Snyk importieren, wird automatisch ein Test gestartet. Anschließend können Sie in der Snyk-Benutzeroberfläche die libwebp-Sicherheitslücke in Ihren Projekten erkennen, priorisieren und beheben. 

Mit Snyk-Berichten die libwebp-Sicherheitslücke in Ihren Projekten erkennen

Snyk-Kunden mit Zugriff auf die Berichte von Snyk (Enterprise-Tarif) können libwebp schnell in Projekten finden, die sie bereits importiert haben und mit Snyk überwachen. Filtern Sie im Bericht „Issue-Details“ nach den CVEs: CVE-2023-5129 UND CVE-2023-4863.

Snyk-Detailbericht zu Problemen, gefiltert nach offenen CVEs. Angezeigt werden 55 Probleme nach Schweregrad sowie eine Schwachstellentabelle mit CVE-2023-4863.

Kopieren Sie die URL, um diese Ansicht mit anderen Teammitgliedern zu teilen, oder exportieren Sie sie als PDF, damit sie im gesamten Unternehmen sichtbar ist.

Wenn Sie das Problem finden, können Sie genau sehen, wo es verwendet wird. Klicken Sie anschließend auf das Projekt selbst, um weitere Informationen zum Problem und Anweisungen zur Behebung zu erhalten.

Korrekturen priorisieren 

Wahrscheinlich finden Sie mehrere libwebp-Probleme in Ihren Projekten. Das kann die Entscheidung erschweren, womit Sie bei der Behebung beginnen sollten. Snyk bietet verschiedene Möglichkeiten, Sie bei der Priorisierung zu unterstützen.

Den Priority Score von Snyk verwenden

Der Priority Score von Snyk berechnet zahlreiche Risikofaktoren, damit Sie schnell erkennen, welche Probleme zuerst angegangen werden sollten. Dazu wertet der Score verschiedene Signale aus, etwa EPSS, den Reifegrad von Exploits, CVSS, Trends in sozialen Medien und mehr. So können Sie die Liste der Sicherheitslücken schnell durchgehen und Korrekturen entsprechend priorisieren. Bei libwebp wird der Score verständlicherweise in den meisten Fällen hoch ausfallen. 

Der Score wird für jedes libwebp-Problem auf der Seite „Projekte“ angezeigt und ist auch in den Snyk-Berichten verfügbar.

Snyk-Prioritätsbewertung für das libwebp-Problem

Insights in Snyk verwenden

Wenn Sie als Snyk-Kundin oder -Kunde Insights verwenden, können Sie zusätzlichen Anwendungskontext heranziehen, um zu verstehen, welche Probleme ein höheres Risiko darstellen. 

Insights fasst Daten aus der gesamten Snyk-Plattform zusammen und setzt sie in Beziehung, um eine 360°-Ansicht Ihrer Anwendung zu erstellen. Diese umfasst alle an ihrer Erstellung beteiligten Komponenten sowie den Kontext ihrer Bereitstellung in der Produktionsumgebung. Mithilfe dieser Ansicht können Sie das Risiko eines bestimmten libwebp-Problems besser einschätzen. Dazu beantwortet sie Fragen wie: Betrifft das Problem Ihre Umgebung? Ist der Code, der das Problem verursacht, bereitgestellt? Und so weiter. 

Öffnen Sie den Insights-Tab und verwenden Sie die CVE-Filter sowie den Trichter oben auf der Seite, um die riskantesten libwebp-Probleme in Ihren Projekten schnell einzugrenzen. 

Im folgenden Beispiel werden zwei libwebp -Probleme als für das verwendete Betriebssystem relevant gekennzeichnet. Sie sind einem in der Produktionsumgebung bereitgestellten Container zugeordnet, der über einen konfigurierten Internetzugang verfügt und somit ein höheres Risiko darstellt.

Screenshot des Insights-Report-Bereichs in Snyk zur libwebp-Schwachstelle

Um genau zu verstehen, wie das Risiko entsteht und in welchem Zusammenhang es mit der Anwendung steht, öffnen Sie den Evidence-Graph, um weitere Informationen zu erhalten:

Screenshot des Evidence Graph von Snyk zur libwebp-Schwachstelle

Weitere Informationen zu Insights, zur Einrichtung und zur Nutzung finden Sie in unserer Online-Dokumentation.

So beheben Sie die libwebp-Sicherheitslücke

libwebp in Container-Basis-Images beheben

Aktualisieren Sie Ihr Basis-Image auf ein neueres Tag mit einer korrigierten Version. Für unterstützte Ökosysteme können Sie Pull Requests mit der erforderlichen Korrektur direkt in Snyk auslösen.

Snyk empfiehlt beispielsweise über die Benutzeroberfläche oder die CLI alternative Container-Basis-Images. Wenn Sie Ihr Quellcode-Repository über ein SCM wie GitHub importieren, können Sie die Korrektur des Container-Images automatisieren, indem Sie einen Pull Request erstellen, der den FROM-Eintrag in der Dockerfile aktualisiert:

Snyk empfiehlt alternative Container-Basis-Images und ermöglicht Ihnen, automatisch eine Lösung vorzuschlagen, indem ein Pull Request erstellt wird, der den FROM-Eintrag in der Dockerfile aktualisiert.

Snyk Container empfiehlt Korrekturen für die meisten offiziellen Docker-Hub-Basis-Images, sobald diese veröffentlicht werden:

Testing python:3.11.1-bullseye...
…

Base image:        python:3.11.1-bullseye

Tested 427 dependencies for known issues, found 395 issues.

Base Image              Vulnerabilities  Severity
python:3.11.1-bullseye  395              7 critical, 22 high, 71 medium, 295 low

Recommendations for base image upgrade:

Minor upgrades
Base Image                 Vulnerabilities  Severity
python:3.12.0rc3-bullseye  300              1 critical, 2 high, 2 medium, 295 lowpython:3.11.5-bullseye  300              1 critical, 2 high, 2 medium, 295 low

Alternative image types
Base Image                      Vulnerabilities  Severity
python:3.12.0rc2-slim-bullseye  63               0 critical, 0 high, 0 medium, 63 low
python:3.12.0rc2-slim           41               0 critical, 0 high, 1 medium, 40 low
python:3.12.0rc1-slim-bookworm  41               0 critical, 0 high, 1 medium, 40 low
python:3.11.4-bookworm          175              1 critical, 1 high, 3 medium, 170 low

libwebp in C- und C++-Projekten beheben

Aktualisieren Sie alle webmproject/libwebp-Abhängigkeiten in Ihrem Projekt auf Version 1.3.2 oder höher und erstellen Sie Ihre Anwendung neu.

Nächste Schritte beim Umgang mit der „libwebp“-Sicherheitslücke

  1. Testen Sie Ihre Projekte mit Snyk und nutzen Sie dazu die in diesem Artikel beschriebenen Methoden. Erstellen Sie zunächst ein kostenloses Snyk-Konto. Importieren und scannen Sie anschließend mit dem Import-Assistenten alle möglicherweise betroffenen Projekte.

  2. Ermitteln Sie mithilfe des Priority Score oder von Insights (für Kunden mit dem Snyk Enterprise-Tarif) die Korrekturen mit höchster Priorität für die libwebp-Sicherheitslücke.

  3. Wenden Sie die Korrekturen an, indem Sie die libwebp-Bibliothek in Ihren Open-Source-Projektabhängigkeiten oder Container-Images auf Version 1.3.2 oder höher aktualisieren.

  4. Beobachten Sie die weitere Entwicklung, folgen Sie uns auf X (@snyksec) und besuchen Sie den Snyk Blog, um aktuelle Entwicklungen zu verfolgen. Die Sicherheitsteams von Snyk aktualisieren unsere Ressourcen regelmäßig mit den neuesten Informationen.