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

Datenleck bei Experian: Sicherheitslücke ermöglicht Zugriff auf Kreditauskünfte

Lilith Wittmann hat erneut eine gravierende Sicherheitslücke bei einem Kreditportal aufgedeckt, wie Sie auf Linkedin berichtete. Über das von smava betriebene Portal „scorekompass“ konnte sie am vergangenen Wochenende uneingeschränkten Zugriff auf die Kreditscores und Negativmerkmale aller in Deutschland gespeicherten Personen erhalten.

Read More

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

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