← Back to Feed CACHED · 2026-07-27 14:35:53 · CACHE_KEY CVE-2026-61511
CVE-2026-61511 · CWE-95 · Disclosed 2026-07-01

vBulletin < 6

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

Someone left the template engine's eval() wide open and put a welcome mat on the internet

CVE-2026-61511 is an eval injection flaw in vBulletin's template runtime engine (vb5/template/runtime.php). An unauthenticated remote attacker can inject arbitrary PHP code through the template parsing pipeline, which the runtime evaluates via eval(), achieving full remote code execution as the web server user (typically www-data or apache). Officially patched versions span vBulletin 6.1.6 through 6.2.1 via patch-level updates; the vulnerable code also exists in older 6.x, 5.x, and 4.x releases per community analysis. The definitive fix ships in vBulletin 6.2.2.

The vendor rates this CRITICAL at 9.3 and noisgate agrees — the score is accurate. This is an unauthenticated, low-complexity, no-interaction RCE on software that is internet-facing by design. vBulletin's template engine has been the site of at least four prior RCE vulnerabilities (CVE-2019-16759, CVE-2020-17496, CVE-2025-48827, CVE-2025-48828), every one of which was exploited in the wild within days of disclosure. The bug class is deeply understood by attackers, the attack surface is a public HTTP endpoint, and there are zero meaningful friction points to justify any downgrade.

"Pre-auth eval injection RCE in internet-facing forum software — zero friction, patch or pull offline now."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Target discovery via Shodan/Censys

The attacker identifies internet-facing vBulletin instances using Shodan dorks (http.component:vBulletin) or Censys queries. Censys has previously cataloged ~45,000 exposed vBulletin instances globally. Version fingerprinting is trivial via HTML meta tags, X-Powered-By headers, or the presence of /core/install/ and /admincp/ paths.
Conditions required:
  • Target runs vBulletin < 6.2.2 on a public IP
Where this breaks in practice:
  • None — vBulletin is internet-facing by design and easily fingerprinted
Detection/coverage: External attack-surface management (ASM) tools; WAF logs showing vBulletin endpoint probing; Shodan/Censys monitors for your org's domains
STEP 02

Craft eval injection payload for runtime.php

The attacker constructs a single HTTP POST targeting the template runtime endpoint or equivalent AJAX route. The payload injects PHP code into the template parsing pipeline, exploiting the eval() call in the runtime. Prior vBulletin template RCE exploits used payloads like <vb:if condition='"passthru"($_POST["cmd"])'></vb:if> to bypass function-name filters using PHP's variable-function call syntax. This vulnerability follows the identical eval injection pattern in the runtime layer. No authentication required.
Conditions required:
  • Knowledge of the injection point (public after advisory)
  • No WAF blocking PHP code injection in POST body
Where this breaks in practice:
  • A properly tuned WAF with PHP code-injection signatures may block common payloads
  • Attackers can trivially obfuscate — concat, base64, chr() — to bypass naive WAF rules
Detection/coverage: WAF rules detecting PHP function names (passthru, system, exec, eval, shell_exec) in POST parameters; IDS/IPS signatures for vBulletin template injection patterns; Nuclei template available from prior CVEs
STEP 03

Template runtime eval() executes attacker code

vBulletin's template runtime processes the injected code through its eval() pipeline. The PHP code executes with the privileges of the web server process — www-data on Linux or IUSR/IIS_IUSRS on Windows. The attacker achieves arbitrary code execution. A typical first payload is a web shell (e.g., c99, b374k) or a reverse shell callback to attacker infrastructure.
Conditions required:
  • The payload passes any remaining input sanitization in the template engine
Where this breaks in practice:
  • PHP disable_functions may block some shell execution functions
  • SELinux/AppArmor in enforcing mode can restrict web server process capabilities
  • PHP open_basedir can limit filesystem traversal
Detection/coverage: EDR/host-based detection on the web server: unexpected child processes spawned by PHP-FPM or Apache; file integrity monitoring on the webroot; web shell scanners (e.g., NeoPI, PHP Malware Finder)
STEP 04

Credential harvesting and database exfiltration

With a shell, the attacker reads config.php to obtain MySQL/MariaDB credentials. The vBulletin database contains user credentials (hashed passwords), email addresses, IP logs, private messages, and session tokens — high-value data for credential stuffing, social engineering, and regulatory breach notifications. Bulk export via mysqldump or direct SQL queries is trivial.
Conditions required:
  • Database credentials in config.php (default vBulletin behavior)
  • Network path from web server to database server
Where this breaks in practice:
  • Network segmentation between DMZ web tier and database tier
  • Database credentials may use least-privilege accounts
  • Password hashes may use bcrypt (slow to crack offline)
Detection/coverage: Database audit logging; anomalous large-result-set queries from the web server; SIEM alerts on bulk data access patterns
STEP 05

Lateral movement from DMZ foothold

The compromised web server becomes a pivot point. The attacker scans internal networks reachable from the DMZ, enumerates services, and attempts to move laterally using harvested credentials or network exploits. If the vBulletin server shares a network segment with internal infrastructure, the blast radius expands significantly beyond the forum itself.
Conditions required:
  • Web server has network connectivity to internal segments
  • Lack of microsegmentation between DMZ and internal networks
Where this breaks in practice:
  • Proper DMZ segmentation with strict egress filtering
  • Internal network detection (NDR, IDS)
  • MFA on internal services prevents reuse of harvested credentials
Detection/coverage: NDR/IDS detecting scanning activity from the web server IP; firewall logs showing unexpected connections from DMZ to internal; SIEM correlation of new lateral movement indicators
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNot yet confirmed for CVE-2026-61511 specifically. However, every prior vBulletin template engine RCE (CVE-2019-16759, CVE-2020-17496, CVE-2025-48827/48828) was exploited within 1–4 days of disclosure. CVE-2025-48827 saw exploitation within 72 hours per KEVIntel honeypot data. Treat in-the-wild exploitation as imminent.
Proof-of-concept availabilityNo public PoC confirmed for CVE-2026-61511 as of 2026-07-27. The bug class has extensive prior art: Metasploit module exploit/multi/http/vbulletin_widget_template_rce, Nuclei templates, and standalone PHP exploit scripts from EgiX/Karma(In)Security all target the identical template eval injection pattern. Adaptation to this new endpoint is trivial for a skilled attacker.
EPSS scoreNot yet scored (newly assigned CVE). Historical reference: CVE-2019-16759 scored 0.975 (97th percentile) and CVE-2025-48827 scored in the 97th+ percentile — pre-auth RCE in vBulletin consistently ranks among the most-likely-to-be-exploited CVEs.
KEV statusNot listed on CISA KEV as of 2026-07-27. Given the historical pattern, KEV addition is probable once in-the-wild exploitation is confirmed.
CVSS vector interpretationCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:NWorst-case web attack profile: network-reachable, low complexity, no attack requirements, no privileges, no user interaction, full CIA impact on the vulnerable system. Subsequent-system impact is None (limits automatic score to 9.3 vs 10.0).
Affected version rangesOfficially patched: vBulletin 6.1.6, 6.2.0, 6.2.1. Community analysis confirms vulnerable code in older 6.x (6.0.x–6.1.5), 5.x (5.0.0+), and 4.x. Versions below 6.1.6 are unsupportedno vendor patch available.
Fixed versionsvBulletin 6.2.2 (full release) or patch-level updates: 6.2.1 PL1, 6.2.0 PL1, 6.1.6 PL1 — available at members.vbulletin.com/patches.php.
Scanning / exposure dataCensys: ~45,000 exposed vBulletin instances globally (Censys advisory). TechnologyChecker: ~8,900 active domains running vBulletin. 6sense reports ~1,691 enterprise customers, 64% US-based. vBulletin's historical patching velocity is poor — many instances remained vulnerable to CVE-2019-16759 for *years*.
Disclosure dateApproximately early July 2026 based on vendor advisory and community discussion timing. vBulletin 6.2.2 release followed shortly after the patch-level updates.
Reporting researcher / orgNot publicly credited in available advisories. The vulnerability is in the same template engine attack surface extensively researched by Egidio Romano (EgiX) of Karma(In)Security for CVE-2025-48827/48828.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.3/10)

Pre-auth RCE on software that is internet-facing by design, with zero prerequisite friction — no authentication, no user interaction, no special configuration. The single most decisive factor is the complete absence of attacker prerequisites: any internet-reachable vBulletin instance below 6.2.2 is exploitable with a single HTTP request against the template runtime, and this exact bug class has been weaponized within days of disclosure in four prior instances (2019, 2020, 2025×2).

HIGH Vulnerability exists and is exploitable pre-auth (confirmed by vendor advisory and patch release)
HIGH Affected version range (6.1.6–6.2.1 confirmed by vendor; older versions highly likely per community analysis)
MEDIUM Active exploitation status (not yet confirmed for this specific CVE, but historical pattern strongly predicts imminent weaponization)
LOW Exact disclosure date and researcher attribution (vendor advisory behind member login wall)

Why this verdict

  • Zero friction in the attack chain: Unauthenticated, low-complexity, no-interaction RCE. Every prerequisite evaluates to 'freely available to any internet attacker.' There is no compounding downward pressure because there are no real-world narrowing factors — no auth gate, no race condition, no unusual configuration.
  • Internet-facing by design: vBulletin is forum software — 100% of production deployments are internet-facing. Unlike internal-only software where exposure is a configuration mistake, exposure here is the intended operating model. Censys shows ~45,000 instances on the public internet. This is the opposite of the 'only 1% are exposed' downgrade factor.
  • Historical weaponization precedent: Four prior vBulletin template engine RCE vulnerabilities were all exploited within 1–4 days. Metasploit modules, Nuclei templates, and standalone exploit scripts exist for the identical bug class. The attacker community treats vBulletin template eval injection as a solved problem — adaptation to a new injection point requires minimal effort.
  • Role multiplier: vBulletin occupies the (b) typical role of an internet-facing application tier. It is not a canonical high-value-role component (not IdP, hypervisor, backup, CI/CD, etc.). However, compromise yields: (1) web server shell → initial-access foothold in DMZ, (2) database credentials via config.php → mass PII and credential exfiltration (emails, hashed passwords, IPs, private messages), (3) potential lateral-movement pivot to internal networks from the DMZ. The blast radius is host-to-tenant-to-DMZ scale. While this does not automatically trigger the CRITICAL floor via the high-value-role catalog, the pre-auth RCE profile with zero friction independently justifies CRITICAL — no floor override needed because friction alone does not push below CRITICAL.
  • Bug class maturity and poor patch adoption: Eval injection in PHP template engines is a thoroughly documented vulnerability class (CWE-95). vBulletin's installed base has a historically abysmal patching velocity — instances remained vulnerable to CVE-2019-16759 for years after patches were available. The combination of easy exploitation and slow patching makes real-world impact near-certain.

Why not higher?

The score is already at 9.3 CRITICAL. The only gap to a perfect 10.0 is that subsequent-system impact (SC/SI/SA) is scored None in the CVSS 4.0 vector — compromise is contained to the vBulletin host and its database without automatic chaining to adjacent systems. This accurately reflects that lateral movement requires additional attacker effort beyond the initial RCE.

Why not lower?

There are zero friction points in the attack chain. No authentication, no user interaction, no complex race condition, no unusual configuration prerequisite. The software is internet-facing by design with ~45,000 exposed instances globally. Every prior bug in this exact attack surface was weaponized within days. vBulletin's patching velocity is historically poor, meaning a large fraction of the installed base will remain vulnerable for months. Downgrading would require identifying at least one meaningful real-world constraint that narrows the exploitable population — none exists.

05 · Compensating Control

What to do — in priority order.

  1. Deploy WAF rules blocking PHP code injection on vBulletin template endpoints — Configure your WAF (Cloudflare, AWS WAF, F5 ASM, ModSecurity) to block HTTP requests containing PHP function names (passthru, system, exec, eval, shell_exec, popen, proc_open, pcntl_exec) and template injection patterns (<vb:if, condition=) in POST body parameters targeting /vb5/template/, /ajax/render/, /ajax/api/ endpoints. Deploy within the noisgate mitigation SLA of 3 days. This is a bypassable stopgap — obfuscation techniques (concatenation, base64, chr()) can evade naive string matching.
  2. Apply the vendor patch or upgrade to vBulletin 6.2.2 immediately — Download the security patch for your version from members.vbulletin.com/patches.php — available for 6.2.1 PL1, 6.2.0 PL1, and 6.1.6 PL1. Alternatively, upgrade to vBulletin 6.2.2 which includes the fix natively. This is the definitive remediation. Target within the noisgate remediation SLA of 90 days, but given pre-auth RCE with imminent weaponization, push for this week.
  3. IP-restrict vBulletin admin and internal template endpoints — At the reverse proxy or WAF layer, restrict access to /admincp/, /modcp/, /vb5/template/runtime.php, and AJAX API endpoints to known administrator IP ranges. The public-facing forum pages can remain open. Deploy within 3 days to shrink the attack surface while patching proceeds.
  4. Take unsupported versions (< 6.1.6, any 5.x or 4.x) offline — The vendor only patches supported versions 6.1.6+. If you run vBulletin 5.x or 4.x, the vulnerable code exists but no vendor fix is available. Take these instances offline, put them behind an authenticated reverse proxy (e.g., Cloudflare Access, Tailscale Funnel with SSO), or begin emergency migration to 6.2.2+.
  5. Audit existing instances for indicators of compromise — Before patching, check for web shells in the vBulletin webroot (find /path/to/vbulletin -name '*.php' -newer /path/to/vbulletin/config.php -mtime -30), unexpected modifications to template files, anomalous outbound connections from the web server process, and bulk database queries. Given the historical exploitation cadence, assume scanning has already begun.
What doesn't work
  • Network segmentation alone — vBulletin must be internet-facing to serve its purpose. Segmentation limits post-exploitation lateral movement but does not prevent the initial RCE on the web server itself.
  • PHP disable_functions — can restrict some shell execution functions but does not prevent the eval() injection itself. Attackers can fall back to PHP-native file I/O, socket functions, and mail() for data exfiltration, which are rarely disabled on vBulletin hosts.
  • Rate limiting / CAPTCHA — slows automated mass-scanning but does not prevent a targeted single-request exploit. CVE-2026-61511 is exploitable with one crafted HTTP POST.
  • Upgrading PHP version alone — the vulnerability is in vBulletin's own template runtime code (runtime.php), not a PHP engine bug. Running PHP 8.3 instead of 8.1 does not remediate the eval injection.
06 · Verification

Crowdsourced verification payload.

Run on the vBulletin web server as any user with read access to the installation directory. Invoke: bash check_cve_2026_61511.sh /var/www/vbulletin. No root required — just filesystem read access. Outputs VULNERABLE, PATCHED, or UNKNOWN with exit codes 1, 0, 2 respectively.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_61511.sh — Detect CVE-2026-61511 (vBulletin template runtime eval injection)
# Usage: bash check_cve_2026_61511.sh /path/to/vbulletin
# Exit: 0=PATCHED  1=VULNERABLE  2=UNKNOWN
set -euo pipefail

VB_PATH="${1:-}"
if [[ -z "$VB_PATH" ]]; then
  echo "Usage: $0 /path/to/vbulletin"
  exit 2
fi

# --- Locate version file ---
VERSION_FILE=""
for f in "$VB_PATH/core/packages/vbulletin/version.php" \
         "$VB_PATH/packages/vbulletin/version.php" \
         "$VB_PATH/includes/class_core.php" \
         "$VB_PATH/core/includes/class_core.php"; do
  [[ -f "$f" ]] && { VERSION_FILE="$f"; break; }
done
if [[ -z "$VERSION_FILE" ]]; then
  echo "UNKNOWN — cannot locate vBulletin version file in $VB_PATH"
  exit 2
fi

# --- Extract version ---
VERSION=$(grep -oP "(?:VERSION_BNUMBER|FILE_VERSION|\\\$version)\\s*=\\s*['\"]\\K[0-9]+\\.[0-9]+\\.[0-9]+" "$VERSION_FILE" 2>/dev/null | head -1)
if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN — cannot parse version from $VERSION_FILE"
  exit 2
fi
echo "[*] Detected vBulletin version: $VERSION"

IFS='.' read -r MAJ MIN PAT <<< "$VERSION"

# --- 6.2.2+ is patched ---
if (( MAJ > 6 )) || (( MAJ == 6 && MIN > 2 )) || (( MAJ == 6 && MIN == 2 && PAT >= 2 )); then
  echo "PATCHED — vBulletin $VERSION (>= 6.2.2) includes fix for CVE-2026-61511"
  exit 0
fi

# --- Check for patched runtime.php on 6.1.6–6.2.1 ---
for rf in "$VB_PATH/core/vb5/template/runtime.php" \
          "$VB_PATH/vb5/template/runtime.php"; do
  if [[ -f "$rf" ]]; then
    # Patch adds input sanitization before eval; check for patch marker
    if grep -qE '(template_safe_eval|preg_replace.*eval.*sanitize|vb_template_verify)' "$rf" 2>/dev/null; then
      MTIME=$(stat -c '%Y' "$rf" 2>/dev/null || stat -f '%m' "$rf" 2>/dev/null || echo 0)
      MDATE=$(date -d "@$MTIME" '+%Y-%m-%d' 2>/dev/null || date -r "$MTIME" '+%Y-%m-%d' 2>/dev/null || echo 'unknown')
      echo "PATCHED — vBulletin $VERSION with runtime.php patched (modified $MDATE)"
      exit 0
    fi
    echo "[!] Found runtime.php at $rf — no patch signature detected"
    break
  fi
done

# --- Unsupported versions ---
if (( MAJ <= 4 )); then
  echo "VULNERABLE — vBulletin $VERSION (v4.x, unsupported, NO vendor patch)"
  exit 1
elif (( MAJ == 5 )); then
  echo "VULNERABLE — vBulletin $VERSION (v5.x, unsupported, NO vendor patch)"
  exit 1
elif (( MAJ == 6 && MIN == 0 )); then
  echo "VULNERABLE — vBulletin $VERSION (v6.0.x, below supported patch range)"
  exit 1
elif (( MAJ == 6 && MIN == 1 && PAT < 6 )); then
  echo "VULNERABLE — vBulletin $VERSION (below supported patch range 6.1.6+)"
  exit 1
fi

# --- 6.1.6–6.2.1 without patch ---
echo "VULNERABLE — vBulletin $VERSION (in affected range, no patch-level update detected)"
echo "  -> Apply patch from https://members.vbulletin.com/patches.php or upgrade to 6.2.2"
exit 1
07 · Bottom Line

If you remember one thing.

TL;DR
If you run vBulletin, this is a drop-everything item. CVE-2026-61511 is a pre-auth RCE with zero friction — any internet-reachable instance below version 6.2.2 is exploitable with a single HTTP request, and vBulletin's template engine RCE bugs have been weaponized within days of disclosure in every prior instance (2019, 2020, 2025). Under the noisgate mitigation SLA for CRITICAL, deploy WAF rules blocking PHP code injection on vBulletin template endpoints within 3 days (by Wednesday July 30). Under the noisgate remediation SLA, apply the vendor patch — upgrade to 6.2.2 or install the patch-level update for 6.1.6–6.2.1 — within 90 days, but realistically push hard for completion this week given the near-certainty of imminent exploitation. If you are running unsupported vBulletin 5.x or 4.x, there is no vendor patch — take those instances offline or gate them behind an authenticated reverse proxy today. Before patching, audit existing instances for web shells in the webroot and review database access logs for signs of credential exfiltration — assume scanning is already underway.

Sources

  1. vBulletin Official Security Patch Advisory (6.2.1, 6.2.0, 6.1.6)
  2. vBulletin 6.2.2 Release Discussion
  3. Karma(In)Security — vBulletin Template Engine RCE Technical Analysis
  4. Censys Advisory — vBulletin Exposure Data (~45,000 instances)
  5. CyberPress — Critical vBulletin Vulnerabilities Under Active Exploit
  6. Qualys ThreatPROTECT — vBulletin RCE Exploited in the Wild
  7. 6sense — vBulletin Market Share and Deployment Data
  8. vBulletin CVE History — CVEDetails
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.