PHP: CVE-2024-8929 – Heap-Datenleck durch Buffer Over-Read in Mysqlnd

Table of Contents

Am 26. November 2024 wurde die Schwachstelle CVE-2024-8929 veröffentlicht, die sich auf das mysqlnd (MySQL Native Driver) in PHP bezieht. Die Schwachstelle ermöglicht es Angreifern, Speicherinhalte (Heap-Daten) durch eine fehlerhafte Verarbeitung von MySQL-Paketen zu lesen. Die Sicherheitslücke wird als hoch (Severity: High) eingestuft. Die Versionen < 8.1.31, < 8.2.26 und <8.3.14 sind betroffen.

Die Schwachstelle tritt in der Funktion php_mysqlnd_rset_field_read auf, die MySQL-Datenpakete verarbeitet. Bei fehlerhaften oder manipulierten Paketen kann der MySQL-Native-Treiber (mysqlnd):

  • Daten aus dem Speicher (Heap) auslesen, die nicht zur aktuellen Anfrage gehören.
  • Inhalte des vorherigen MySQL-Server-Antwortpakets preisgeben.

Ursache

  1. Heap Buffer Over-Read:
    • Ein manipuliertes MySQL-Paket führt dazu, dass der Treiber Daten über die erwartete Paketlänge hinausliest.
    • Dies geschieht durch das Umgehen der Sicherheitsprüfung BAIL_IF_NO_MORE_DATA, da der Paketzeiger (p) nicht korrekt aktualisiert wird.
  2. PHP-FPM Speicherwiederverwendung:
    • Da PHP-FPM zwischen HTTP-Anfragen läuft und Speicherressourcen recycelt, kann ein Angreifer Inhalte des vorherigen Speicherzustands extrahieren.

Mögliche Angriffe und Szenarien

  1. Hosting-Umgebungen:
    • Ein Hosting-Anbieter bietet Dienste wie verwaltete Datenbanken oder Tools wie phpMyAdmin.
    • Ein böswilliger Benutzer richtet einen manipulierten MySQL-Server ein.
    • Andere Benutzer, die sich mit diesem Server verbinden, können sensible Daten aus vorherigen Anfragen preisgeben.
  2. Multi-User-Umgebungen:
    • In einer Umgebung mit gemeinsam genutzten Ressourcen (z. B. PHP-FPM-Pools) könnte ein Angreifer Informationen über andere Benutzer erhalten.
  3. Datenlecks in Applikationen:
    • Wenn Datenbankverbindungen nicht ausreichend geschützt sind, könnten Anwendungen versehentlich vertrauliche Informationen preisgeben.

Ein Angreifer kann:

  1. Einen manipulierten MySQL-Server erstellen.
  2. Ein PHP-Skript aufrufen, das sich mit diesem Server verbindet.
  3. Speziell manipulierte Pakete senden, um Speicherinhalte (z. B. Ergebnisse früherer SQL-Anfragen) zu extrahieren.

Empfohlene Maßnahmen

Konfiguration

  • Nutzen Sie eine sichere PHP- und MySQL-Konfiguration, insbesondere in gemeinsam genutzten Hosting-Umgebungen.
  • Isolieren Sie PHP-FPM-Pools für unterschiedliche Benutzer oder Anwendungen, um Speicherlecks zu verhindern.

Netzwerkschutz

  • Filtern Sie eingehende MySQL-Verbindungen und erlauben Sie nur bekannte, vertrauenswürdige Datenbankserver.

Weitere Sicherheitsmaßnahmen

  • Überprüfen Sie die Konfiguration von PHP-Datenbanktreibern und deaktivieren Sie unnötige Funktionen.
  • Nutzen Sie TLS für die Kommunikation zwischen PHP und MySQL, um Manipulationen am Netzwerkverkehr zu verhindern.

Related Posts

Neue kritische Schwachstelle CVE-2024-52533 in GNOME GLib entdeckt

Am 11. November 2024 wurde eine schwerwiegende Schwachstelle in GNOME GLib bekannt gegeben (CVE-2024-52533). Die Schwachstelle betrifft die Datei gio/gsocks4aproxy.c in GNOME GLib vor Version 2.82.1 und ermöglicht einen Buffer Overflow durch einen Off-by-One-Fehler. Dieser Fehler resultiert aus einer unzureichenden Puffergröße (SOCKS4_CONN_MSG_LEN), die das abschließende Null-Byte nicht berücksichtigt.

Read More

CVE-2024-10979: kritische RCE Schwachstelle in PostgreSQL

Die schwerwiegende Sicherheitslücke CVE-2024-10979 wurde am 14.11.2024 von PostgreSQL bekanntgegeben. Die Lücke erlaubt es einem unprivilegierten Datenbankbenutzer, sensible Umgebungsvariablen (z.B. PATH) zu ändern. Dies kann zur Ausführung beliebigen Codes führen, selbst wenn der Angreifer keine Betriebssystembenutzerrechte auf dem Datenbankserver hat. Die Sicherheitslücke betrifft die Kontrolle von Umgebungsvariablen im PL/Perl-Modul von PostgreSQL, das nicht korrekt gesichert ist. Das Problem kann durch Änderungen an Umgebungsvariablen wie PATH ausgenutzt werden, was es Angreifern ermöglicht, schadhafte Programme auszuführen.

Read More

Authentifizierungs Bypass Sicherheitslücke in Apache Tomcat: CVE-2024-52316

Am 18. November 2024 wurde eine kritische Schwachstelle in Apache Tomcat bekannt (CVE-2024-52316), die eine Umgehung der Authentifizierung ermöglicht. Die Schwachstelle betrifft Benutzer, die eine benutzerdefinierte Jakarta-Authentication-Komponente (ehemals JASPIC) verwenden. Wenn diese Komponente während des Authentifizierungsprozesses eine Ausnahme auslöst, ohne explizit einen HTTP-Fehlerstatus zu setzen, kann die Authentifizierung fälschlicherweise als erfolgreich angesehen werden.

Read More