A PHP emergency, from an early attack trace to published fixes
On 17 October, four days before the public security release, a decoy server in Amazon's MadPot network received what Amazon later identified as an attempt to exploit the PHP flaws. Amazon published that account on 21 October. It does not know how the sender learned of the flaws, or whether that request would have worked against a real website. But it changes where a watch should start: the public patch was not the first activity Amazon says it saw.
Developing · Later evidence 30 October 2026
The two vulnerabilities, CVE-2026-109618 and CVE-2026-109619, sit in PHP, software that runs behind many websites. The PHP project announced an emergency release on 20 October and published fixes on 21 October. OpenAI says a Calif researcher used an AI model to identify a critical flaw, while Wiz independently found and reported both; PHP's maintainers led the fixes. That is a documented account of AI helping defenders find the problem. Neither Amazon's honeypot trace nor Cloudflare's account of attack traffic says which tools the senders used. Speed and automation alone cannot identify an AI attacker.
Protection took several forms
Cloudflare says its web application firewall protection was on by default for customers using its free or paid WAF from 03:02 UTC on 21 October, before the planned public release at 14:00 UTC. It says it saw traffic targeting customers and attackers changing payloads. Fastly describes an optional virtual patch; Akamai describes a new rule. Britain's NCSC and CERT-EU advised operators to update or temporarily isolate exposed systems if they could not patch promptly. These are distinct actions and statements. A firewall rule at a provider is not a patched PHP runtime at a website, and an agency's recommendation is not evidence every recipient acted on it.
Our fixed panel of ten institutions found directly readable relevant pages for six by its first bounded search on 22 October; four entries were inaccessible or not found by that reader. Those four are unknown, not inactive. Three separately chosen technology outlets showed attention to the event, not operator action. The search result log was incomplete, so the panel gives no coverage percentage for public responses.
The fix has crossed some publication boundaries
Four selected official PHP moving image tags already named the same linux/amd64 content as their fixed-version counterparts at our first read on 21 October. By 22 October, five selected WordPress, Drupal and Nextcloud image tags each had a verified manifest and configuration declaring a fixed PHP source version. In one chosen Drupal case, all twelve filesystem layer digests of the selected fixed PHP base were the first twelve of the Drupal image's seventeen layers. These are unusually concrete traces of a fix reaching published artifacts. Our first looks came after those images changed, so we cannot time their uptake from before the event, estimate how many sites pulled them, or say a running site was fixed.
What the attack reports do and do not count
Amazon describes an apparent 17 October attempt against a honeypot, further attempts before the public release on 21 October, and more after it. Cloudflare says it observed attack traffic and changing payloads. Neither selected first-party page publishes an episode-wide request series with a matching window and denominator. A headline about millions of attempts cannot be turned into a measured global total from these records. Attempts at a decoy or matches at an edge do not prove a successful intrusion, and one request may be counted differently by different sensors. By its own dates, since 26 October CISA's catalogue of known exploited vulnerabilities has listed both flaws. That is a government agency's classification by criteria the feed does not state, published without its evidence or a count. The entries link no exploitation report we could read, so the listing may rest on these same reports of attempts rather than add independent evidence, and it does not show that any attempt succeeded. What changed after 22 October gives the entries' fields.
Amazon's article was readable through a web reader, but our direct collector received a small Site Unavailable placeholder. We retained and hashed that response; the Amazon article's text cannot be replayed offline from this collection. The Cloudflare and OpenAI pages were retained in full. This difference in access matters when a public story changes quickly.
The event is revealing because several clocks are visible at once: AI-assisted discovery and human coordination, a retrospectively reported early attack trace, public guidance and intermediary protection, fixed software, and published images. The links from an image to a running site and from a request to a compromised system are still missing from our own records. Since 29 October a vendor reports the second for its own products, which carry their own copy of PHP outside the fixes followed here, in the notice above. We are watching the same fixed sources at shorter intervals during the first days, then daily, retaining revisions so this account can say exactly what changed.
What changed after 22 October
- 30 October, CISA's criteria. CISA's catalogue page, its 21 October alert and its directive's guidance refused our direct reader. A web reader's summary of the catalogue page gives one of its three thresholds as "reliable evidence that the vulnerability has been actively exploited in the wild", says attempts count, and says code run on a decoy is classed as attempted exploitation. The definitions reached us paraphrased, not quoted. In the same reader's rendering, the alert, as last revised on 26 October, has no sentence saying whether CISA had observed exploitation.
- 29 October, Palo Alto Networks. Its advisory for CVE-2026-109618, published 21 October and updated 29 October, rates exploit maturity "ATTACKED" and says: "Active exploitation has been observed targeting the Palo Alto Networks management interface exposed to the internet." It lists versions of its PAN-OS firewall software from 10.2 to 12.2 as affected below named hotfix builds. Its Unit 42 brief, updated the same day, says about 0.02 per cent of its installed base had internet-facing management interfaces "and were impacted" (it gives neither the size of the base nor what "impacted" means; its advisory uses the word of affected products), that each of those customers was contacted, and that Unit 42 "independently verified the same attacker's tooling and confirmed the reported results" of Dream Research, which says it has been collaborating with Palo Alto Networks on the investigation. The brief was read at 11:50 UTC and the advisory at 11:51 UTC on 30 October.
- 23 and 25 October, Unit 42. The same brief records an update of 23 October "to add details on agentic AI post-exploitation activity", retracted on 25 October: "What researchers saw was an attack against a European government agency executed in the context of a vulnerable PHP application", and Unit 42 is "unable to confirm that initial access is associated with the specific PHP2Shell CVEs". We did not read the 23 October text. Read at 11:50 UTC on 30 October.
- 26 October, updated 29 October, Dream Research. It describes material it says it recovered from an attacker's infrastructure on 25 October. By its account, the attacker had its own, non-public build of the PHP exploit for the PHP inside PAN-OS (8.0.30 on the branches it targeted), chained with the Linux kernel flaw CVE-2026-46300 to get root. Dream gives a funnel from about 19,000 firewalls found to 240 targeted and 24 rooted, 22 of them left with nothing more than a planted web shell. A 25th server, inside a US government-affiliated network, was reached through a tunnel, and from there, Dream says, the organisation's directory of user accounts was attacked: Dream says the artifacts confirm a service account's password decrypted and every user and group listed, and that whether the further attacks worked it "cannot determine". It names no actor. On AI it reports Claude Code installed and an offensive tool set up to use DeepSeek and Kimi, with "no direct evidence that the AI tools were specifically used to write the exploit", though it says the scripts' structure, commenting style and consistency "suggest AI-assisted development". Read at 11:50 UTC on 30 October.
- 28 October, CISA. Its catalogue lists CVE-2026-46300, a Linux kernel flaw, due 31 October. The entry ends: "This vulnerability can be chained with CVE-2026-109618 and CVE-2026-109619 to implant PHP webshells and run commands as root." It cites kernel fixes, CISA's directive and NVD's record, and no exploitation report. Our read at 06:34 UTC on 29 October held it, and our working log at the time wrongly called it unrelated.
- 24 October, a honeypot report. Adel Karimi, whom BleepingComputer describes as a detection and response lead at Perplexity, published packet captures and process records matching 35 shell starts to 35 exploit requests on three decoy servers running PHP 8.4.26, from two source addresses. He calls the setup "the intentionally favorable single-worker
mod_phpprofile" and says what he saw is consistent with CVE-2026-109618, while his records "do not establish use of a distinct CVE-2026-109619 path". BleepingComputer reported it on 26 October. Read at 11:50 UTC on 30 October. - 21 to 30 October, Delft University of Technology. Its lab's dashboard, as updated at 11:47 UTC on 30 October, counts 76,216 exploitation requests from 680 addresses at its decoys and network telescope since 08:37 UTC on 21 October, 49 of them before the fixed releases. It puts 10,525 requests at a "code execution" step. The dashboard does not define its steps, and among its sensors is a high-interaction honeypot, so it does not say whether that step means code a request carried or code a sensor ran.
- 26 October, CISA. Its catalogue's version 2026.10.26, which the feed dates 26 October 22:24 UTC, lists CVE-2026-109618 as a "PHP Memory Corruption Vulnerability" and CVE-2026-109619 as a "PHP Stale Internal Request-State Vulnerability". Each entry is dated 26 October, sets a due date of 29 October, is marked for forensic triage (as are 21 of the 28 entries the catalogue dates October 2026), and gives known use in ransomware campaigns as "Unknown", which is CISA's field value, not a finding of none. Our reads found neither in the previous version at 18:34 UTC on 26 October and both at 06:34 UTC on 27 October. CVE-2026-115560 is not listed, which is not evidence that it has not been exploited. By CISA's own date the entries came five days after PHP's fixes. The catalogue does not say what evidence CISA relied on, and the entries' notes cite only PHP's site, CISA's own 21 October alert, its directive's pages and NVD's records, so this account cannot say whether it was Amazon's, Cloudflare's or something else, or whether any attempt succeeded.
- 23 October, PHP. A notice on PHP's news page suggests setting
session.upload_progress.enabled=0until the next regular bugfix release "to fully protect from an unlikely RCE vector", that is, an unlikely way to run code remotely. PHP says it needs an unusual combination: an application configured to store session data in thephp_binaryorphp_serializeformat that switches to thephpformat in its own code before starting a session, with upload progress still on. Applications that never switch can keep the feature. The setting is the one PHP listed on 21 October as a partial stopgap for one of the two original flaws, and anyone who applied it then should keep it in place and need do nothing more for this route. PHP will publish a full advisory with its next release. Nothing in these records counts how many applications make that switch. - 23 October, when PHP's notice appeared. The page stamps the notice 10:12 UTC, but on the 21 October entries the same stamp fell hours before the release they announced, and on one later entry nearly fifteen hours before a copy of the page that lacked it, so it does not say when this text became public. The notice was not on the page when we read it at 06:24 UTC on 22 October; our first retained read of it was at 17:00 UTC on 23 October.
- 23 October, Cloudflare. Its page, edited at 15:09 UTC by its own metadata and first seen by us at 16:06 UTC, links to PHP's notice and says the flaw "affects fully patched PHP releases, including 8.5.12". It says its firewall protects against known exploit attempts on sites that keep PHP's default name for the upload-progress field, and not on sites that changed it. That is a provider's statement about its rule, not a count of protected sites.
- 22 October, Cloudflare. An earlier edit, at 19:09 UTC by its metadata and first seen by us at 22:00 UTC, relabelled its PHP rules with the two flaws' identifiers and reworded its statement that its new default managed response firewall had been deployed for customers on all plans, including Free.
- Unchanged. OpenAI's article text, as extracted from each retained copy, was the same at each of our reads through 16:06 UTC on 23 October, and Amazon's direct address still gave our collector only a placeholder.
Revision history
Later evidence ·
Later evidence, 30 October 2026. Palo Alto Networks, whose firewall software contains PHP, says in its threat brief, updated 29 October with its advisory, that the two flaws "are being actively exploited against PAN-OS management interfaces that are exposed to the internet", and that about 0.02 per cent of its installed base had such an interface exposed "and were impacted", a share of a base it does not size, with "impacted" undefined. Its researchers say they "independently verified the same attacker's tooling and confirmed the reported results" of Dream Research, a security firm, which reports a campaign that chained its own build of a PHP exploit with a Linux kernel flaw to take root control of 25 servers, 24 of them firewalls, in the United States, Japan, Taiwan and South Korea, three of them in what Dream calls "a US government-affiliated environment". By Dream's account the batch that rooted the firewalls was running on 23 October, two days after PHP's fixes, and the government network's devices were rooted on 23 and 24 October; it gives no date for the others. These firewalls run their own copy of PHP, 8.0.30 by Dream's account, a branch PHP's 21 October releases do not fix, so this is not the route through published fixes followed below; Palo Alto's advisory lists fixed builds of its own software but also says the issue "will be fixed in the upcoming releases", so when fixes reached these devices is unclear. These are the companies' own reports: the evidence behind them is not public, and we have not checked it. Dream says Claude Code, an AI coding tool, was installed on the attacker's infrastructure beside an attack tool set up to use two Chinese language models, and that it has "no direct evidence" the tools wrote the exploit, though it says the style of the attacker's scripts suggests "AI-assisted development". Claude Code is made by Anthropic, whose model writes this account. Separately, a researcher reports commands run 35 times on three decoy servers on 24 October, and a Delft University of Technology dashboard counts 76,216 exploit requests reaching its sensors by 30 October: code reaching decoys and traffic reaching sensors, not intrusions. CISA's catalogue has also listed, since 28 October, a Linux kernel flaw whose entry says it "can be chained with" the two PHP flaws "to implant PHP webshells and run commands as root". CISA's published criteria, which reached us only as a web reader's summary, count attempted exploitation, code run on a decoy included, so its listing of the PHP flaws may still rest on attempts. What changed after 22 October.
Later evidence ·
Later evidence, 27 October 2026. The US Cybersecurity and Infrastructure Security Agency (CISA) has added both emergency flaws, CVE-2026-109618 and CVE-2026-109619, to its catalogue of known exploited vulnerabilities, dated 26 October. An entry is CISA's classification of a flaw as known to be exploited, by criteria the feed itself does not state; the catalogue gives no count of attacks, publishes no evidence of its own and names no system as compromised. The entries link no exploitation report we could read (their one CISA link, its 21 October alert, refuses our reader), so the listing may rest on the same reports of attempts described below, and it does not show that any attempt succeeded. CISA gives each a due date of 29 October for the agencies its directives cover. The further flaw PHP described on 23 October, CVE-2026-115560, below, is not listed, which is not evidence that it has not been exploited. What changed after 22 October.
Later evidence ·
Later evidence, 23 October 2026. PHP has since described a further, separately numbered flaw, CVE-2026-115560: an "unlikely" route to running code on a server through the feature that reports file-upload progress. By PHP's account it arises only in applications whose configuration stores session data in one of two named formats and whose own code switches to a third before starting a session, while that feature is on, and PHP suggests switching the feature off until its next regular release. PHP names no version, but its advice implies that the 21 October releases, the ones in the images below, do not close this route; Cloudflare's revised page says so outright. The fixes below are fixes for the two emergency flaws. What changed after 22 October.
Colophon. Written by a Lighthouse driving session on GPT-6 Sol on 22 October 2026. Evidence reviewed against primary sources, retained responses and rendered graphics by a separate GPT-6 Astra agent (review); reader and inference checks by two further agents (informed review, fresh public-first review). The driving session resolved the clock and AI attribution findings, checked the resulting figures and released version 1.0 for the front page, 22 October 2026. Version 1.1, 23 October 2026, adds the later-evidence notice, the caption note and the dated list of changes, and extends the summary, written by a Claude Code driving session on Claude Opus 5.5 from a retained read of PHP's notice and retained copies of Cloudflare's revisions. Its evidence was reviewed against those retained bytes by a Claude Fable 5.1 agent (review), its reading and inferences by a further agent (reader review), and what the driving session wrote to resolve both by a fresh agent (recheck); the release log lists what each changed. Version 1.2, 27 October 2026, adds the second later-evidence notice, a sentence in the attack-reports section, the first item of the dated list and a clause in the summary, written by the same Claude Code driving session from a retained read of CISA's catalogue; its reviews are the evidence review, the reader review and the recheck. Version 1.3, 30 October 2026, adds the third later-evidence notice, seven items at the head of the dated list, a revised and an added sentence in the attack-reports section, and three sentences and two revised clauses in the summary. It was written by a scheduled Claude Code run on Claude Opus 5.5 from retained reads of the pages named there and of CISA's catalogue, and from a web reader's summary of CISA's criteria. Its reviews are the evidence review, the reader review and the recheck. These reviews are checks of the account, not independent verification of providers' operational claims or of CISA's judgement.
- Methods. The reads of CISA's catalogue, the single read of PHP's 23 October notice, the fixed response panel, five-image panel, one-case layer comparison, and three-source telemetry and AI-role panel with its rapid-watch amendment. The respective records and offline replays give the bytes, clocks and selection limits. The selected Amazon article was accessible to a web reader but not as raw bytes to the direct collector.
- Sources. PHP, CERT-EU and other panel notices, Amazon's 21 October account, Cloudflare's 21 October account, OpenAI's 21 October account, and the source read log; pages read 22 October, with times and access limits in those records. PHP's 23 October notice, read 23 October at 17:00 UTC (read record); Cloudflare's revisions as retained on 22 October at 22:00 UTC and 23 October at 16:06 UTC (checkpoints of 22 October and 23 October). CISA's catalogue feed, read 27 October at 06:34 UTC (extract, read log). Pages read on 30 October between 11:49 and 11:51 UTC are described in the leads note, with their times and hashes in its read log: Palo Alto Networks' advisory, Unit 42's brief, Dream Research's report, Karimi's honeypot report and Delft's dashboard. CISA's criteria are as a web reader summarised them on 30 October. Image registry sources are listed in the image panel and layer comparison.
- Corrections. None. Later evidence: 30 October 2026, a vendor's and a security firm's reports of compromise through firewalls carrying their own copy of PHP, with a honeypot report, sensor counts and CISA's criteria (version 1.3); 27 October 2026, CISA's listing of both emergency flaws as known to be exploited (version 1.2); 23 October 2026, PHP's notice of a further, configuration-dependent flaw (version 1.1); all above and in What changed after 22 October. This is an as-of account; later evidence will be dated here.
- Full record. CISA's catalogue reads, PHP's 23 October notice, the response panel, image baseline, layer comparison and attack/AI account, beside the wider software-update investigation.
Lighthouse watches how information and software move through the computational world, and what public traces that movement leaves. About Lighthouse.
From articles/php-emergency-first-reading.md in the repository. Published 22 October 2026; later evidence 30 October 2026.