for agents/llms.txtv0.13.56

Home / Articles / The false positives are the next incident: Jeremiah Grossman's warning about php2shell scanners, checked against what the evidence holds a day later

The false positives are the next incident: Jeremiah Grossman's warning about php2shell scanners, checked against what the evidence holds a day later

By · 2026-10-23 · article v1.0.0 · newsroom v0.13.55 · php2shellscannersfalse-positivesdetectionevidencearticle

Abstract: On the evening of 22 October, Jeremiah Grossman wrote on LinkedIn that "the false-positives for php2shell from makeshift scanners is what's going to be apocalyptic". I replied that, as of the night before, there was no public record of a company being hit. Both things are true, and the data the PHP story's source watch captured by midday on 23 October shows why they belong together. One scanner maker says most scanners in circulation read the version string, and a version string cannot see a distribution's backported fix: one user has already reported a check script calling Ubuntu's patched PHP vulnerable. One account opened 53 templated "heads up" issues, each saying it may itself be a false positive. A detection guide withdrew its own ModSecurity rule because it never fired. Against that, the compromise map holds millions of attempts and no named organisation saying php2shell was the way in. When the noise is this loud and the confirmed signal this quiet, the false positives are not a side effect: they are what organisations act on, and switching a patched site off because a makeshift scanner said so is an incident of its own.

Jeremiah Grossman's LinkedIn post: "The false-positives for php2shell from makeshift scanners is what's going to be apocalyptic." 32 reactions, 8 comments and 1 repost when the screenshot was taken on 23 October 2026.

In short

The post, and my reply

On the evening of 22 October (UTC), Jeremiah Grossman, chief executive of Root Evidence, posted on LinkedIn: "The false-positives for php2shell from makeshift scanners is what's going to be apocalyptic." It is a short, cheeky line, and an important one. I replied under it with a pointer to the PHP story site: as of the night before, there was no public record of a company being hit.

The two statements are not in tension. They describe the same situation from two sides. When the confirmed damage is small and the fear is large, what organisations act on is whatever their tools tell them. If the tools are wrong, the action is wrong too. So I asked the PHP story's researcher to make it a research angle: how good the scanners and detection rules are, who reports them getting it wrong, and how the noise flows. The brief is public, and by 12:40 UTC on 23 October the source watch (vault oq9gflln) had twelve captured pages in it, each with its snapshot and hash.

The twelve pieces of evidence in the scanner-noise angle, captured 12:38 to 12:40 UTC on 23 October 2026: scanner method, a false positive, a false negative, a claim to test, a bulk notification, volume, two detection limits, coverage, scanner templates and two scanner releases.

Why a version check gets it wrong

There are two ways a scanner can decide that a server is vulnerable. It can read the version the server advertises, in a banner, a header or the output of php -v, and compare it with the fixed release. Or it can try to produce the fault, harmlessly, and see whether it appears.

The first is quick to write and wrong in a predictable way. Linux distributions backport fixes into their own packages without changing the upstream version number. Ubuntu's patched PHP 8.5 package is 8.5.4-0ubuntu1.5, listed as fixed (the Konfirmity advisory collects the distributions' fixed packages and says it plainly: "Distributions often backport the fix without changing the PHP version number"). The upstream number in that package is still 8.5.4, below the fixed upstream release, 8.5.12. A scanner that reads 8.5.4 says vulnerable. The server is fixed.

That is not a hypothetical. In the watch:

Two ways a scanner decides, on the same patched Ubuntu server: reading the version string gives a false positive; trying to produce the fault gives the right answer.

The noise is already in bulk

A false positive in one scanner is a bug. A false positive sent to many people at once is noise, and it scales.

These are search counts, and they move as GitHub's index updates. The watch tracks them as what the page showed, every pass. The direction matters more than the exact number, and I will report it as it moves.

Detection rules fail in both directions

Scanners look at servers; detection rules look at traffic. They have the same problem from the other side.

None of this is a criticism of the people doing the work. It is what the first days of a new class of flaw look like: tools written fast, corrected in public. The problem is that the people downstream act on the first version.

A quiet signal under a loud alarm

Put the noise next to the PHP story's compromise map, as it stood at 20:50 UTC on 22 October. Millions of attempts against sensors, honeypots and edges. Exploitation reported by three vendors, none naming a victim. One named organisation saying it was attacked, with success not stated. Zero named organisations saying php2shell was the way in. That is a time-bounded absence, not proof that nothing happened, and one statement from one organisation would end it.

Lots of alarms, no named victim: the compromise map's layers on 22 October at 20:50 UTC (millions of attempts, 3 vendors reporting exploitation, 1 named organisation attacked, 0 saying php2shell was the way in) next to the scanner noise by 12:38 UTC on 23 October (53 templated issues, 62 false-positive issues, 10 nuclei-templates issues).

This is where Jeremiah Grossman's word, apocalyptic, earns its place. Organisations across Europe switched websites off as a precaution on 21 and 22 October. When nobody can say quickly whether a site is safe, a scanner's red line is the deciding fact. A false positive on a patched Ubuntu server becomes a ticket, then an escalation, then a site taken offline, for real people who needed it. Multiply that by every makeshift scanner and every bulk notice, and the cost of the noise can exceed the cost of the attacks we can see. It is an incident of its own, and it is not in anyone's breach count.

It also feeds the problem I wrote about in who maintains the PHP you run?. A site with somebody paid to know it can answer "is this a false positive?" in an hour. A site that was built, launched and left cannot, so it gets switched off.

What to do with a scanner's answer

What would settle it

The PHP story's board has a lab test on it, owned by its cyber desk and waiting for my go: run the public scanners against a distribution-patched PHP (for example Ubuntu's 8.5.4-0ubuntu1.5) and an unpatched one, in an isolated lab, and record which ones get each right. It tests the tools, never anyone's systems. That would turn this angle from reports into measurements, and I think it is the most useful thing the newsroom can do about this next. The watch, meanwhile, measures the noise every pass: the issue searches, the templated notices, the nuclei-templates issues, and Hacker News comments on php2shell scanners. The places where people complain most about their tools, Reddit, X, Bluesky and LinkedIn, give the watch a sign-in page, so an external collector covers them.

What this does not claim

Where this comes from

Jeremiah Grossman's LinkedIn post of 22 October 2026, and the screenshot I took of it on 23 October; the PHP story's scanner-noise brief and its twelve captured pages in the source watch (vault oq9gflln, index/angles/scanner-noise.json), from Help Net Security, Digital Today, GitHub, a community detection gist, Cloudflare, Equixly, the OWASP Core Rule Set and nuclei-templates; the Konfirmity advisory for Ubuntu's fixed package; and the PHP story's compromise map. Related: who maintains the PHP you run?, the maintenance deficit, with evidence, PHP October 2026, at 8pm. Written up and checked by this site's agent, newsroom.writer; the editorial responsibility is mine.

Threads

News & evidence This article as a graph →

No other article links here yet.

All articles · All graphs

Article No. 266 · start a reading list with it

Want the next issue by email. One issue a week or so: what was published, what it adds up to, and what is worth your time. Subscribe to the SGit Newsroom →

← All articles

Reviews

Reviews on the record, by agents, the editor and the desk, against the criteria. Each is kept for good and answered finding by finding. All reviews →

No reviews yet.