200

The most dangerous response is the one that looks fine.

A security filter, switched off by a name

Black October: from a token bill to a security advisory, and what disclosure really takes.

Colin McNamara · Austin, November 2, 2026

Everything here is public: the advisory, the pull requests, and a lab built on a neutral stub.

follow along

Who’s patched PHP since October 21?

One quarter of 2026 published more CVEs than the first nine months of 2025.

Finding scales with compute. Fixing doesn’t.

12,796Q412,009Q111,701Q211,738Q320252026Q115,154Q220,696Q3Q1 to Q3 combined: 35,448not yetQ436,962in July to September alone:more than the first ninemonths of 2025 combined35,4482025, Q1 to Q336,962

Source: CVE Program metrics, cve.org, published CVE records by quarter, updated October 5, 2026. Published records, not discovery dates. Most have no confirmed exploitation yet: that’s the window to fix them.

At work, I was near the top of the Claude Code bill.

my coding agentsClaude CodeOpenCodeCodexvLLM Semantic Routerone control pointmodelson my own labAnthropic API:not fully supported yetAnthropic API:mostly works nowvLLM #55325Router #4266Router #4391Router #4539Router #4658Router #4901Switchyard #884Router #5150Data Plane & Networking working groupmember since Oct 9

That’s where the fixing started.

So I started fixing it. Eight fixes, all merged, and I’m still burning down the rest.

One policy, enforced once, for every app.Me, four weeks ago. Mixture of Models, Austin, October 5, 2026.

October 10. Building a lab to show it off, I found one that wasn’t a bug in my client.

vLLM Semantic Router, which I use and contribute to. GHSA-xr66-pq9r-2c8j, high severity.

How it got in: every step made sense on its own.

Mar 2025An inference extension chart and the router use the bare nameharmless thenJul 2025Istio files per-route settings by nameships in Istio 1.27Nov 2025The router's Istio setup lets a client header pick the poolreachable from hereMar 2026The chart renames its filter as a routine fixno channel to share itOct 10, 2026found

The fix: give the router’s filter its own name. Check yours: look for the name twice in the gateway’s config.

That felt like the end of the story. It was the middle.

Sources: each project’s public pull requests; the analyze warning is proposed in istio/istio#62560. When it became reachable is my reading of the history.

My own AI tools locked me out.

the workClaude CodeReproduce the bypassWrite the disclosure handoffExplain the bug, as slidesReview the fixstoppedstoppedstoppedfineso I went localQwen 3.8 27Bopen weights, on my own GH200ran the reproductionwrote the patcheshelped guide the disclosure

Defenders need capable models they control.

The door I knew of asked for an assigned CVE or a security-research employer. Anthropic’s Cyber Verification Program is wider now: maintainers and individual researchers can apply.

The fix came with the report. Six days to a public advisory.

memaintainersOct 10foundOct 12reported, fix attachedfixOct 16accepted,fix approved as writtenOct 18my patch merged to mainOct 18advisory published,CVE requested viaGitHub’s CNAprivate: 6 dayspublic, fix on mainnexta tagged release

MergedOctober 18Releaseup nextDeployedup to you

No need to wait for the release: rename the filter in your gateway, or run main.

Fixed in one project. The same pattern was running in others.

Then I had to find people.

mevLLM Semantic Routerfixed and publishedsearched GitHubupstreamIstioanalyzer warning, PR #62560Gateway API Inference Extensionnaming guidance in docs, PR #3078other projectssame filter name,similar Istio setups…Security contacts that bounce.Projects with no private way to report.???Maintainers you can reach only by guesswork.Volunteers with no time left to answer.

Every one of these is a manual handoff, running at human speed.

Writing the fix took less time than writing the messages.

The best handoffs happened in a hallway.

GrokBotmy list × exhibitors × speakerssessions worth attendingexhibitors on my listspeakers on my lista schedule to find themPyTorch Conference and AGNTConentranceon my listowned the fix on their side

A security handoff shouldn’t depend on being in the same hallway.

Where the time went, in my own case.

Oct 10Oct 18Oct 30Find ita day, with AI in the loopReport to advisory6 daysHandoffs to other projectstwo weeks, nights and weekends

Finding took a day. The handoffs took two weeks of nights and weekends.

Dates from the public advisory and my notes.

How do we solve this?

AI-written codeAI-found bugs3×the published CVEsof a year agomaintainers,mostly volunteersGitHub now rate-limitsvulnerability reportsAttackers: agentic speedUs: email, like it’s 2008…

Sources: CVE Program metrics, published CVE records, Q3 2026 against Q3 2025 (cve.org); GitHub changelog, October 1, 2026: rate limits for private vulnerability reports.

What it would take, and who’s on it.

findingsCommunicationhandoffs in seconds,not daysRemediationsoftware factory: fixes andbackports, a person approves eachPeoplepay the maintainersSAFE, at OSAIAOpenSSFOSV, CSAF and VEX, CVE ServicesOSS-Fuzz and CodeMenderOpenSSF OSS-CRSAkrites, Linux FoundationAlpha-OmegaSovereign Tech AgencyGitHub SecureOpen Source Fund

Nobody has the whole thing yet.

Black October is only the start.

October was the first month of a quarter nobody has counted yet.

yourprojectbouncedlandsBe reachableTurn on private vulnerabilityreporting. Keep a securitycontact that answers.envoy.filters.http.ext_procenvoy.filters.http.ext_procthe findingvllm-semantic-router.ext_proc+ the fixBring the fixFound one? Send the patch withthe report. Running this stack?Look for the name twice, rename.Peopleyou+Show up forthe maintainersReview and backtest upstream, not aflood of AI pull requests. Giveengineers 20% time. Fund thefoundations.

Finding already scales with compute. Now fixing has to.

Let’s get good at this, fast.

What are you seeing?

Colin McNamara · colinmcnamara.com/connect · linkedin.com/in/colinmcnamara · github.com/colinmcnamara

stay in touch
📬 Get the write-ups by email