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

CVE-2024-10220: Kritische Sicherheitslücke in Kubernetes durch gitRepo-Volume

Am 20. November 2024 wurde CVE-2024-10220 öffentlich bekanntgegeben, eine Sicherheitslücke in Kubernetes, die als kritisch eingestuft wurde. Sie betrifft das gitRepo-Volume, ein veraltetes Feature, das es Angreifern ermöglichen könnte, beliebige Befehle außerhalb der Container-Grenzen auszuführen. Im Folgenden eine detaillierte Analyse dieser Schwachstelle, ihrer Auswirkungen und wie sie behoben werden kann.

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

Sicherheitsrisiko in Versa Director: Standardpasswort und PostgreSQL-Fehlkonfiguration

Eine kritische Sicherheitslücke CVE-2024-42450 wurde in der Standardkonfiguration der Virtualisierungsplattform Versa Director entdeckt. Dieses Problem betrifft die PostgreSQL-Datenbank, die für die Speicherung von Betriebs- und Konfigurationsdaten sowie für die High-Availability-Funktionalität des Systems genutzt wird. Die Schwachstelle kombiniert ein Standardpasswort, das in allen Instanzen von Versa Director verwendet wird, mit einer unsicheren Konfiguration, die PostgreSQL erlaubt, auf alle Netzwerkinterfaces zu lauschen.

Read More