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
- 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.
- 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
- 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.
- Multi-User-Umgebungen:
- In einer Umgebung mit gemeinsam genutzten Ressourcen (z. B. PHP-FPM-Pools) könnte ein Angreifer Informationen über andere Benutzer erhalten.
- Datenlecks in Applikationen:
- Wenn Datenbankverbindungen nicht ausreichend geschützt sind, könnten Anwendungen versehentlich vertrauliche Informationen preisgeben.
Ein Angreifer kann:
- Einen manipulierten MySQL-Server erstellen.
- Ein PHP-Skript aufrufen, das sich mit diesem Server verbindet.
- 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.
Professionelle Hilfe erwünscht?
Sentiguard ist spezialisiert auf Notfallhilfe nach Cyberattacken, IT Sicherheitsbeauftragte und IT Sicherheitskonzepte nach BSI Standard. Haben Sie Fragen und wünschen Sie unverbindliche Beratung, dann melden Sie sich gerne bei uns: