← All posts

· 6 min read

The AI Bug Hunt Is the Best Argument for Open Source

If you've looked at a CVE feed at any point this year, open source looks like it's on fire. PHP, NodeJS, OpenSSL, wolfSSL, Firefox, the BSD kernels, random libraries buried four layers deep in your dependency tree. Every week there's another critical with a CVSS score that makes you wince.

I was talking about this with a mate the other day, and the obvious take is “see, open source is dangerous, AI can read all the code and pick it apart.” I reckon that’s exactly backwards. I think this is the best argument for open source we’ve ever had.

Why the CVE count exploded

AI models got genuinely good at reading source code and spotting bugs, and open source is the easiest thing in the world for them to read. It’s all just sitting there on GitHub.

The numbers from this year are wild:

  • OpenSSL: all 12 zero-days in the January 2026 release were found by AISLE’s AI system, and in five cases its proposed patches went straight into the release. One was a 9.8 stack overflow in CMS parsing.
  • Project Glasswing: Anthropic pointed Claude Mythos Preview at 1,000+ open-source projects and flagged 23,019 issues, 6,202 of them high or critical. One was a cert-forging bug in wolfSSL (CVE-2026-5194, CVSS 9.1).
  • Firefox: Mozilla fixed 271 vulnerabilities in Firefox 150 while testing Mythos, over ten times what an earlier model found.
  • Unit 42: Palo Alto’s NOVA platform reported 14,000+ new vulns across nearly 4,000 open-source projects in two months.

FIRST is now projecting around 66,000 CVEs for 2026, and they put most of the blame on AI bug hunting. So yeah, it looks bad. But look at who is getting the attention.

The “2Shell” year

If you want proof of where this is heading, look at the big named bugs of 2026. Ever since React2Shell (CVE-2025-55182, CVSS 10) hit React Server Components and Next.js in late 2025, every major pre-auth RCE seems to get a “something2Shell” name. This year’s crop hit the core of the web stack, and every one of them was found with AI help.

Bug CVEs What it is Found by Status
Node2Shell CVE-2026-111497 Out-of-bounds write in the Brotli decoder bundled with Node.js. A crafted Content-Encoding: br body can get RCE, and express.json() alone is enough exposure. Khai Tran and Sylvie Mayer, OpenAI Codex Security Patched 21 Oct in 22.23.4, 24.22.1, 26.12.1. Public PoC got code execution on the official 24.22.0 image. Node 20 and other EOL lines get no fix.
PHP2Shell CVE-2026-109618, CVE-2026-109619 Memory corruption in PHP core: out-of-memory handling and stale state across requests. Pre-auth RCE on stock WordPress, Drupal and Joomla images. Calif (GPT-5.6 Sol, OpenAI’s Patch the Planet) and Wiz (Gemini 4 Argon + GPT-5.6 Sol), independently Details leaked 20 Oct, emergency patch 21 Oct (8.5.12, 8.4.27, 8.3.36, 8.2.35). Affects PHP 5.4 onwards. Exploitation attempts already reported.
WP2Shell CVE-2026-63030, CVE-2026-60137 WordPress core REST batch-route confusion chained into a WP_Query SQL injection. Pre-auth RCE, no plugins needed. Adam Kues, Searchlight Cyber, with GPT-5.6 Sol Patched 17 July (6.9.5, 7.0.2) with forced auto-updates. Exploited in the wild within days.

A few things jump out at me:

  • These bugs were old. PHP2Shell reaches back through basically every PHP version since 5.4. Humans had over a decade to find it and didn’t.
  • AI found them in days, not months. Kues said the WP2Shell chain took about 10 hours of model time and roughly $25. Wiz reckons one researcher with frontier models did in a week what used to take a team months.
  • It all got fixed, in public. Coordinated disclosure, patches, advisories, WAF rules from Cloudflare, AWS, Akamai and the rest. That’s the open-source immune system working.

As someone whose whole stack is Laravel on PHP with React and Node on the front, this week was not fun. But I’d much rather the bugs in my stack get found by OpenAI and Wiz and patched on a Tuesday than sit there quietly until someone less friendly finds them.

The flip side: open source is getting swept clean

Every one of those bugs was already there. AI didn’t put a 17-year-old RCE into FreeBSD’s NFS code, it just found it. The CVE spike isn’t open source getting worse, it’s open source finally getting the code review it never had the budget for.

And it’s a finite job. There’s a lot of open-source code out there, but it’s not infinite. Defenders, vendors, researchers and AI labs are all trawling the same public repos right now. Give it a year or two and the big, critical, widely-used projects will have been gone over more thoroughly than any human audit team could ever manage. The low-hanging fruit gets picked, reported and patched.

That’s the bit people miss. The pain is front-loaded. Open source is taking its beating now, in public, and coming out the other side hardened.

Closed source: sitting ducks

Now think about the closed-source stuff. Proprietary router and firewall firmware, PBX appliances, the embedded junk in every IoT gadget, line-of-business apps nobody has touched since 2014. That code has bugs too. Statistically it has just as many, probably more, because fewer eyes have ever been on it.

The difference is nobody outside the vendor can point a model at the source. So those bugs aren’t getting found and fixed in a big public sweep. They’re just sitting there.

Security through obscurity was always a weak argument. In the AI era it’s worse than weak, because the only people who can see inside are the vendor (if they bother) and whoever eventually gets hold of the code through a leak or a breach. That’s not a group I’d want deciding when my bugs get found.

Fair caveats

I’m not going to pretend it’s that simple. A few things push back on my argument:

  • Closed source isn’t actually invisible. AI can work on binaries too: decompiling, fuzzing, poking at running systems. Mythos reportedly found bugs across every major OS and browser, closed ones included. It’s slower and harder than reading clean source, but it’s not a wall. Closed source buys time, not safety.
  • Found isn’t fixed. This is the big one. Reporting on Glasswing says under 1% of what Mythos found had been patched at that point. Plenty of open-source projects are one tired maintainer with no time to triage a flood of reports.
  • Patched isn’t deployed. A fix upstream means nothing if it’s sitting in a router that hasn’t had a firmware update since 2019. Anyone running carrier or MSP gear knows this pain. PHP2Shell only got official fixes for 8.2 to 8.5, and Node2Shell skips Node 20 entirely, so anything older is relying on distro backports or paid extended support.
  • New code keeps coming. “All the bugs found in two years” assumes nobody writes new code. They do, and a lot of it is now AI-written too. It’s an ongoing sweep, not a one-off cleanup.

It also cuts both ways. PHP2Shell details leaked the day before the patch and exploitation attempts started straight away. Researchers digging through exposed ransomware infrastructure found the crew had used AI agents to develop a WP2Shell exploit. And Node2Shell’s fix quietly landed in the upstream Brotli repo back in February with no advisory, so anyone reading commits had months of head start. Open code means attackers can read the patches too.

None of that kills the argument though. It just means the advantage goes to open source with someone actually maintaining it, and to people who actually patch.

My vote

Open source, and it’s not close.

Right now open source is taking its medicine in public. Every bug that gets found, gets a CVE and gets patched is one less bug waiting to be found by someone with worse intentions. Closed source is skipping the medicine and hoping nobody notices.

In a couple of years I reckon the picture flips. Well-maintained open source will be the most heavily audited code on the planet, and the scary headlines will be about closed-source gear with a decade of undiscovered bugs suddenly being cracked open.

If you’re picking a platform today, I’d pick the one where the whole world, AI included, is allowed to check the work. Then make sure you’ve actually got a process for applying the patches.