PHP Longjmp Bug: Inside CVE-2026-109618 und CVE-2026-109619
Zwei kritische PHP-Fehler mit der Bewertung 9.2 ermöglichen eine nicht authentifizierte Ausführung von Remote-Code auf jedem Webserver, auf dem der Interpreter ausgeführt wird. Hier ist, wie die longjmp-gedächtniskorruption tatsächlich funktioniert, wer ausgesetzt ist und was jetzt zu tun ist.

Warum diese Schwachstelle anders ist
PHP-Schwachstellen sind Routine. Ein Deserialisierungsfehler in einem Framework, ein Pfad-Traversal in einem Plugin, eine SQL-Injection in einem CMS & mdash; das ist das Brot und die Butter des Schwachstellenmanagements, und sie sind fast immer auf eine bestimmte Anwendung, ein bestimmtes Modul oder eine bestimmte Konfiguration ausgerichtet. CVE-2026-109618 und CVE-2026-109619 sind nicht das. Sie leben im Interpreter selbst, in der Maschinerie, die PHP verwendet, um fatale Fehler und Out-of-Memory-Bedingungen zu behandeln. Das bedeutet, dass die Belichtung nicht durch die Anwendung definiert wird, die Sie ausführen, sondern durch die Tatsache, dass Sie PHP überhaupt ausführen.
Diese Unterscheidung ist enorm wichtig für Ihre Reaktion. Wenn ein CMS-Plugin anfällig ist, patchen Sie das Plugin oder deaktivieren es. Wenn die Laufzeit anfällig ist, erbt jede Anwendung auf dieser Laufzeit den Fehler: das Kundenportal, das interne Wiki, die vergessene Marketing-Mikroseite von 2019, die Anbieter-Appliance, die leise einen PHP-Stack bündelt, den niemand dokumentiert hat. Der Leitfaden des NCSC spiegelt genau dies wider: Identifizieren Sie PHP-Installationen allgemein, nicht nur veraltete.
Hinweis: Die NCSC gibt ausdrücklich an, dass Organisationen, die eine any Version von PHP verwenden, betroffen sind und auf die neueste feste Version aktualisieren sollten. Gehen Sie nicht davon aus, dass eine aktuelle Version sicher ist, bis die Vendor Advisory bestätigt, dass der Fix vorhanden ist.
Anatomie der beiden Fehler
Beide Sicherheitslücken gehen auf longjmp() zurück, der C-Bibliotheksmechanismus, den PHP verwendet, um den Stack zu entwickeln, wenn ein fataler Fehler oder ein Out-of-Memory-Zustand auftritt. Im Normalbetrieb handelt es sich um eine kontrollierte Rettungsaktion: Etwas geht schief, der Dolmetscher springt zu einem bekannten sicheren Punkt zurück und die Anfrage wird sauber abgerissen. Die Fehler entstehen, wenn das Rettungspaket genau zum falschen Zeitpunkt erfolgt und der interne Zustand inkonsequent bleibt.
CVE-2026-109618: unterbrochene Initialisierung
Der erste Fehler ist ein Control-Flow-Management-Problem. Wenn eine Out-of-Memory-Bedingung longjmp() auslöst, während interne Anforderungsdaten nur teilweise initialisiert werden, kann der Bereinigungspfad ungültigen, uninitialisierten Speicher so behandeln, als wäre er gültig. Das Ergebnis ist Gedächtniskorruption. Da der Angreifer den Trigger &mdash steuert; eine OOM-Bedingung ist etwas, das Sie mit einer handgefertigten Anfrage &mdash provozieren können; Unit 42 beschreibt den Exploit als zuverlässig, was ein Wort ist, das Verteidiger ernst nehmen sollten. Zuverlässige RCE bedeutet, dass die Barriere zwischen einem neugierigen Forscher und einem funktionierenden Exploit gering ist.
CVE-2026-109619: Zustand, der sein Gedächtnis überlebt
Der zweite Fehler ist subtiler und in gewisser Weise heimtückischer. Hier kann der anforderungseigene interne Zustand überleben, nachdem die Speichersicherung freigegeben wurde. PHP workers — die Prozesse, die Anfragen bearbeiten, insbesondere unter persistenten Modellen wie PHP-FPM — nehmen dann die nächste Anfrage auf und verwenden möglicherweise diesen veralteten Zustand, bevor die normale Initialisierung sie zurücksetzt. In der Tat kann eine Anfrage eine vergiftete Erbschaft für die nächste hinterlassen, die vom gleichen Arbeiter bearbeitet wird. Diese befreiten Regionen können später gelesen oder verzweigt werden, und mit ausreichender Kontrolle über das Heap-Layout wird dies zu einem Pfad zur willkürlichen Codeausführung.
| CVE | Exploit path | |||
|---|---|---|---|---|
| CVE-2026-109618 | OOM-Handling über longjmp() lässt Anfragespeicher uninitialisiert | Von Angreifern ausgelöstes OOM führt zu Korruption und RCE | ||
| CVE-2026-109619 | Fatal Error Handling lässt Globales auf befreiten Speicher zeigen | Stale state wiederverwendet durch eine spätere Anfrage auf dem gleichen worker |
Beide sind nicht authentifiziert. Es gibt kein Login zu umgehen, weil es nichts zu loggen in — die Angriffsfläche ist die Anfrage selbst, bevor Ihr Anwendungscode hat ein Wort in der Angelegenheit. Das ist es, was die Punktzahl auf 9,2 erhöht und die Sprache des NCSC so direkt macht.
Die Skala der Exposition
Die Cortex Xpanse-Telemetrie von Palo Alto Networks identifizierte über 22,6 Millionen exponierte Instanzen, die potenziell anfällig für diese CVEs sind. Diese Zahl zählt internetorientierte Dienste, bei denen der Fingerabdruck auf eine anfällige PHP-Laufzeit hindeutet, und es ist mit ziemlicher Sicherheit eine Unterbewertung, wenn Sie Appliances, eingebettete Verwaltungsschnittstellen und interne Systeme berücksichtigen, die von einer kompromittierten Workstation aus erreichbar sind. Unit 42 berichtet auch, dass mindestens eine europäische Regierung ihre Website als Vorsichtsmaßnahme offline genommen hat; eine Entscheidung, die etwas darüber aussagt, wie ernst der Proof of Concept von Leuten genommen wurde, die ihn gesehen hatten. Für einen Verteidiger ist die unbequeme Frage nicht "laufen wir PHP?", sondern "wo wissen wir nicht, dass wir PHP ausführen?" Content-Management-Systeme, Ticketing-Plattformen, CRM-Front-Ends, Monitoring-Dashboards, Netzwerk-Appliances mit Web-Benutzeroberflächen, Build-Server und Container-Basis-Images werden alle routinemäßig mit einem PHP-Interpreter darunter ausgeliefert. Das NCSC-NL-Inventar von Softwareprodukten mit einer PHP-Abhängigkeit ist ein nützlicher Ausgangspunkt, gerade weil es diese Exposition zweiter Ordnung erfasst.
Achtung: Ein häufiger Fehler in den ersten 48 Stunden einer Sicherheitsanfälligkeit wie dieser besteht darin, nur nach der von Paketmanagern gemeldeten Versionszeichenfolge zu suchen. Appliances und gebündelte Stacks versenden häufig gepatchte oder angepasste PHP-Builds, die nicht für ihren wahren Patch-Level werben. Behandeln Sie die Versionserkennung als Hinweis, nicht als Urteil.
Was tun, in der Prioritätsreihenfolge
Die prioritären Aktionen des NCSC sind es wert, genau verfolgt zu werden, weil sie für einen Vorfall dieser Form sinnvoll sequenziert werden.
- Entdecke PHP überall, zuerst mit dem Internet. Filtern Sie nicht nach Version. Zählen Sie Interpreter-Installationen über Server, Container und Appliances auf und ordnen Sie diese dann nach externer Erreichbarkeit ein.
- Patch für die neueste feste PHP-Version. Das PHP-Projekt hat das Sicherheitsupdate veröffentlicht; wenden Sie es an und verfolgen Sie weiterhin zukünftige Releases. Wenn Sie sich in einem End-of-Life-Zweig befinden, wechseln Sie zu einer vollständig unterstützten Version anstelle von Backporting.
- Beobachten Sie Drittanbieter. Apps und Dienste, die PHP bündeln, benötigen eigene Updates. Monitor Vendor Advisories kontinuierlich, nicht einmal.
- Anwendung des PHP-Teams Verhärtung Führung zusätzlich zum Patch — Verteidigung in der Tiefe gegen den nächsten Interpreter-Fehler.
- Wenn Sie nicht sofort patchen können, wenden Sie die vom PHP-Team veröffentlichten temporären Minderungsmaßnahmen an. Wenn diese unpraktisch oder zu langsam sind, nehmen Sie das System offline.
- Wenn Sie ein System nicht aktualisieren oder deaktivieren können, bewerten Sie es auf Hinweise auf Kompromisse und auf von Angreifern installierte Backdoors before Sie upgraden. Das Patchen über einem Eindringling entfernt den Eindringling nicht.
Der letzte Punkt verdient besondere Aufmerksamkeit. Dies sind nicht authentifizierte RCE-Fehler mit öffentlichem Proof of Concept. Das Fenster zwischen Offenlegung und Ausnutzung wird in Stunden und nicht in Wochen gemessen, und ein kompromittierter PHP-Arbeiter ist ein ausgezeichneter Ort, um die Rechte des Webservers, seine Datenbankanmeldeinformationen und seine ausgehende Netzwerkposition zu verbergen. Wenn ein System für einen sinnvollen Zeitraum ausgesetzt und ungepatcht wurde, gehen Sie von einem Kompromiss aus, bis Sie etwas anderes zeigen können, und holen Sie einen NCSC-gesicherten Incident Response Provider ein, wenn Ihnen die interne Fähigkeit fehlt, dies forensisch zu tun.
Erkennung und Verifizierung
Aus der Perspektive des Pentestings besteht die praktische Herausforderung bei Fehlern auf Interpreterebene darin, dass sie nur wenige Fingerabdrücke in Anwendungsprotokollen hinterlassen. Die Anfrage, die eine OOM auslöst, sieht nicht wie ein Angriff auf Ihre WAF aus; es sieht aus wie ein großer Upload, ein pathologischer Regex, ein tief verschachtelter JSON-Körper oder eine Anfrage, die einfach zu viel verlangt. Die Exploitation erfolgt unterhalb der Ebene, die Ihre Anwendungsprotokollierung sieht.
Das bedeutet, dass sich die Erkennung auf Infrastruktursignale stützen muss: unerwartete Arbeitsabstürze und Neustarts, anomaler Speicherdruck auf PHP-FPM-Pools, Core-Dumps, die dort erscheinen, wo sie nicht sollten, und ausgehende Verbindungen von Webservern zu unbekannten Zielen. Auf der Präventionsseite kann virtuelles Patchen durch Netzwerksicherheitskontrollen Time &mdash kaufen; Palo Alto's Advanced Threat Prevention Plus mit Frontier Virtual Patching hat diese CVEs seit dem 20. Oktober 2026 per Signatur abgedeckt. Der Dolmetscher benötigt immer noch die richtige Lösung.
Wenn Sie Ihre eigene Belichtung validieren möchten, bevor ein Angreifer dies tut, besteht der ehrliche Ansatz darin, die Laufzeit direkt zu testen: Bestätigen Sie den Patch-Level jedes gefundenen Dolmetschers, üben Sie die OOM- und Fatal-Error-Pfade in einer kontrollierten Umgebung aus und vergewissern Sie sich, dass der Arbeiterzustand zwischen den Anfragen nicht ausläuft. Das ist genau die Art von Runtime-Level-Bewertung, die das Scannen auf Anwendungsebene tendenziell verpasst, und hier verdient ein fokussierter Penetrationstest eine Schwachstelle dieser Klasse.
Die größere Lektion
Was CVE-2026-109618 und CVE-2026-109619 bemerkenswert macht, ist nicht, dass PHP einen Speichersicherheitsfehler hatte; jede große C-Codebasis tut es schließlich. Es ist die Erinnerung, dass der Dolmetscher Teil Ihrer Angriffsfläche ist, und es ist der Teil, den die meisten Organisationen am wenigsten sorgfältig inventarisieren. Wir neigen dazu, unsere Anwendungen genau zu kennen und unsere Laufzeiten kaum. Wenn ein Fehler in der Laufzeit landet, wird diese Asymmetrie zur Schwachstelle.
Die Organisationen, die dies sauber durchstehen, werden diejenigen sein, die bereits eine zuverlässige Antwort auf "Wo läuft PHP und in welcher Version?" hatten und die die Antwort als lebendes Inventar behandelten, anstatt eine einmalige Tabelle. Wenn Sie diese Antwort am 21. Oktober nicht hatten, ist es das Wertvollste, was Sie diese Woche tun können, vor dem nächsten Dolmetscherfehler, der unweigerlich folgen wird.