Zusammenfassung
Unser Sicherheitsforschungsteam hat entdeckt, dass CVE-2022-31631, eine kritische SQL-Injection-Schwachstelle mit einem CVSS 3-Wert von 9.1PHP 7-Installationen (unter Windows und Linux) betrifft, obwohl in den offiziellen Hinweisen nur PHP 8+ Versionen erwähnt werden. Diese hochgradig gefährliche Schwachstelle ermöglicht es Angreifern, die SQL-Sanitization im PDO-SQLite-Treiber zu umgehen, was zu einer Gefährdung der Datenbank führen kann. Besonders besorgniserregend ist der Zeitpunkt dieser Enthüllung, die kurz nach dem Auslaufen von PHP 7 erfolgte, so dass viele Unternehmen anfällig sind und kein offizieller Patch zur Verfügung steht.
Die Anfälligkeit erklärt
CVE-2022-31631 ist eine schwerwiegende Sicherheitslücke, die die PDO::quote()-Funktion bei der Verwendung mit SQLite-Datenbanken betrifft. Wenn dieser Funktion eine zu lange Zeichenkette übergeben wird, kommt es zu einem Integer-Überlauf, der den Treiber veranlasst, die Daten falsch zu bereinigen. Diese unsachgemäße Bereinigung kann zu folgenden Problemen führen:
- SQL-Injection-Schwachstellen
- Unbefugter Zugriff auf Datenbankinhalte
- Datenmanipulation oder -vernichtung
- Potenzial für eine vollständige Systemkompromittierung
- Bedingungen für die Dienstverweigerung
Die Kritikalität dieser Schwachstelle spiegelt sich in der CVSS-Wertung von 9.1 wider, die sie als "kritisches" Risiko einstuft, das sofortige Aufmerksamkeit erfordert.
PHP 7: Verwundbar und übersehen
Im offiziellen Advisory zu CVE-2022-31631 werden nur diese betroffenen Versionen erwähnt:
- PHP 8.0x vor 8.0.27
- PHP 8.1x vor 8.1.15
- PHP 8.2x vor 8.2.2
Unsere umfassenden Sicherheitstests haben jedoch bestätigt, dass auch Installationen der PHP 7-Serie für diesen SQL-Injection-Fehler anfällig sind. Dies schafft eine erhebliche Sicherheitslücke für Unternehmen, die noch PHP 7 einsetzen, da:
- PHP 7 erreichte den EOL-Status kurz bevor diese Sicherheitslücke bekannt wurde.
- Es sind keine offiziellen Patches von den PHP-Maintainern verfügbar.
- Die Sicherheitslücke betrifft eine häufig genutzte Datenbankfunktionalität
Technische Details und Angriffsszenario
Die Sicherheitslücke tritt im Quoting-Mechanismus des PDO-SQLite-Treibers auf. Wenn eine Anwendung die Funktion PDO::quote() verwendet, um Benutzereingaben zu bereinigen, bevor sie in eine SQL-Abfrage aufgenommen werden (eine gängige Sicherheitspraxis), kann die Funktion extrem lange Zeichenketten nicht richtig verarbeiten.
Hier ist eine vereinfachte Erklärung, wie ein Angriff ablaufen könnte:
- Ein Angreifer identifiziert eine Webanwendung, die PHP mit PDO SQLite
- Sie geben eine ungewöhnlich lange Zeichenfolge in ein anfälliges Eingabefeld ein
- Die Anwendung übergibt diese Zeichenfolge zur Bereinigung an PDO::quote()
- Aufgrund eines Integer-Überlaufs kann die Quoting-Funktion die Zeichenkette nicht richtig entschlüsseln
- Die fehlerhafte Eingabe führt zu einer SQL-Injection, die es dem Angreifer ermöglicht, beliebige SQL-Befehle auszuführen.
Eine anfällige Anwendung könnte zum Beispiel ähnlichen Code enthalten:
// Angreifbar Code Muster $userInput = $_POST['user_input']; // Angreifer-gesteuert Eingabe $db = neu PDO('sqlite:database.sqlite'); $safeInput = $db->quote($userInput); // Angreifbar wenn Eingabe ist extrem lang ist $Abfrage = "SELECT * FROM benutzer WHERE name = $safeInput";
Wenn in diesem Szenario $userInput eine bestimmte Länge überschreitet, schlägt die Bereinigung fehl und ermöglicht möglicherweise eine SQL-Injektion, obwohl der Entwickler versucht hat, angemessene Sicherheitspraktiken anzuwenden.
Risikoverstärkende Faktoren
Mehrere Faktoren machen diese Schwachstelle besonders besorgniserregend:
- Hoher CVSS-Score (9.1): Weist auf ein kritisches Sicherheitsproblem mit schwerwiegenden potenziellen Auswirkungen hin
- Zeitpunkt der Offenlegung: Die Veröffentlichung erfolgte kurz nach dem Auslaufen von PHP 7, so dass es für die Nutzer keinen offiziellen Weg zur Behebung gab.
- Gemeinsame Funktionalitäten: PDO wird häufig für Datenbankoperationen in PHP-Anwendungen verwendet
- Falsches Gefühl der Sicherheit: Entwickler glauben, dass sie sich durch die Verwendung von PDO::quote() vor SQL-Injection schützen
- Eingeschränktes Bewußtsein: In den meisten Sicherheitsbulletins wird die Schwachstelle von PHP 7 nicht erwähnt.
Unsere Lösung: Endloser Lifecycle-Support für PHP 7
In Anbetracht der kritischen Natur dieser Sicherheitslücke und ihrer Auswirkungen auf PHP 7-Benutzer, bietet unser Unternehmen:
- Gepatchte PHP 7 Pakete: Wir haben PHP 7-Pakete entwickelt und gründlich getestet, die die Sicherheitslücke CVE-2022-31631 beheben
- Plattformübergreifende Unterstützung: Unsere gepatchten Pakete sind sowohl für Windows- als auch für Linux-Umgebungen verfügbar.
- Umfassende Sicherheitsabdeckung: Unser erweiterter Support deckt nicht nur diese Sicherheitslücke ab, sondern alle bekannten Sicherheitsprobleme, die PHP 7 betreffen.
Empfohlene Abhilfestrategien
Wenn Ihr Unternehmen PHP 7 mit PDO SQLite verwendet, empfehlen wir die folgenden Sofortmaßnahmen:
- Unsere Sicherheits-Patches anwenden: Installieren Sie unsere gepatchten PHP 7-Pakete zum Schutz vor dieser Sicherheitslücke
- Parametrisierte Abfragen verwenden: Wechseln Sie zu vorbereiteten PDO-Anweisungen, anstatt sich auf die Funktion quote() zu verlassen:
$stmt = $db->prepare("SELECT * FROM benutzer WHERE name = ?");$stmt->execute([$userInput]);
- Eingabe-Längen-Prüfung implementieren: Beschränken Sie die Länge von Benutzereingaben auf vernünftige Werte
- Datenbankberechtigungen berücksichtigen: Wenden Sie das Prinzip der geringsten Berechtigung auf Datenbankbenutzer an.
Schlussfolgerung
CVE-2022-31631 stellt einen perfekten Sturm von Sicherheitsrisikofaktoren dar: eine kritische SQL-Injektionsschwachstelle, die kurz nach dem Erreichen des EOL-Status von PHP 7 bekannt wurde und einen gängigen Sicherheitsmechanismus betrifft, auf den sich Entwickler verlassen. Unternehmen, die PHP 7 einsetzen, stehen vor der schwierigen Wahl zwischen einer sofortigen Migration (mit potenziellen Kompatibilitätsproblemen) oder dem weiteren Betrieb anfälliger Systeme.
Unser erweiterter PHP 7-Support bietet eine dritte Option: Sie können Ihre PHP 7-Anwendungen weiterhin bedenkenlos einsetzen, denn Sie wissen, dass kritische Sicherheitslücken wie CVE-2022-31631 durch unsere Sicherheitspatches geschlossen wurden.

