In the space of about five weeks this autumn, AI systems turned a forgotten PHP error into remote code execution, produced working root exploits for 948 Linux kernel flaws in a single run, and built a remote takeover for a kernel bug dating back to 2016. None of the code was new. The reader was.
There is a particular kind of embarrassment that only old code can produce. Not the bug you shipped last sprint — the one that has been sitting in production since before some of your team finished school, reviewed, patched around, and generally stared at by hundreds of competent people. This autumn, that embarrassment arrived at scale, and it arrived with receipts.
Since the start of September, a run of critical vulnerabilities has surfaced across the software almost everything else stands on: the Linux kernel, the PHP runtime, and — in a different and arguably more uncomfortable way — cPGuard, a security product whose whole job is to protect web servers. The details differ. The pattern does not. In case after case, the flaw was not new, the exploit had simply been too fiddly, too slow, or too unrewarding for a human to bother building. Then someone pointed an AI agent at it, and the economics flipped.
Google’s Threat Intelligence Group put numbers to the shift on 30 September. Monthly vulnerability disclosures, it said, had roughly doubled over the course of 2026 — from 5,045 in January to 10,740 in August — and the flaws it attributes to AI discovery were twice as likely to end in remote code execution as the average bug: 50 per cent, against 26 per cent across the wider CVE ecosystem. Read that second figure slowly. AI is not just finding more bugs. Left to wander through a codebase, it tends to find the bad ones.
At a glance: the autumn cases
PHP2Shell — PHP runtime
Two CVEs in PHP’s core engine allowing unauthenticated remote code execution. Every release back to PHP 5.4 carries at least one of the flaws.
- CVEs
- 2026-109618 / -109619
- Fixed
- 21 Oct 2026
- Patch to
- 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35
- Found by
- Calif, Wiz & OpenAI (independently)
Linux kernel — one AI run
OpenAI’s automated pipeline produced working local privilege-escalation exploits and candidate patches for 948 distinct kernel flaws in a single mid-October run.
- Candidates
- 2,308
- Working exploits
- 1,169
- Run cost
- $1.21m in API credits
- Published
- 4 Nov 2026
CVE-2026-98432 — Linux TCP
A use-after-free in IPv4 TCP handling, present since kernel 4.4 in 2016. An unreleased Claude model turned it into a remote root exploit in about 53 minutes.
- Affects
- Kernels from 4.4
- Upstream fix
- 15 Oct 2026
- Needs
- Multipath TCP listener
- Reported by
- Anthropic Frontier Red Team
Vghost — Linux vhost
CVE-2026-74580, in the kernel’s vhost subsystem. Local users can reach root; in one virtualisation setup a guest VM can reach its host. Present for close to ten years.
- Affects
- Kernels 4.11 – 7.2-rc4
- Write-up
- 12 Oct 2026
- Found by
- Tencent Zhuque Lab — Corvus AI
cPGuard — update channel hijack
Not an AI-found bug — a compromise. Attackers pushed a fake update through the security tool’s own channel; it ran as root on about 2,950 servers and harvested credentials.
- Window
- 2 Nov, 02:08–03:20 UTC
- Bad versions
- 5.88.12 – 5.88.19
- Clean release
- 5.88.26
- Accounts exposed
- ~7,900 billing accounts
PHP2Shell: the out-of-memory error nobody feared
Start with the strangest one. For years, PHP had a known, slightly boring problem: when a request ran out of memory, the cleanup that followed could leave the engine’s internal state in a mess. A PHP core developer had spotted the underlying issue in a 2024 audit. It stayed on the pile, because nobody could show it was actually exploitable — and an unexploitable bug, in a project drowning in reports, is a bug that waits.
AI did not wait. In August, three groups converged on the same root cause independently. Calif, auditing PHP under OpenAI’s Patch the Planet programme, reported an exploitable path on 11 August. Wiz, using its Atlas tooling alongside Gemini 4 Argon and GPT-5.6 Sol, found its first flaw on 19 August, had code execution against Drupal the next day and WordPress the day after, and reported on 24 August. What they had, collectively, was four memory-safety bugs — use-after-free flaws and an OPcache type confusion, all triggered by how PHP tidies up after a fatal error — grouped under two CVEs, both scored 9.2.
The uncomfortable part is the blast radius. PHP runs roughly 70 per cent of websites whose server-side language can be identified. The flaws live in the runtime itself, so they sit underneath every plugin and every line of application code; Wiz’s line, repeated everywhere since, is that even a “Hello World” page was enough. One variant could also read a worker’s memory and hand back other people’s passwords, tokens and API keys inside a session cookie. Fixes landed on 21 October in PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35 — a day early, after the CVE identifiers leaked — and four engineers had spent about two months on the patch. Amazon’s honeypots, meanwhile, had recorded an exploitation attempt on 17 October. Four days before disclosure.
“An embargo protects defenders only until someone else finds the same bug.”— Wiz Research, on PHP2Shell, October 2026
That sentence is the whole story in miniature. Coordinated disclosure assumes the finder is roughly unique. When three teams — and, apparently, at least one attacker — can all reach the same bug in the same few weeks, the quiet period stops being a safety margin and starts being a head start for whoever moves first.
Linux: 948 ways to root, and one very old TCP bug
If PHP2Shell was about depth, OpenAI’s kernel run was about sheer throughput. Published on 4 November under the title “A thousand fewer paths to root”, it describes a pipeline of specialised agents let loose on the security-sensitive parts of the Linux kernel: scouts picked 5,034 audit targets covering about 2.8 million lines of code, triage agents reproduced suspected flaws in virtual machines, and exploit agents then tried to turn them into working privilege escalations against a stock system with the usual protections — SMEP, SMAP, KASLR — switched on.
Some perspective helps here. These are local privilege escalations: an attacker needs a foothold first, so this is not 948 remote doors into every Linux box. But a foothold is exactly what PHP2Shell provides, and reports already describe the two being chained to reach root. Ten days after the run, OpenAI said 61 of the flaws were patched upstream and hundreds more were in reporting. In July, the previous model had found 166 such bugs. Five times the yield, three months later, against a kernel that had been hardened in between — that trajectory, more than any single number, is what should worry maintainers.
Anthropic’s contribution was smaller and, in its way, sharper. On 27 October its Frontier Red Team described five exploit chains built by an unreleased Claude model, covering Chrome, Safari, Android, Windows and Linux. The Linux one targeted CVE-2026-98432, a race-condition use-after-free in TCP connection handling introduced in kernel 4.4 — in 2016. Against a server running a multipath TCP listener, the model leaked a kernel address to defeat KASLR, then reused the same bug to run commands as root. Forty-eight minutes for the leak, five more for the shell. The upstream fix — four lines — had landed on 15 October, yet days later Ubuntu still listed its kernels as vulnerable and Red Hat was only just raising the bug to Critical. Discovery is now fast. Distribution, apparently, is still distribution.
And then there is Vghost, found by Tencent Zhuque Lab’s Corvus AI system and written up on 12 October: a flaw in the kernel’s vhost subsystem, created when two reasonable changes from kernels 4.11 and 5.9 combined badly, and left in place for close to a decade. Either change alone was fine. Together, they gave a local user kernel read/write — and, in one setup, a route from a guest virtual machine to its host. No single human reviewer ever held both changes in mind at once. An agent, trawling the whole history without getting bored, did.
cPGuard: when the guard itself is the door
cPGuard belongs in this article for a different reason, and it is worth being precise about it: there is no evidence its compromise was an AI discovery story. What happened, per OPSSHIELD’s own disclosure on 3 November, is a supply-chain attack. An attacker registered a trial account, reached the company’s billing and licensing server, stole an update-storage key, and pushed a fake cPGuard update through the channel customers trust by default. For 72 minutes in the early hours of 2 November, versions 5.88.12 to 5.88.19 were served to servers that updated automatically. About 2,950 of them ran the script — as root, because a security agent runs as root.
The script did what you would fear: it read /etc/shadow, SSH keys, database credentials and shell histories, packed them into an archive, and left behind a hidden setuid-root shell and a cron job. Billing data for roughly 7,900 accounts was also exposed. The clean release, 5.88.26, removes the backdoor — but, as responders were quick to point out, removing the malware does not un-steal a private key. Anyone affected has a rotation problem, not just a patching problem.
Why include it alongside the AI cases? Because it is the other half of the same squeeze. Defenders are being told, correctly, to patch faster than ever, because AI has shortened the distance between a bug existing and a bug being exploited. But patching fast means trusting update channels completely and automatically — and cPGuard is what that trust looks like when it is abused. Speed and trust now pull in opposite directions, and nobody has a clean answer for that yet.
The part that actually changed: the economics
Strip away the headlines and three things have genuinely shifted. First, finding bugs in old, widely reviewed code is no longer scarce labour. The scarce labour is triage: PHP’s maintainers handled 15 CVEs and more than 100 invalid or duplicate reports in the same period, and kernel maintainers have warned openly about the burden of AI-generated reports. Second, exploiting a bug — historically the expensive, artisanal step, the reason a 2024 PHP curiosity could safely sit in a pile — is collapsing in cost. Two weeks for Calif’s researcher to reach remote code execution. Fifty-three minutes for Anthropic’s model. About $1,279 per validated kernel flaw for OpenAI. Third, the window after disclosure is shrinking from the other side: Google observed one AI-found BeyondTrust flaw, CVE-2026-1731, being exploited by a threat cluster within four days of disclosure, and by five more within a week.
For developers, that adds up to a new kind of pressure. “Nobody would bother exploiting that” — the quiet assumption underneath a decade of deferred fixes, odd edge cases and memory-unsafe legacy code — is no longer a safe assumption. Agents bother. They bother at 3 a.m., across the entire history of your repository, without prioritising the parts you would prefer they looked at. The honest counterweight is that the same tooling is producing patches, not just exploits: 948 candidate kernel fixes in one run, AI-assisted validation of the PHP patch, coordinated pre-disclosure briefings for PHP2Shell that had mitigations ready on day one. Developers are on their toes partly because attackers got faster, and partly because, for the first time, defenders can plausibly keep up — if their patching, testing and update infrastructure can move at the speed the findings now arrive.
Timeline: September to November 2026
Google GTIG report. “Vulnerability discovery and exploitation trends in the AI era” — disclosures doubled in 2026; 50% of AI-attributed flaws lead to RCE.
Vghost write-up. Tencent Zhuque Lab publishes CVE-2026-74580, found by its Corvus AI system; the fix had landed upstream in August.
Kernel TCP fix. Upstream fix for CVE-2026-98432, the use-after-free dating to kernel 4.4 (2016).
Exploitation before disclosure. Amazon’s MadPot honeypot records a PHP2Shell attempt — four days before the public disclosure.
PHP2Shell patched. PHP ships 8.5.12, 8.4.27, 8.3.36 and 8.2.35; the release is pulled a day early after the CVE IDs leak.
Anthropic’s five chains. Frontier Red Team shows an unreleased Claude model building exploits for Chrome, Safari, Android, Windows and Linux.
cPGuard hijack. A fake update runs as root on ~2,950 servers in a 72-minute window; OPSSHIELD discloses the next day.
948 Linux flaws. OpenAI publishes “A thousand fewer paths to root” from its mid-October Patch the Planet run.
The discussion online
The reaction split, predictably, between “this changes everything” and “read the methodology”. Both threads are worth following — these are the posts and write-ups that shaped the conversation, with the reporting behind each card linked.
“In a single run with an upcoming cyber model, it validated and generated patches for 948 local privilege escalation vulnerabilities in the Linux kernel at a total API cost of $1.2 million.”
See the post in context →Two stories landed side by side: IEEE Spectrum’s “AI is forcing us to pay off 40 years of technical debt” on PHP2Shell, and OpenAI’s kernel run — and the comments argued, mostly, about whether maintainers can survive the volume.
Read a community write-up of the debate →A week on from disclosure, Wiz reported the number of internet-exposed vulnerable machines falling — but less than 53% of initially affected organisations had fully remediated, and exploit kits were already circulating.
Read Wiz’s follow-up →“An AI model turned a kernel bug into remote root with little help, in under an hour, and the fix took days to reach RHEL and still hasn’t reached Ubuntu.” A running tally of which distributions had actually shipped the fix.
Read the patch-status post →What to do this week
None of this asks for panic. It does ask for a shorter to-do list, done sooner. Tap each item as you clear it — the counter is just for this visit.
Tick them off as you go — PHP, kernel, cPGuard, secrets, and backups.
- PHP: move every host to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 or later. If you are on 8.1 or older, there is no official fixed release — plan the upgrade, and use the interim mitigations in the PHP advisories meanwhile.
- Kernels: confirm your distribution’s kernel includes the fixes for CVE-2026-98432 and CVE-2026-74580 — do not assume “upstream fixed” means “installed”. Check Ubuntu and RHEL status explicitly; both lagged.
- cPGuard: if any server installed an update on 2 November, update to 5.88.26, check for /var/tmp/.cpg91511_sh and /etc/cron.d/i93677, and rotate root SSH keys, database passwords and any secret that lived on the box.
- Exposure: inventory multipath TCP listeners and forgotten PHP — containers, appliances and that one WordPress install — before someone else’s agent inventories them for you.
- Process: shorten your patch window for critical runtime and kernel flaws, and rehearse secret rotation. Four days from disclosure to exploitation is now a documented case, not a hypothetical.
The old bugs are not going to stop coming; if anything, the autumn’s run-rate says the backlog of “known but unexploitable” is going to be worked through in public, one agent-run at a time. The teams that come out of this well will not be the ones who found a way to ignore it. They will be the ones whose boring machinery — inventories, update channels they actually verify, rehearsed rotations — was ready before the interesting news arrived.
Sources & further reading
- Wiz Research — PHP2Shell exploitation attempts and remediation trends. wiz.io/blog/php2shell-exploitation-so-far
- Cloud Security Alliance — PHP2Shell: exploitation before disclosure for an AI-found flaw. labs.cloudsecurityalliance.org
- Patch guidance — PHP critical RCE: patched versions and mitigations. canberk.me
- Cyber Security News — OpenAI cyber model uncovers 948 Linux kernel privilege-escalation vulnerabilities. cybersecuritynews.com
- TuxCare — CVE-2026-98432: Claude’s claimed root exploit and which distros are patched. tuxcare.com/blog/cve-2026-98432-linux-tcp-remote-root
- Aviatrix Threat Research — CVE-2026-74580 “Vghost”, AI-discovered Linux kernel privilege escalation. aviatrix.ai
- Security.io — cPGuard update-channel compromise requires root-level secret rotation. security.io
- CIQ guide — AI-found vulnerabilities: how Linux teams keep up. ciq.com/guides/ai-found-vulnerabilities-linux-security
Vendor advisories remain the authoritative source for patching: check php.net for PHP releases, your distribution’s security tracker for kernels, and OPSSHIELD’s notice for cPGuard before acting on any summary — including this one.

Leave a Reply