
PHP 8.1.0-dev User-Agentt Backdoor Remote Code Execution (RCE)
User-Agentt-Backdoor Remote Code Execution (RCE)Schweregrad: Kritisch (CVSS-Äquivalent: 10.0)
Schwachstellentyp: Supply-Chain-Backdoor / Remote Code Execution (RCE)
Betroffene Software: PHP 8.1.0-dev (nur Entwicklungs-Build)
Angriffsvektor: Remote (ohne Authentifizierung)
Erforderliche Authentifizierung: Nein
Benutzerinteraktion: Keine
Auswirkung: Vollständige Kompromittierung des Systems
Die PHP 8.1.0-dev User-Agentt-Backdoor ist eine der berüchtigtsten Supply-Chain-Kompromittierungen in der Geschichte der Open-Source-Software. Im Gegensatz zu herkömmlichen Schwachstellen, die auf Programmierfehlern beruhen, entstand dieses Problem dadurch, dass absichtlich bösartiger Code in das offizielle PHP-Quellcode-Repository eingefügt wurde.
Die Backdoor trat in Entwicklungs-Snapshots von PHP 8.1.0-dev im März 2021 auf, nachdem Angreifer die PHP-Git-Infrastruktur erfolgreich kompromittiert hatten. Die bösartigen Commits gaben sich als vertrauenswürdige PHP-Maintainer aus und führten einen versteckten Mechanismus ein, der beliebigen PHP-Code ausführen konnte, sobald ein speziell präparierter HTTP-Header empfangen wurde.
Obwohl die Backdoor nur kurz existierte, bevor sie entdeckt und entfernt wurde, war jeder Server, der einen der kompromittierten Entwicklungs-Builds einsetzte, sofort anfällig für Remote Code Execution (RCE) ohne Authentifizierung.
Dieser Vorfall veränderte den PHP-Entwicklungsworkflow grundlegend und führte letztlich dazu, dass das PHP-Quellcode-Repository von seiner selbst gehosteten Git-Infrastruktur weg migriert wurde. :contentReference[oaicite:0]{index=0}
Die meisten Remote-Code-Execution-Schwachstellen entstehen durch:
Diese Schwachstelle war anders.
Es war kein Programmierfehler.
Es war eine absichtlich platzierte Backdoor, die in legitimen PHP-Quellcode versteckt war.
Statt eine bestehende Schwachstelle auszunutzen, modifizierten die Angreifer PHP selbst, um beliebigen PHP-Code auszuführen, der von jedem mit einer HTTP-Anfrage geliefert wurde.
Das macht diesen Vorfall zu einem der bekanntesten Beispiele für einen Software-Supply-Chain-Angriff.
Am 28. März 2021 tauchten zwei verdächtige Commits im Git-Repository von PHP auf.
Beide Commits schienen von bekannten PHP-Maintainern zu stammen.
Zunächst sahen sie harmlos aus.
Die Commit-Nachrichten ähnelten gewöhnlichen Tippfehler-Korrekturen.
Forscher bemerkten jedoch schnell verdächtigen Code, der dem PHP-Interpreter hinzugefügt worden war.
Der eingefügte Code durchsuchte eingehende HTTP-Anfragen nach einem benutzerdefinierten Header:
User-Agentt
Beachten Sie das zusätzliche „t“.
Dieser subtile Unterschied in der Schreibweise half dabei, die Backdoor bei einer oberflächlichen Überprüfung zu verbergen.
Wenn der Header mit der Auslöser-Zeichenkette begann:
zerodium
führte PHP sofort alles Folgende aus, und zwar mit:
zend_eval_string()
Dies ermöglichte es praktisch jedem, beliebigen PHP-Code remote auszuführen.
Die bösartigen Commits wurden innerhalb weniger Stunden nach der Entdeckung entfernt. Spätere Ermittlungen deuteten darauf hin, dass die Angreifer die PHP-Git-Infrastruktur kompromittiert hatten, anstatt die Signaturschlüssel der Maintainer auf legitime Weise zu erlangen. :contentReference[oaicite:1]{index=1}
Der eingefügte Code führte im Wesentlichen die folgende Logik aus:
Incoming HTTP Request
│
▼
Read User-Agentt Header
│
▼
Does header start with "zerodium"?
│
Yes ▼
Execute remaining text as PHP
│
▼
Attacker gains Remote Code Execution
Statt den Header als harmlose Metadaten zu behandeln, wertete PHP ihn direkt als ausführbaren PHP-Code aus.
Normalerweise enthält eine HTTP-Anfrage Header wie:
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla Firefox
Die kompromittierte PHP-Version verarbeitete zusätzlich:
User-Agentt:
Wenn ihr Wert mit Folgendem begann:
zerodium
rief PHP auf:
zend_eval_string()
Der verbleibende Inhalt wurde zu ausführbarem PHP-Code.
Konzeptionell:
User-Agentt:
zerodium
│
▼
zend_eval_string(payload)
│
▼
Remote Code Execution
Attacker
│
│ HTTP Request
▼
GET /
User-Agentt: zerodiumsystem("id");
│
▼
PHP 8.1.0-dev
│
▼
Backdoor Triggered
│
▼
system("id")
│
▼
Command Executed
│
▼
Output Returned
Keine Authentifizierung.
Keine Sitzung.
Keine Anmeldedaten.
Eine einzige HTTP-Anfrage genügte.
Die Angreifer wählten absichtlich
User-Agentt
anstelle von
User-Agent
weil:
Dieser winzige Tippfehler verbarg eine vollständige Remote-Code-Execution-Backdoor.
Ausschließlich:
PHP 8.1.0-dev
Konkret die kompromittierten Entwicklungs-Snapshots, die während des Vorfalls im März 2021 veröffentlicht wurden.
Stabile Versionen wie:
waren niemals betroffen.
Der Angreifer benötigte lediglich:
Keine Authentifizierung.
Kein Brute-Force.
Kein Login.
Kein vorheriger Zugriff.
Eine erfolgreiche Ausnutzung ermöglicht es Angreifern:
In der Praxis führt diese Schwachstelle zu einer vollständigen Serverkompromittierung.
Administratoren sollten Systeme, die Folgendes preisgeben, umgehend untersuchen:
PHP/8.1.0-dev
in Antwort-Headern wie:
X-Powered-By:
PHP/8.1.0-dev
HTTP-Logs sollten ebenfalls auf verdächtige Anfragen untersucht werden, die Folgendes enthalten:
User-Agentt
oder
zerodium
Viele Intrusion-Detection-Systeme und IPS-Produkte enthalten inzwischen Signaturen, die speziell auf dieses Angriffsmuster zugeschnitten sind. :contentReference[oaicite:2]{index=2}
Mögliche Indikatoren sind:
User-Agentt enthaltenzerodium beginnen| Eigenschaft | Wert |
|---|---|
| Authentifizierung | Keine |
| Benutzerinteraktion | Keine |
| Komplexität | Sehr gering |
| Erforderliche Privilegien |
Dies gilt als eine der am einfachsten auszunutzenden Remote-Code-Execution-Schwachstellen, da der Angreifer lediglich eine präparierte HTTP-Anfrage sendet.
Setzen Sie Entwicklungs-Snapshots von PHP niemals auf Produktionssystemen ein.
Wenn festgestellt wird, dass ein Server den kompromittierten Build ausführt:
Dieser Vorfall verdeutlichte mehrere wichtige Lehren:
Die Kompromittierung beschleunigte Änderungen an der PHP-Entwicklungsinfrastruktur und unterstrich die wachsende Bedeutung der Sicherheit von Software-Lieferketten in der gesamten Branche. :contentReference[oaicite:3]{index=3}
Die PHP 8.1.0-dev User-Agentt-Backdoor bleibt eines der bedeutendsten Beispiele für einen Software-Supply-Chain-Angriff auf ein großes Open-Source-Projekt. Statt einen Programmierfehler auszunutzen, fügten die Angreifer eine versteckte Backdoor direkt in den Quellcode der Sprache ein, die eine Remote-Ausführung beliebigen PHP-Codes ohne Authentifizierung über einen speziell präparierten User-Agentt-HTTP-Header ermöglichte. Obwohl die kompromittierten Entwicklungs-Snapshots schnell entfernt wurden und keine stabilen PHP-Versionen betroffen waren, unterstrich der Vorfall die entscheidende Bedeutung der Absicherung von Software-Entwicklungsinfrastruktur, der Überprüfung der Codeherkunft und der Vermeidung des Einsatzes von Entwicklungs-Builds in Produktionsumgebungen. Heute wird die Schwachstelle weithin als wegweisender Fall in der Lieferkettensicherheit untersucht und erinnert daran, dass die Integrität des Software-Build-Prozesses ebenso wichtig ist wie die Sicherheit des Codes selbst.
| Technik | Beschreibung |
|---|
| T1195 | Supply Chain Compromise |
| T1059 | Command and Scripting Interpreter |
| T1505 | Server Software Component |
| T1105 | Ingress Tool Transfer |
| T1071 | Application Layer Protocol |
| T1106 | Native API |
| T1055 | Process Injection (possible post exploitation) |
| T1027 | Obfuscated Files or Information |
| Keine |
| Remote | Ja |