CVE Tools
Back to blog

vBulletin's Third Template-Engine RCE in 14 Months Now Has a Public Exploit — EPSS Already Says 70%

CVE-2026-61511 was patched quietly on July 1. A working proof-of-concept landed July 27. Its two predecessors from last year were both exploited in the wild within days of going public.

vBulletin's Third Template-Engine RCE in 14 Months Now Has a Public Exploit — EPSS Already Says 70%. CVE-2026-61511 was patched quietly on July 1. A working proof-of-concept landed July 27. Its two
vBulletin's Third Template-Engine RCE in 14 Months Now Has a Public Exploit — EPSS Already Says 70%. CVE-2026-61511 was patched quietly on July 1. A working proof-of-concept landed July 27. Its two

On June 25, 2026, researcher Egidio Romano reported an unauthenticated remote-code-execution bug in vBulletin's template engine. The vendor patched it fast — five days, then a full point release a week later. Then, on July 27, Romano's own disclosure firm published a working proof-of-concept. That's the moment vBulletin has been here before, twice, in the last fourteen months — and both previous times, the exploitation followed within days.

70.8%EPSS score99.4th percentile — higher than most KEV entries
9.8CVSS severityUnauthenticated, network, no user interaction
0Confirmed ITW attacks so farPer SSD Secure Disclosure, as of publication
2 for 2Prior template-engine CVEs exploitedBoth 2025 siblings hit within days of PoC release

How one page number becomes code execution

The bug lives in vB5_Template_Runtime::runMaths(), inside /includes/vb5/template/runtime.php. That function powers vBulletin's {vb:math} template tag — it takes a math expression out of a template variable and runs it through PHP's eval(). Before doing that, it runs the input through a regex meant to strip everything except digits, parentheses and arithmetic/bitwise operators.

The problem: digits, parentheses and operators (including XOR) are enough on their own to build working PHP. Researchers call the technique "phpfuck" — constructing function calls and executable logic entirely out of punctuation and numbers, with no letters for a blocklist to ever catch. Because the page-navigation template feeds the user-controlled pagenav[pagenumber] parameter straight into a {vb:math} expression, and that template renders through the unauthenticated ajax/render/[template] route, no login is required at any point in the chain.

The disclosure timeline

CVE-2026-61511, start to public exploit

  1. Romano reports the flaw to vBulletin
    Via SSD Secure Disclosure's private channel.
  2. Vendor ships a patch
    Patch Level 1 backported to 6.2.1, 6.2.0 and 6.1.6.
  3. vBulletin 6.2.2 released
    The fully patched build for the 6.x line. Cloud-hosted sites were already updated.
  4. CVE-2026-61511 assigned
  5. Public advisory + working PoC published
    SSD Secure Disclosure and Karma Insecurity (KIS-2026-13) both publish technical writeups; TheHackerNews independently verifies the exploit executes.

What's confirmed vs. what isn't

Confirmed
  • Unauthenticated, pre-auth eval injection via CWE-95
  • Reachable through the default pagenav template, no admin access needed
  • Vendor patch existed nearly a month before public disclosure
  • A working interactive PoC (PHP CLI shell) is public
  • Only the 6.x line (up to 6.2.1) is confirmed patched
Not established
  • No confirmed in-the-wild exploitation as of this writing
  • Not on CISA's KEV catalog as of this writing
  • Whether unpatched instances were hit quietly during the 4-week gap before disclosure
  • Whether vBulletin 5.x installs (through 5.7.5) received an equivalent fix — vendor guidance points 5.x users to upgrade rather than patch in place

vBulletin's template engine, three times over

CVE-2026-61511 isn't an isolated incident. In May 2025, the same researcher disclosed two other pre-auth RCEs in vBulletin's template layer — a protected-API-method bypass and a template-conditional injection — and CVE records for both explicitly note they were "exploited in the wild in May 2025." The pattern each time: vendor patches quietly, a public PoC follows weeks later, and unpatched internet-facing forums get hit.

CVEMechanismCVSSEPSS (current)Confirmed exploited in the wild
CVE-2025-48827Unauth protected-API-method invocation (PHP 8.1+)10.075.8% (99.5th pct.)Yes — May 2025
CVE-2025-48828Template-conditional injection bypass9.057.6% (99.0th pct.)Yes — May 2025
CVE-2026-61511Eval injection via runMaths() / phpfuck bypass9.870.8% (99.4th pct.)Not yet confirmed

That last row's EPSS score is the tell. A model trained on exactly this vendor's exploitation history is already rating CVE-2026-61511's odds of attack within 30 days close to what its two proven-exploited predecessors scored — before anyone has confirmed a single attack against it.

What to check right now

  1. Identify every self-hosted vBulletin instance on 6.2.1 or earlier (including 6.2.0 and 6.1.6) and confirm it's on the July 1 patch level or 6.2.2.
  2. If you're still on the 5.x line (through 5.7.5), treat vendor guidance to "upgrade to a newer release" as the operative advice — there's no confirmed 5.x-specific patch in the public record.
  3. vBulletin Cloud customers were already patched by the vendor — verify rather than assume, especially for any customized templates layered on top.
  4. Watch access logs for POST requests to ajax/render/pagenav with unusual pagenav[pagenumber] values — that's the specific path this bug rides in on.
  5. Don't wait for a KEV listing to act. EPSS at the 99.4th percentile, on a vendor with two out of two prior template CVEs exploited within days of PoC release, is itself the signal.

Vulnerability data as of 2026-08-30

We use analytics cookies to see which pages and articles actually help people. Decline and none of them run — the site works the same. What we store