The process is the product
How we work
Last updated:
Every engagement follows the same steps, and every step is recorded in your report.
Every engagement, step by step
Each step shows who does it.
-
Step 1: Authorize
You
You sign an authorization naming exactly which servers and sites are in scope. Nothing happens without it.
-
Step 2: Inventory
Our delivery system
Every PHP runtime, how it runs, the CMS, plugins and dependencies, on authorized systems only.
-
Step 3: Verify
Our delivery system
Patch status per CVE, from packages and configuration, never from the version string alone. We never run exploits.
-
Step 4: Review
Approver of Record
A named person at Oakshield, the Approver of Record, reviews every finding and signs your report. Every review is logged in your report.
-
Step 5: Report
Approver of Record
A signed evidence report with per-CVE status, evidence levels, UTC timestamps, open issues and the approval log.
Evidence levels
A version number doesn’t establish patch status (source: AlmaLinux), so every status in a report says how we know it.
| Level | Name | Meaning |
|---|---|---|
| 1 | Runtime-verified | Confirmed on the running PHP process, for example worker start times after the package install, or a live configuration value. |
| 2 | Package-verified | The installed package’s changelog or manifest cites the fix, but the running processes weren’t confirmed. |
| 3 | Host-attested | The host confirmed it in writing (status page or ticket). We couldn’t inspect the server. |
| 4 | External indicators only | What the internet can see. All the free check can ever give you, and not proof either way. |
Every report also lists known open issues. As of October 23, 2026, that always includes CVE-2026-115560, which no PHP release fixes yet (source: php.net advisory on CVE-2026-115560, October 23, 2026). That’s why we never say “fully patched”.
Who approves what
| Decision | You | Approver of Record | Our delivery system |
|---|---|---|---|
| What’s in scope | Approves (signed authorization) | — | Enforces it; refuses anything else |
| Access | Grants least privilege, and removes it at the end | — | Uses it read-only |
| The report | Receives it | Reviews and signs | Drafts it from structured findings |
Names appear on your own report, never in our marketing.
A Patch Verification, start to finish
Patch Verification & Compromise Review: one business day from working access to signed report.
| Step | What happens | Who | Typical time |
|---|---|---|---|
| Order and authorize | Someone with authority signs a short authorization that lists exactly what we may touch. | You | 10 minutes |
| Read-only access | A dedicated, least-privilege login, shared through a secure link. | Your admin | 15 minutes |
| Collection and checks | Every PHP runtime, patch status per CVE, then the compromise review from October 17. | Our delivery system (read-only) | A few hours |
| Interim setting | php.net’s CVE-2026-115560 setting, written for your server. We re-check it once it’s applied. | Your admin | 10 minutes |
| Review and signature | Every finding reviewed; the report signed. | Approver of Record | Same day |
| Report delivered | A one-page summary plus the full evidence report (PDF and JSON). | Oakshield | 1 business day after access works |
| Close-out | You remove our access; we confirm in writing. Working copies are deleted after 30 days. | You + Oakshield | 5 minutes |
Method: patch, shield, harden, modernize
In that order. The fastest reduction in risk is rarely a rewrite.
-
Patch
Move the PHP runtime to a fixed release or a vendor backport, restart it, and apply the CVE-2026-115560 setting (source: php.net release archive; Beazley Security Labs; php.net advisory on CVE-2026-115560, October 23, 2026). Verify from the package, not the version string (source: AlmaLinux).
-
Shield
Firewall rules and virtual patches in your own account, to cover the gap until a fix exists. Patchstack, a WordPress security vendor, found that 46% of WordPress-ecosystem vulnerabilities in 2025 had no fix at disclosure (source: Patchstack). A shield buys time; it doesn’t replace the patch (source: Beazley Security Labs).
-
Harden
Move away from the highest-risk Apache mod_php setup where practical (source: Beazley Security Labs). Rotate secrets that may have been exposed (source: The Hacker News). Restrict admin access, and keep off-server backups you have restored at least once.
-
Modernize
Move to PHP 8.4 or 8.5 (supported to December 2028 and December 2029) (source: php.net supported versions) and replace abandoned plugins. Rewrite only when the business case stands on its own; other stacks need patching too (source: Google Cloud).
What we do, and what we don’t
| We do | We don’t |
|---|---|
| Work only on systems you authorize in writing | Scan, probe or test anything we’re not authorized to touch |
| Report per CVE, with evidence levels and open issues | Say “vulnerable”, “safe” or “fully patched” |
| Name the Approver of Record on your report | Let AI tools make changes on their own |
| Stop and ask when a step is off the checklist | Improvise on production systems |
| Recommend the smallest change that closes the risk | Push rewrites you don’t need |
| Respond when you contact us | Contact anyone because their site went down or made the news |
| Publish prices and re-quote in writing if scope grows | Send surprise invoices |
How we use AI
AI-assisted tooling does the repetitive work under strict data controls: inventory, log triage and report drafting. The AI tools we use never hold credentials to your systems. Changes run only through our approval-locked pipeline, after a named person approves them, except standard changes pre-approved in your contract.
No single automated agent combines untrusted input, access to sensitive systems and the ability to make changes (the “Agents Rule of Two”) (source: Simon Willison (summary of the paper)). Our free check uses no AI at all, because the pages it reads are untrusted.
Capacity: we start a limited number of engagements each week so every finding gets a full review, and we give you a real start time.
Your website, accounted for.
Read the report before you buy.
The sample shows every section you’ll receive, from the per-CVE table to the approval log.
Sources
Every figure and quotation on this page links to its primary source. All of them, with the date we last checked each: full wording and methods.
-
`php -v` can't prove you're patched S-09
AlmaLinux CloudLinux Xserver Red Hat Sucuri The Hacker News TuxCare
Last checked: October 23, 2026
-
CVE-2026-115560: not fixed by the 21 Oct releases S-02b
php.net advisory on CVE-2026-115560, October 23, 2026 CERT-EU BleepingComputer Cloudflare
Last checked: October 23, 2026
-
Fixed versions S-02
php.net release archive The Hacker News Beazley Security Labs
Last checked: October 23, 2026
-
No official fix for 8.1 and older S-03
Beazley Security Labs The Hacker News
Last checked: October 23, 2026
-
WordPress ecosystem speed (Patchstack) S-40
Last checked: October 23, 2026
-
Firewalls help, but don't replace the patch S-10
Beazley Security Labs @IT / ITmedia The Hacker News
Last checked: October 23, 2026
-
What's affected S-04
Beazley Security Labs The Hacker News
Last checked: October 23, 2026
-
Leaked secrets risk S-04b
Last checked: October 23, 2026
-
How long newer branches are supported S-32b
Last checked: October 23, 2026
-
Other stacks aren't immune (React2Shell) S-47
Last checked: October 23, 2026
-
Agents Rule of Two S-60
Simon Willison (summary of the paper)
Last checked: October 23, 2026