Zum Inhalt springen
DSGVO-konform. Gehostet in der EU.
14 Tage kostenlos testen →
BSI-HinweisKomponenten-InventarAgenturen
Security 17 Min. Lesezeit 9. Nov. 2026

PHP2Shell-Lücke: Betroffene Websites per Inventar finden

Nach der BSI-Warnung zu PHP2Shell: So finden Agenturen alle PHP-Websites, ordnen sie nach Supportende, prüfen sie nach dem Neustart und belegen den Stand.

X

XICTRAQ®

XICTRAQ®

PHP2ShellKomponenten-InventarAgenturen
9,2 von 10
CVSS-Wert je PHP2Shell-Lücke, CVSS-Version 4.0 (BSI)
23,9 %
der vom HTTP Archive erfassten Hosts senden X-Powered-By (Web Almanac 2025)
31.12.2026
enden die Sicherheitsupdates für PHP 8.2 (PHP Group)
PHP2Shell: betroffene Websites per Inventar findenVom Gesamtbestand zur Reihenfolge, vom Neustart zum NachweisAlle WebsitesVerträge, DNS, Hosting-KontenPHP erkanntKopfzeilen, CMS, SitzungscookieVersion sichtbarNummer in X-Powered-BySupportende zuerstohne SicherheitsupdatesWebsitePHPVersionStatusportal.examplebehebende Version8.48.4.27sichtbarwww.examplekein X-Powered-By––verborgenblog.examplePaket der Distribution8.38.3.6Backport möglichshop.exampleZweig ohne Updates8.18.1.31sichtbarBeispieldaten · Patchstand je Website mit php -v prüfenNach Neustart geprüft: erreichbar, unverändertUptime · Screenshot-Vergleich · Notiz mit DatumSupportende laut PHP Group · Anlass: BSI-IT-Sicherheitshinweis zu PHP2Shell
Am 21. Oktober 2026 hat das PHP-Projekt zwei kritische Lücken in der PHP-Laufzeit geschlossen (PHP Group), die in der Berichterstattung den Namen PHP2Shell tragen. Das BSI stuft die Lage in seinem IT-Sicherheitshinweis mit Kritikalität 3 / Orange ein (BSI). Für eine Agentur oder einen Betreiber mehrerer Websites beginnt die Arbeit danach nicht beim Patch, sondern bei einer schlichten Frage: Welche Websites laufen auf PHP, auf welchem Zweig, bei welchem Hoster, und wer spielt das Update ein? Dieser Beitrag beschreibt einen Ablauf, der nach jeder kritischen Lücke im Web-Stack trägt: Inventar, Vorrang nach Supportende, Patch, Neustart, Kontrolle und Nachweis. Er zeigt auch, wo der Blick von außen endet.

Was das BSI zu PHP2Shell meldet

Der BSI-IT-Sicherheitshinweis „PHP: Kritische Schwachstellen bedrohen Webanwendungen weltweit“ trägt die Nummer BITS-H 2026-297981-1232 und liegt in Version 1.2 vom 22. Oktober 2026 vor (BSI). Er betrifft zwei Schwachstellen, CVE-2026-109618 und CVE-2026-109619, die nach dem Bewertungssystem CVSS in Version 4.0 jeweils mit 9,2 von 10 eingestuft sind (BSI). Betroffen sind nach den dort genannten Informationen alle bekannten PHP-Versionen, zurückgehend bis mindestens PHP 5 (BSI). Der Name PHP2Shell stammt aus der Berichterstattung und soll die Ähnlichkeit mit der früheren Lücke Log4Shell zeigen (BSI).

Behoben sind die Lücken in den Versionen 8.5.12, 8.4.27, 8.3.36 und 8.2.35 (PHP Group). Für die Zweige 8.1 und älter liefert das PHP-Projekt keine Updates mehr (PHP Group); das PHP Security Team hat für die EoL-Versionen 7.4, 8.0 und 8.1 lediglich Backport-Patches für den Quellcode bereitgestellt (BSI). Für die Inventur ist ein Satz aus dem Hinweis besonders wichtig: Die Schwachstellen betreffen die PHP-Laufzeitumgebung selbst und keine konkreten Anwendungen (BSI). Ein Update von WordPress, Shopware oder TYPO3 schließt sie also nicht, die Laufzeit darunter muss ebenfalls aktualisiert werden.

Einordnung ohne Alarmton

Die Stufe Orange bedeutet im Schema des BSI, dass Maßnahmen unverzüglich ergriffen werden müssen (BSI). Das ist eine klare Ansage, aber kein Grund für Hektik ohne Plan. Wer zuerst eine vollständige Liste hat, patcht in sinnvoller Reihenfolge und kann hinterher zeigen, was wann geschehen ist.

Warum PHP2Shell zuerst eine Inventurfrage ist

Bei einer Lücke in einem Plugin genügt oft ein Blick in die Plugin-Liste. Bei einer Lücke in der Laufzeit ist die Frage breiter: Jede Website, deren Seiten von PHP ausgeliefert werden, ist ein Kandidat, unabhängig vom CMS. Die gemeinsame Erklärung von EU-Kommission, ENISA, CERT-EU, Europol und dem Netz der nationalen CSIRTs formuliert den ersten Schritt entsprechend: Organisationen sollen ihre PHP-basierten Anwendungen identifizieren, sich mit Hostern und Dienstleistern abstimmen und die Updates einspielen (ENISA). Systeme, die aus dem Internet erreichbar sind, sollen dabei Vorrang haben (ENISA).

Für Agenturen kommt eine zweite Ebene hinzu: die Zuständigkeit. Bei einer Website auf eigenem Server patcht die Agentur selbst, bei Shared Hosting oder einem verwalteten Server der Hoster, bei einem Container-Deployment derjenige, der das Abbild baut. Das BSI weist eigens darauf hin, dass Anwendungen in Docker-Containern unabhängig vom Host aktualisiert oder neu gebaut werden müssen, sofern sie PHP verwenden (BSI). Eine Liste, die nur Domains enthält, beantwortet die Frage „Wer macht was?“ nicht.

PHP steckt zudem nicht nur hinter klassischen Websites: Viele Produkte nutzen PHP im Hintergrund und können betroffen sein, auch wenn sie nicht danach aussehen (ENISA). Dieser Beitrag bleibt bei den Websites; Geräte mit Weboberfläche gehören in eine eigene Liste. Je Website sollte die Liste mindestens diese Felder tragen:

  • Adresse und Umgebung: Live, Staging, Microsite, Landingpage. Jede Umgebung mit eigener PHP-Instanz zählt einzeln.
  • Betrieb: eigener Server, verwalteter Server, Shared Hosting oder Container, dazu der Ansprechpartner beim Hoster.
  • PHP-Zweig und Paketstand: so, wie php -v und die Paketverwaltung ihn zeigen, nicht nur so, wie die Kopfzeile ihn behauptet.
  • Betriebsart: PHP-FPM, Apache mit mod_php, php-cgi oder ein anderer Server. Das PHP-Projekt stuft das Risiko bei mod_php als am höchsten ein (PHP Group).
  • Zuständig für den Patch: Agentur, Hoster oder Kunde, mit Namen.
  • Nachweis: Datum des Updates, Datum des Neustarts, Ergebnis der Kontrolle.

Schritt 1: Alle Websites erfassen, nicht nur die bekannten

Die Liste beginnt nicht im Monitoring, sondern in den Verträgen, im DNS und in den Hosting-Konten. Typische Lücken im Bestand sind Staging-Umgebungen, Aktionsseiten vergangener Kampagnen, ein altes Kundenportal und Websites, die nach einem Relaunch unter einer zweiten Adresse weiterlaufen. Gerade dort sitzen erfahrungsgemäß die ältesten PHP-Zweige.

Steht eine Website im Monitoring, liefert das CRA-Komponenten-Cockpit eine kontoweite Übersicht: je Website die Zahl der erkannten Komponenten, die Zahl der potenziell veralteten Komponenten, die Zahl der Komponenten mit auslesbarer Version, den höchsten Schweregrad und den Zeitpunkt der letzten Tech-Stack-Prüfung. Sortiert ist die Liste nach der Zahl der potenziell veralteten Komponenten, die auffälligsten Websites stehen also oben. Sie umfasst eigene und für das Konto freigegebene Websites, was bei Agenturen mit Team- und Kundenzugängen den Bestand an einer Stelle zusammenführt. Das Cockpit ist ab dem Business-Plan enthalten.

Was nicht im Monitoring steht, fehlt auch dort. Der Abgleich zwischen der Liste aus Verträgen und DNS und der Liste im Cockpit ist deshalb der erste echte Befund der Inventur: Jede Domain, die nur auf einer der beiden Seiten auftaucht, ist eine offene Frage. Wer die fehlenden Websites bei der Gelegenheit ins Monitoring aufnimmt, hat beim nächsten Anlass eine vollständigere Ausgangslage.

Der Name des Cockpits verweist auf den Cyber Resilience Act, nach dem Hersteller von Produkten mit digitalen Elementen seit dem 11. September 2026 aktiv ausgenutzte Schwachstellen melden müssen (ENISA). Wer ausschließlich Websites betreibt, fällt in der Regel nicht darunter; die Komponentenliste ist davon unabhängig nutzbar.

Schritt 2: PHP erkennen, so weit es von außen sichtbar ist

Von außen verrät sich PHP vor allem über die Kopfzeile X-Powered-By. Die Einstellung expose_php gibt dort bekannt, dass PHP auf dem Server installiert ist, einschließlich der Versionsnummer (PHP-Handbuch). Manche Server nennen PHP auch im Server-Kopf. XICTRAQ liest beide Kopfzeilen beim Scan und leitet daraus die PHP-Komponente im Cockpit ab. Der Security-Scan führt eine sichtbare X-Powered-By-Kopfzeile zugleich als Befund, weil sie Angreifern dieselbe Auskunft gibt wie dem Monitoring.

$ curl -sI https://shop.example/ | grep -iE '^(server|x-powered-by)'
server: Apache x-powered-by: PHP/8.1.31
$ curl -sI https://www.example/ | grep -iE '^(server|x-powered-by)'
server: nginx

Wie viel davon im Netz sichtbar ist, misst der Web Almanac auf Basis der vom HTTP Archive erfassten Hosts: Die Kopfzeile X-Powered-By erscheint auf 23,9 Prozent dieser Hosts (Web Almanac 2025), und mehr als 27 Prozent dieser Kopfzeilen enthalten eine Versionsangabe (Web Almanac 2025). PHP neigt nach derselben Auswertung dazu, die genaue Version gerade in X-Powered-By preiszugeben (Web Almanac 2025). Umgekehrt heißt das: Bei einem großen Teil der Websites ist von außen gar keine PHP-Version zu sehen.

Wo die Kopfzeile schweigt, hilft das System dahinter weiter. WordPress, Drupal, TYPO3, Joomla und Magento wurden mit PHP entwickelt (BSI), eine Website mit einem dieser Systeme ist also ein PHP-Kandidat, auch wenn keine Version zu sehen ist. Ein weiteres Indiz ist ein Sitzungscookie mit dem Standardnamen PHPSESSID. Das Cockpit führt ein erkanntes CMS dann als Komponente, aber keine PHP-Version. In seinen Kennzahlen steht, wie viele Komponenten überhaupt eine Version preisgeben; nennt keine einzige eine Version, zeigt es „nicht bewertbar“ statt einer beruhigenden Null.

Verborgene Version: kein Widerspruch

Der Beitrag zum Abschalten von Versionsbannern rät, die Versionsnummer aus den Kopfzeilen zu nehmen. Daran ändert PHP2Shell nichts. Die Inventur braucht die Nummer nicht von außen, sondern von innen: Für jede Website mit verborgener Version trägt der Betreiber den Stand aus php -v und der Paketverwaltung in die Liste ein. Die Außensicht prüft dann nur noch, ob die Kopfzeile verborgen bleibt.

Schritt 3: Vorrang nach Supportende

Nicht jede Website ist gleich dringend. Den weitesten Weg zur Lösung haben Zweige, für die das PHP-Projekt keine Updates mehr liefert. Das BSI hält fest, dass alle PHP-Versionen vor 8.2 ihr End-of-Life bereits erreicht haben (BSI) und dass PHP 8.2 nur noch bis zum Jahresende mit Sicherheitsupdates unterstützt wird (BSI). Die Tabelle des PHP-Projekts nennt dafür den 31. Dezember 2026 (PHP Group). Nach der Regel des Projekts erhält jeder Zweig nach zwei Jahren aktiver Unterstützung zwei weitere Jahre nur für kritische Sicherheitsprobleme (PHP Group).

PHP-ZweigSicherheitsupdates bisVersion mit PHP2Shell-PatchVorrang in der Liste
5.x bis 7.3seit Jahren beendetnur über Anbieter mit Langzeitpflegezuerst, Umstieg planen
7.4 und 8.0beendet am 28.11.2022 bzw. 26.11.2023Quell-Backport oder Paket der Distributionzuerst, Umstieg planen
8.1beendet am 31.12.2025Quell-Backport oder Paket der Distributionzuerst, Umstieg planen
8.231.12.20268.2.35hoch, Wechsel mitplanen
8.331.12.20278.3.36Patchstand prüfen
8.431.12.20288.4.27Patchstand prüfen
8.531.12.20298.5.12Patchstand prüfen
unbekanntunbekanntunbekanntvor den unterstützten Zweigen von innen klären

Die Daten der Tabelle stammen aus den Übersichten der unterstützten und der nicht mehr unterstützten Zweige (PHP Group) und aus dem Sicherheitshinweis vom 21. Oktober 2026 (PHP Group). Zuerst kommen Websites auf Zweigen ohne Sicherheitsupdates, denn dort gibt es vom PHP-Projekt keine fertige Version mit Patch. Das BSI nennt genau diese Systeme neben den noch ungepatchten als Grund dafür, dass die Zahl verwundbarer Systeme weltweit hoch bleibt (BSI). Danach folgen Websites mit verborgener Version, weil über sie nichts bekannt ist, und erst dann die unterstützten Zweige, bei denen nur noch der Patchstand zu prüfen ist.

Für 8.2 lohnt es sich, den Patch mit dem Wechsel auf einen neueren Zweig zu verbinden. Wie der Umstieg bei WordPress aussieht, beschreibt der Beitrag zum Supportende von PHP 8.2, die Planung sicherer Upgrades im Shop der Beitrag zum PHP-EOL-Management. Das Cockpit nimmt einen Teil der Sortierung ab: Eine sichtbare PHP-Version unter 8.2 markiert es als Supportende, mit einem Schweregrad je nach Alter des Zweigs, und solche Websites rücken in der Übersicht nach oben. Wie man Supportenden im ganzen Web-Stack verfolgt, nicht nur bei PHP, steht im Beitrag zum Supportende im Web-Stack.

Was die Heuristik bewertet und was nicht

Hier liegt die wichtigste Einschränkung dieses Ablaufs, und sie gehört offen benannt. XICTRAQ sieht nur, was der Server von außen zeigt. Die Bewertung im Cockpit ist eine Offline-Heuristik: Sie vergleicht die sichtbare Versionsnummer mit hinterlegten Schwellen, ohne eine Schwachstellen-Datenbank live abzufragen. Die PHP2Shell-Kennungen CVE-2026-109618 und CVE-2026-109619 stehen nicht in diesen Regeln. XICTRAQ erkennt PHP2Shell nicht und gibt das auch nicht vor.

Für PHP setzt die Heuristik die Grenze beim Supportende: Unter 8.2 meldet sie einen Hinweis, ab 8.2 nicht. Den Patchstand innerhalb der Zweige 8.2 bis 8.5 bewertet sie nicht. Eine Website, die PHP/8.3.20 meldet, gilt dort also nicht als veraltet, obwohl 8.3.20 unter der behebenden Version 8.3.36 liegt (PHP Group). Für diese Websites liefert das Inventar die Liste, die Prüfung des Patchstands bleibt beim Betreiber.

Die zweite Grenze ist der Backport. Linux-Distributionen spielen Sicherheitskorrekturen häufig in ihre Pakete ein, ohne die Versionsnummer auf den Stand des PHP-Projekts zu heben. Das BSI schreibt dazu, ein Abgleich der installierten Version mit der von der Distribution bereitgestellten gepatchten Version sei möglicherweise notwendig (BSI). Wie unterschiedlich das aussieht, zeigen die Sicherheitsseiten der Distributionen zu CVE-2026-109618:

  • Debian 12 führt die Korrektur im Paket 8.2.35-1~deb12u1, also mit der behebenden Nummer des PHP-Projekts (Debian).
  • Ubuntu 24.04 LTS führt sie im Paket 8.3.6-0ubuntu0.24.04.13 (Ubuntu). Die Grundversion 8.3.6 liegt weit unter 8.3.36, das Paket ist trotzdem korrigiert.
  • Ubuntu 22.04 LTS korrigiert sogar den Zweig 8.1, für den das PHP-Projekt keine Updates mehr liefert, im Paket 8.1.2-1ubuntu2.28 (Ubuntu).

Eine alte Nummer in der Kopfzeile ist also kein Beweis für eine offene Lücke, und eine neue Nummer in php -v kein Beweis für einen Neustart: Die Kommandozeile lädt bei jedem Aufruf das installierte Paket, ein laufender FPM-Dienst arbeitet bis zum Neustart mit dem alten Stand. Steht in der Kopfzeile ein Paketsuffix der Distribution, lässt sich der Stand mit deren Sicherheitsseite abgleichen; ohne Suffix bleibt nur der Blick auf den Server. Das Cockpit trägt dem mit der Markierung „Backport möglich“ Rechnung, die es bei PHP, nginx, Apache httpd und OpenSSL setzt. Das Handbuch zum CRA-Cockpit beschreibt den Vorbehalt im Einzelnen.

Was eine Null im Cockpit nicht bedeutet

Null potenziell veraltete Komponenten heißt: Keine sichtbare Version liegt unter einer hinterlegten Schwelle. Es heißt nicht, dass PHP2Shell geschlossen ist. Ein ungepatchtes 8.3 oder 8.4 erzeugt dort keinen Hinweis, eine verborgene Version keinen Befund. Die Patchprüfung mit php -v und dem Sicherheitshinweis der Distribution ersetzt das Inventar nicht, und das Inventar ersetzt die Patchprüfung nicht.

Schritt 4: Patchen und neu starten

Dieser Beitrag ist keine Patch-Anleitung, drei Punkte aus den Hinweisen gehören aber in jede Liste. Erstens hat das PHP-Projekt die Korrekturen vorab an Linux-Distributionen und Anbieter mit Langzeitpflege gegeben und verweist für aktualisierte Pakete auf diese (PHP Group). Wer PHP aus der Paketverwaltung bezieht, wartet also auf das Paket der Distribution. Zweitens prüft man den Patchstand nach dem BSI-Hinweis mit php -v und dem Abgleich gegen das Advisory (BSI). Drittens werden Container mit PHP neu gebaut, statt nur den Host zu aktualisieren (BSI).

$ php -v | head -n 1
PHP 8.3.6-0ubuntu0.24.04.13 (cli) (built: Oct 21 2026 10:12:44) (NTS)
$ dpkg -l 'php8.3-*' | awk '/^ii/ {print $2, $3}' | head -n 3
php8.3-cli 8.3.6-0ubuntu0.24.04.13 php8.3-common 8.3.6-0ubuntu0.24.04.13 php8.3-fpm 8.3.6-0ubuntu0.24.04.13
$ sudo systemctl restart php8.3-fpm && systemctl show -p ActiveEnterTimestamp php8.3-fpm
ActiveEnterTimestamp=Thu 2026-10-22 07:41:09 CEST

Ein neues Paket wirkt erst, wenn die laufenden PHP-Prozesse neu gestartet sind: der FPM-Dienst, der Apache-Server bei mod_php, die Worker eines Anwendungsservers. Die Übergangsmaßnahmen des PHP-Projekts sagen das für geänderte Einstellungen ausdrücklich, dort heißt es, jeder Worker sei neu zu starten (PHP Group). Für ein Paket-Update gilt dasselbe. In die Liste gehört deshalb neben dem Datum des Updates das Datum des Neustarts, ablesbar zum Beispiel am Startzeitpunkt des Dienstes.

Wer einen Neustart im laufenden Betrieb plant, kann im Uptime-Monitoring ein Wartungsfenster setzen. Alarme schweigen in dieser Zeit, die Prüfungen laufen weiter und zählen in die Verfügbarkeit. So bleibt im Protokoll sichtbar, ob die Website nach dem Fenster wieder erreichbar war.

Schritt 5: Nach dem Neustart kontrollieren

Nach Patch und Neustart stehen zwei Fragen an, die sich von außen beantworten lassen: Ist die Website erreichbar, und sieht sie aus wie vorher? Ein PHP-Update kann Erweiterungen verändern, eine Konfiguration zurücksetzen oder einen Dienst nicht wieder anlaufen lassen. Das ist kein Grund, auf den Patch zu verzichten, aber ein Grund, danach hinzusehen. CERT-EU spricht in seinem Hinweis von einer Korrektur, die eingespielt und überprüft ist (CERT-EU). Wie man eine Änderung am laufenden System nachmisst und notfalls zurückrollt, beschreibt der Beitrag zu Deploy-Fehlern als Ausfallursache.

Erreichbar

Das Uptime-Monitoring prüft aus mehreren Messknoten und alarmiert erst, wenn mehrere Knoten einen Ausfall bestätigen. Ein FPM-Dienst, der nach dem Neustart nicht anläuft, fällt so ohne Handarbeit auf.

Unverändert

Das Screenshot-Changelog vergleicht neue Aufnahmen mit den vorigen und hebt geänderte Bereiche hervor. Eine Seite, die nach dem Update nur noch eine Fehlermeldung zeigt, erscheint bei der nächsten Aufnahme als Änderung.

Version

Der nächste Scan liest die Kopfzeilen neu. Ist die PHP-Version sichtbar, zeigt das Cockpit den neuen Stand mit dem Zeitpunkt der Prüfung; bei verborgener Version taucht PHP dort nicht auf, und der Nachweis kommt von innen.

Eine Grenze gilt auch hier: Von außen lässt sich nicht feststellen, ob ein Server vor dem Patch kompromittiert wurde. Das BSI nennt dafür Prüfungen auf dem Server selbst, etwa die Suche nach neu erstellten oder veränderten PHP-Dateien, ausführbaren Dateien und möglichen Webshells (BSI) und die Beobachtung ungewöhnlicher Prozesse, die vom Webserver gestartet werden (BSI). Eine sichtbare Verunstaltung der Seite würde der Screenshot-Vergleich zeigen, eine still abgelegte Hintertür nicht.

Schritt 6: Den Stand belegen

Am Ende steht eine Liste, die für jede Website sagt, was geprüft, was getan und was kontrolliert wurde. Im Cockpit lässt sich ein Hinweis je Komponente als bekannt markieren, etwa der Supportende-Hinweis zu PHP 8.1 auf einem Server, dessen Paket die Distribution nachweislich korrigiert hat. Gespeichert wird der Zeitpunkt der Bestätigung, und sie lässt sich zurücknehmen. Die Begründung, also Paketstand und Datum des Neustarts, gehört in die eigene Liste. Die Komponentenliste lässt sich außerdem als CycloneDX-Datei exportieren. Für einen Stichtag ist das ein brauchbarer Schnappschuss, auch wenn er nur zeigt, was von außen sichtbar ist; der Unterschied zu einer vollständigen Software-Stückliste steht im Beitrag zur SBOM nach dem CRA.

Für den Kunden oder die Geschäftsführung reicht oft eine einfache Tabelle oder eine Datei je Anlass. Ein Beispiel, wie die Einträge je Website aussehen können:

php2shell-nachweis.yaml
occasion: PHP2Shell (CVE-2026-109618, CVE-2026-109619)
basis: BSI BITS-H 2026-297981-1232, Version 1.2
sites:
  - address: shop.example
    hosting: eigener Server, Apache mit mod_php
    php_before: "8.1.31, Kopfzeile sichtbar"
    action: Umstieg auf 8.3, Paket der Distribution
    restart: 2026-10-22 07:41
    check: erreichbar, Screenshot unverändert
    owner: Agentur
  - address: www.example
    hosting: verwalteter Server beim Hoster
    php_before: "verborgen, laut Hoster 8.2"
    action: "Paket 8.2.35-1~deb12u1 laut Hoster"
    restart: "2026-10-21 laut Hoster-Ticket"
    check: erreichbar, Screenshot unverändert
    owner: Hoster
open:
  - Staging-Umgebungen ohne Monitoring

Wichtig ist die Unterscheidung zwischen gemessen und angegeben. „Erreichbar“ und „Screenshot unverändert“ sind Messungen mit Zeitstempel. „Laut Hoster 8.2“ ist eine Auskunft und gehört als solche gekennzeichnet. Wer beides vermischt, hat im Streitfall eine Liste, der man nicht ansieht, worauf sie beruht. Offene Punkte gehören ausdrücklich hinein, statt wegzufallen.

Der Ablauf bleibt, die Lücke wechselt

PHP2Shell wird nicht die letzte kritische Lücke im Web-Stack gewesen sein. Schon zwei Tage nach den Patches hat das PHP-Projekt eine weitere Schwachstelle, CVE-2026-115560, mit einer Übergangsmaßnahme angekündigt; sie betrifft nur ungewöhnlich konfigurierte Anwendungen und wird im regulären Releasezyklus behoben (PHP Group). CERT-EU hat seinen Hinweis am 23. Oktober entsprechend ergänzt (CERT-EU). Das BSI hält es für möglich, dass wegen der erhöhten Aufmerksamkeit auf PHP weitere Lücken entdeckt werden (BSI).

Die Liste aus dieser Woche ist deshalb kein Wegwerfprodukt. Sie wird beim nächsten Anlass wieder gebraucht, für PHP, für den Webserver, für eine Bibliothek im Frontend. Wer sie laufend aktuell hält, beantwortet die Frage nach den betroffenen Websites beim nächsten Mal aus der Liste statt aus dem Gedächtnis. Wie man passende Schwachstellen-Feeds auswählt, beschreibt der Beitrag zu EUVD und CVE; welche Kopfzeile Kamera, Mikrofon und Standort sperrt, zeigt der Beitrag zur Permissions-Policy.

Für Agenturen ist der Ablauf zugleich eine Leistung, die sich dem Kunden zeigen lässt: ein datierter Stand je Website statt einer Rundmail mit „alles erledigt“. Wie XICTRAQ mehrere Kundenwebsites in einem Konto zusammenführt, steht auf der Seite für Agenturen. Der Ablauf in Kurzform:

  1. Bestand aus Verträgen, DNS und Hosting-Konten gegen das Monitoring abgleichen.
  2. Je Website PHP-Zweig, Betrieb und Zuständigkeit eintragen, verborgene Versionen von innen ergänzen.
  3. Zweige ohne Sicherheitsupdates zuerst, dann verborgene Versionen, dann den Patchstand der unterstützten Zweige prüfen.
  4. Paket der Distribution oder behebende Version einspielen, Container neu bauen, Dienste neu starten.
  5. Erreichbarkeit und Erscheinungsbild nach dem Neustart kontrollieren, Prüfungen auf dem Server veranlassen.
  6. Gemessenes und Angegebenes getrennt und mit Datum festhalten, offene Punkte benennen.
Quellen und Studien

Dieser Beitrag stützt sich auf: BSI, IT-Sicherheitshinweis „PHP: Kritische Schwachstellen bedrohen Webanwendungen weltweit“, BITS-H Nr. 2026-297981-1232, Version 1.2 vom 22.10.2026; PHP Group, Hinweise vom 21. und 23.10.2026 im News-Archiv sowie die Übersichten „Supported Versions“ und „Unsupported Branches“; PHP-Handbuch zu expose_php; ENISA, „Joint statement on critical PHP vulnerabilities“ vom 21.10.2026; CERT-EU, Security Advisory 2026-018; Debian Security Tracker und Ubuntu Security zu CVE-2026-109618; HTTP Archive, Web Almanac 2025, Kapitel Security. Produktangaben nach Funktionsseiten und Handbuch von XICTRAQ®, Stand Oktober 2026.

Erkennt XICTRAQ, ob eine Website von PHP2Shell betroffen ist?
Nein. XICTRAQ sieht nur, was der Server von außen zeigt, und bewertet sichtbare PHP-Versionen mit einer Offline-Heuristik, in der die PHP2Shell-Kennungen nicht stehen. Den Patchstand innerhalb der Zweige 8.2 bis 8.5 bewertet sie nicht. XICTRAQ liefert die kontoweite Liste mit dem von außen erkannten Tech-Stack und markiert sichtbare PHP-Zweige mit Supportende; ob ein Server gepatcht ist, klärt in der Regel php -v zusammen mit dem Sicherheitshinweis der Distribution.
Reicht es, WordPress, Shopware oder TYPO3 zu aktualisieren?
Nach dem BSI-Hinweis nicht. Die Schwachstellen liegen in der PHP-Laufzeitumgebung selbst und nicht in konkreten Anwendungen (BSI). Ein aktuelles CMS ist trotzdem sinnvoll, schließt diese Lücke aber nicht; das PHP-Paket auf dem Server muss ebenfalls aktualisiert und der Dienst neu gestartet werden.
Unsere Kopfzeile zeigt PHP 8.3.6. Ist die Website damit ungepatcht?
Nicht zwingend. Distributionen spielen Korrekturen häufig ein, ohne die Grundversion anzuheben; Ubuntu 24.04 LTS führt die Korrektur für CVE-2026-109618 im Paket 8.3.6-0ubuntu0.24.04.13 (Ubuntu). Maßgeblich ist der Abgleich des installierten Pakets mit dem Sicherheitshinweis der Distribution, wie ihn auch das BSI nahelegt (BSI).
Sollen wir X-Powered-By wieder einschalten, damit das Inventar die Version sieht?
In der Regel nicht. Die sichtbare Versionsnummer hilft Angreifern ebenso wie dem Monitoring. Zweckmäßiger ist es, die Version verborgen zu lassen und den Stand für diese Websites von innen in die Liste einzutragen. Im Cockpit fehlt PHP bei solchen Websites ganz; „nicht bewertbar“ erscheint dort nur, wenn keine einzige Komponente eine Version nennt. Darum gehören sie in der eigenen Liste ausdrücklich markiert, damit sie nicht als unauffällig durchrutschen.
Welche Websites sollten zuerst drankommen?
Typischerweise zuerst Websites auf Zweigen ohne Sicherheitsupdates, also vor PHP 8.2 (BSI), dann Websites mit verborgener Version und zuletzt die unterstützten Zweige, bei denen nur der Patchstand zu prüfen ist. Innerhalb jeder Gruppe haben nach der Empfehlung der europäischen Stellen Systeme mit Verbindung zum Internet Vorrang (ENISA).
Wie belegen wir gegenüber Kunden, dass gepatcht wurde?
Bewährt hat sich eine Liste je Website mit Paketstand, Datum des Updates, Datum des Neustarts und der Kontrolle danach. Erreichbarkeit und Erscheinungsbild lassen sich mit Monitoring und Screenshot-Vergleich datiert messen, im Cockpit lässt sich jeder Hinweis mit Zeitpunkt als bekannt markieren. Angaben des Hosters sollten als Auskunft gekennzeichnet sein, nicht als eigene Messung.
In 60 Sekunden starten

Lassen Sie XICTRAQ® Ihre Website bewachen.

Kostenloser Plan ohne feste Laufzeit verfügbar. Keine Kreditkarte, keine Installation, keine versteckten Kosten.