Free PHP2Shell checkers answer one of three narrow questions: what your server announces, how it behaves under a test request, or what a vendor's platform found. An unauthenticated external scan can't reliably establish the exact installed PHP package or its backport status. Tools with authenticated or agent access to the host can inspect package details and patch status, which is why the check that settles it runs on the server. The complete PHP2Shell guide covers both flaws in full. This page covers the tools, which of them can hurt a live server, and where the real check happens.
You're potentially exposed until the exact running build and vendor patch status are verified if: PHP serves your web requests and reports a version below 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or runs on an older branch.1 A version string alone doesn't prove exposure, because a vendor backport can carry the fix under an older-looking number.2 You're not exposed if: you run one of the fixed releases or later, or your vendor confirms a build with the fixes for both CVEs. A scan can't change that answer, and a clean scan is not proof of safety. CISA added both CVEs to its KEV catalog on 26 October, so exploitation is confirmed.3 Status as of 3 November 2026.