
#CVE-2022-31630 - Proof-of-Concept-Exploit für PHP 7.4.33
Warnung: Dieser Code wurde ausschließlich zu Bildungszwecken und für Tests in einer isolierten Laborumgebung erstellt. Die Verwendung auf anderen Systemen ohne Genehmigung ist illegal und unverantwortlich.
📋 Beschreibung
CVE-2022-31630 ist eine Schwachstelle durch Out-of-Bounds-Read (OOB-Read) in der PHP-GD-Erweiterung, insbesondere in der Funktion imageloadfont(). Diese Schwachstelle ermöglicht es einem Angreifer, der die von der PHP-Anwendung geladene Fontdatei kontrollieren kann, Daten außerhalb der Grenzen des zugewiesenen Puffers zu lesen, was Folgendes verursachen kann:
· Denial of Service (Absturz) · Information Disclosure (Offenlegung sensibler Speicherinhalte)
Diese Schwachstelle betrifft die folgenden PHP-Versionen:
· 7.4.x vor 7.4.33 · 8.0.x vor 8.0.25 · 8.1.x vor 8.1.12
PHP 7.4.33 ist die erste Version, die einen Patch für diese CVE erhalten hat. Daher zeigt der Exploit-Code in diesem Repository den Verhaltensunterschied zwischen der verwundbaren Version (≤ 7.4.32) und der bereits gepatchten Version (≥ 7.4.33).
🔬 Technische Details
Die Schwachstelle liegt im Fehlen einer Eingabevalidierung beim Lesen des Headers der GD-Fontdatei (.gdf). Die Fontdatei besitzt einen Header mit folgender Struktur:
· 2 Byte: Magic Number (0x01BE) · 2 Byte: Anzahl der Zeichen (nchars) · 2 Byte: Breite jedes Zeichens in Pixel (width) · 2 Byte: Höhe jedes Zeichens (height) · 2 Byte: Anzahl der Bytes pro Zeichen (char_offset)
Wenn der Wert von width sehr groß gesetzt wird (z. B. 65535), weist PHP einen zu kleinen Puffer zum Speichern der Font-Bitmapdaten zu. Wenn die Funktion imagechar() anschließend ein Zeichen aus dieser Schriftart liest, greift sie auf Speicher außerhalb der Puffergrenzen zu und verursacht einen OOB-Read.
🚀 Verwendung
📚 Referenzen
· CVE-2022-31630 bei NVD · Patch-Commit in php-src · PHP-Release-Ankündigungen
Erstellt zu Bildungszwecken für CVE