PHP2Shell: who went offline?
On 21 October 2026 two critical PHP flaws (CVE-2026-109618, CVE-2026-109619, “PHP2Shell”) were disclosed: remote code execution on any PHP installation that serves web requests. National agencies advised taking systems that could not be patched immediately offline. This is what 3,207 sites on our radar looked like that day.
When it happened
New outages of 30 minutes or more per hour (UTC) on 21 October, against the average hour of the seven days before.
21 Octoberaverage hour, 14–20 October
| Day (UTC) | Outages ≥ 30 min | Outages ≥ 2 h |
|---|---|---|
| 2026-10-14 | 138 | 69 |
| 2026-10-15 | 118 | 45 |
| 2026-10-16 | 118 | 48 |
| 2026-10-17 | 162 | 93 |
| 2026-10-18 | 185 | 118 |
| 2026-10-19 | 132 | 73 |
| 2026-10-20 | 70 | 33 |
| 2026-10-21 | 173 | 98 |
18 October also had many long outages, mostly on a few large consumer sites, so the daily count alone is not unusual. What stands out on 21 October is the hour pattern and who was affected.
Whole networks, not single sites
The radar opens a network incident only when several independent sites in one network fail in the same sweeps. These are the incidents it opened on 21 October without being told what to look for.
| Network | What it is | Opened (UTC) | Closed (UTC) | Sites failing | Sites at risk |
|---|---|---|---|---|---|
| SURF | Dutch research and education network | 21 Oct 10:47 | 22 Oct 07:46 | 3 | 8 |
| DFN | German research network | 21 Oct 13:16 | 21 Oct 17:36 | 8 | 21 |
| Belnet | Belgian research and government network | 21 Oct 14:11 | 22 Oct 00:11 | 3 | 2 |
| SWITCH | Swiss research network | 21 Oct 14:32 | 21 Oct 15:22 | 3 | 5 |
| mittwald | German PHP-focused web hoster | 21 Oct 14:32 | 21 Oct 20:46 | 3 | 0 |
| OVHcloud | European cloud and web hoster (3 short incidents) | 21 Oct 14:46 | 21 Oct 16:31 | 7 | 31 |
| GARR | Italian research network | 21 Oct 19:16 | 21 Oct 19:21 | 3 | 5 |
Five of the seven are national research and education networks. Universities in Germany, the Netherlands, Belgium and Switzerland widely run PHP content management systems such as TYPO3 and Drupal.
Did the affected sites run PHP?
On the morning of 22 October we read the public homepage of every affected site and of a comparison group of 140 sites from the same catalogue lists that had no outage. We looked for visible signs of PHP: CMS generator tags, WordPress paths, the PHPSESSID cookie and the X-Powered-By header. A site without a visible sign may still run PHP, so both shares are lower bounds.
| Visible technology | Affected sites | Comparison group |
|---|---|---|
| TYPO3 | 17 | 2 |
| WordPress | 19 | 24 |
| Drupal | 14 | 4 |
| Joomla | 1 | 1 |
| Magento | 0 | 1 |
| Other PHP evidence (session cookie, header) | 5 | 3 |
| Any visible PHP | 56 of 106 · 53% | 35 of 133 · 26% |
| 95% interval (Wilson) | 43.4–62.1% | 19.6–34.4% |
| Not readable at the time of the check | 26 | 7 |
Association found Affected sites were about three times as likely to show PHP (odds ratio 3.1, one-sided Fisher exact test p = 2.4e-5). TYPO3 stands out: 17 affected sites against 2 in the comparison group.
Universities and public bodies
57 of the 132 affected sites belong to universities, research institutes or public authorities. “Unreachable” means the site still did not answer when we fingerprinted it the next morning.
| Site | Down from (UTC) | Duration | Error | Visible technology |
|---|---|---|---|---|
| archives-ouvertes.fr | 21 Oct 00:52 | 8 h 15 min | timeout | unreachable |
| autoriteitpersoonsgegevens.nl | 21 Oct 10:07 | 21 h 5 min+, still down | fetch failed | unreachable |
| belgium.be | 21 Oct 14:06 | 10 h 5 min | HTTP 503 | Drupal |
| brandenburg.de | 21 Oct 16:12 | 14 h 45 min | HTTP 503 | WordPress |
| bundesumweltministerium.de | 21 Oct 10:32 | 7 h 20 min | HTTP 503 | TYPO3 |
| charite.de | 21 Oct 08:12 | 10 h 55 min | timeout | TYPO3 |
| cnil.fr | 21 Oct 10:12 | 21 h+, still down | HTTP 503 | unreachable |
| cnr.it | 21 Oct 15:22 | 2 h 55 min | fetch failed | Drupal |
| daad.de | 21 Oct 13:56 | 3 h 15 min | HTTP 503 | no PHP signal |
| denic.de | 21 Oct 12:47 | 18 h 25 min+, still down | fetch failed | unreachable |
| elte.hu | 21 Oct 15:12 | 1 h 15 min | timeout | Drupal |
| epfl.ch | 21 Oct 13:41 | 17 h 30 min+, still down | fetch failed | unreachable |
| eur.nl | 21 Oct 11:31 | 19 h 40 min+, still down | timeout | Drupal |
| europa.eu | 21 Oct 06:41 | 1 h 35 min | timeout | Drupal |
| fes.de | 21 Oct 13:56 | 3 h | fetch failed | TYPO3 |
| fgov.be | 21 Oct 14:06 | 10 h 5 min | HTTP 503 | Drupal |
| finna.fi | 21 Oct 11:06 | 3 h 35 min | HTTP 503 | PHP (session cookie) |
| grnet.gr | 21 Oct 13:51 | 17 h 20 min+, still down | fetch failed | unreachable |
| hu-berlin.de | 21 Oct 13:31 | 1 h 20 min | timeout | no PHP signal |
| inra.fr | 21 Oct 15:26 | 1 h 10 min | timeout | Drupal |
| inrae.fr | 21 Oct 15:31 | 1 h 5 min | timeout | Drupal |
| ki.se | 21 Oct 07:22 | 10 h 35 min | HTTP 503 | Drupal |
| krakow.pl | 21 Oct 12:11 | 19 h+, still down | timeout | unreachable |
| leidenuniv.nl | 21 Oct 09:16 | 21 h 55 min+, still down | timeout | unreachable |
| meteofrance.com | 21 Oct 14:22 | 2 h 20 min | timeout | Drupal |
| overheid.nl | 21 Oct 09:51 | 1 h 25 min | timeout | Drupal |
| rivm.nl | 21 Oct 10:56 | 20 h 15 min+, still down | fetch failed | unreachable |
| rki.de | 21 Oct 10:22 | 3 h 40 min | timeout | no PHP signal |
| ru.nl | 21 Oct 10:41 | 1 h 15 min | fetch failed | Drupal |
| ruhr-uni-bochum.de | 21 Oct 10:32 | 2 h 45 min | timeout | WordPress |
| tu-bs.de | 21 Oct 13:07 | 4 h | timeout | TYPO3 |
| tu-chemnitz.de | 21 Oct 13:37 | 17 h 35 min+, still down | timeout | unreachable |
| tu-dortmund.de | 21 Oct 09:46 | 16 h 35 min | HTTP 503 | TYPO3 |
| tu-dresden.de | 21 Oct 13:51 | 30 min | timeout | no PHP signal |
| tudelft.nl | 21 Oct 11:31 | 19 h 20 min | timeout | TYPO3 |
| tue.nl | 21 Oct 09:56 | 16 h 30 min | timeout | TYPO3 |
| tuwien.ac.at | 21 Oct 14:22 | 2 h 20 min | HTTP 503 | TYPO3 |
| u-bordeaux.fr | 21 Oct 16:12 | 15 h+, still down | timeout | unreachable |
| uclouvain.be | 21 Oct 14:31 | 55 min | HTTP 500 | Drupal |
| ugent.be | 21 Oct 13:41 | 17 h 30 min+, still down | timeout | unreachable |
| um.es | 21 Oct 18:56 | 11 h 40 min | HTTP 502 | no PHP signal |
| uni-bayreuth.de | 21 Oct 11:16 | 18 h 15 min | timeout | no PHP signal |
| uni-due.de | 21 Oct 12:07 | 19 h 5 min+, still down | timeout | unreachable |
| uni-halle.de | 21 Oct 12:07 | 4 h 15 min | timeout | no PHP signal |
| uni-heidelberg.de | 21 Oct 10:26 | 2 h 5 min | fetch failed | no PHP signal |
| uni-jena.de | 21 Oct 13:31 | 1 h 45 min | fetch failed | no PHP signal |
| uni-muenster.de | 21 Oct 13:11 | 16 h 10 min | timeout | unreachable |
| uni-osnabrueck.de | 21 Oct 14:02 | 2 h 40 min | timeout | TYPO3 |
| uni-paderborn.de | 21 Oct 11:22 | 45 min | fetch failed | TYPO3 |
| uni-tuebingen.de | 21 Oct 11:31 | 5 h 40 min | timeout | TYPO3 |
| uni-wuerzburg.de | 21 Oct 11:56 | 5 h 40 min | timeout | TYPO3 |
| unibas.ch | 21 Oct 14:26 | 55 min | timeout | unreachable |
| unicaen.fr | 21 Oct 11:06 | 4 h 25 min | timeout | WordPress |
| unige.ch | 21 Oct 13:51 | 17 h 20 min+, still down | HTTP 503 | unreachable |
| unipd.it | 21 Oct 14:17 | 16 h 55 min+, still down | timeout | unreachable |
| univie.ac.at | 21 Oct 07:42 | 1 h | HTTP 501 | TYPO3 |
| vie-publique.fr | 21 Oct 12:32 | 16 h 15 min | HTTP 503 | no PHP signal |
What this does not show
The limits are part of the result.
- No proof of cause. We see that sites stopped answering, not why. Patching, deliberate shutdowns, firewall rules and unrelated faults all look the same from outside.
- Sector confound. Universities and public bodies use TYPO3 and Drupal more than the average site, so part of the PHP difference reflects who was affected rather than what they run.
- One vantage point. Our checks run from AWS in North America. A European site that blocked traffic from outside Europe as a quick mitigation looks like an outage to us.
- Fingerprint after the fact. The technology check ran on 22 October. 26 affected sites were still not answering and could not be classified.
- Background noise. Roughly 130 long outages happen on an ordinary day. The 132 affected sites include ordinary ones, for example a short Bitbucket incident.
Data
129 of the 132 affected sites with start, recovery, duration, error and the technology fingerprint, as CSV under CC BY 4.0. 3 adult sites are counted in all figures but not listed by name. The numbers on this page are frozen and will not change.
Method: HTTPS reachability checks every five minutes; an outage is two or more consecutive failed checks, counted here when it lasted 30 minutes or more and started on 21 October (UTC). Vulnerability sources: CISA alert of 21 October 2026, Help Net Security, Sansec, Google Cloud.