← Back to Feed CACHED · 2026-10-14 11:14:50 · CACHE_KEY CVE-2026-106931
CVE-2026-106931 · CWE-78 · Disclosed 2026-10-14

SiteGuard Server Edition Statistics Feature OS Command Injection

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

Your bodyguard's earpiece has a mic anyone in the room can hijack

CVE-2026-106931 is an OS command injection (CWE-78) in the statistics feature of EG Secure Solutions' SiteGuard Server Edition — a host-based Web Application Firewall that runs as root (Linux/FreeBSD) or SYSTEM (Windows/IIS) on production web servers. The flaw affects all editions — Apache httpd, Nginx, IIS, and FreeBSD variants — from Ver 2.20 through Ver 8.00 Update 4 (Ver 7.00 Update 5 on FreeBSD). The statistics feature is enabled by default, meaning every unpatched SiteGuard install is vulnerable out of the box. A low-privilege local user can inject OS commands through the statistics component and have them execute with full root/SYSTEM privileges. IIS versions 3.10–4.00 Update 4 are the lone exception.

The vendor rates this HIGH at CVSS v3.0 7.8 (local/low-complexity/low-privilege) and CVSS v4.0 8.5. That assessment is *directionally correct but slightly soft* given confirmed active exploitation in the wild. JVN's advisory explicitly states the vulnerability is being exploited, and the vendor quietly notified support-contract customers two weeks before public disclosure (September 29 → October 14), advising them to preserve forensic evidence before patching — a clear indicator of real-world incident response. The LOCAL attack vector is genuine friction, but web servers are the most common initial-access target; once an attacker has a web shell or compromised service account, this CVE hands them root on a silver platter. We hold the severity at HIGH but nudge the score to 8.0 to reflect the active exploitation context.

"Actively exploited local privesc in a WAF running as root — patch hours, not days."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Initial access to the web server

The attacker compromises the web server through an unrelated vector — a vulnerable web application, exposed management interface, stolen SSH credentials, or supply-chain compromise. This yields a low-privilege shell or web shell running as the web server user (e.g., www-data, nginx, IUSR). This is the expected starting position for any post-exploitation chain on a web tier.
Conditions required:
  • Attacker has network access to the web server (direct or via prior pivot)
  • A separate vulnerability or credential compromise exists on the same host
Where this breaks in practice:
  • Requires a separate initial-access vulnerability — this CVE cannot be exploited remotely on its own
  • Modern WAFs (including SiteGuard itself), EDR, and network monitoring may detect the initial compromise
Detection/coverage: EDR agents, web shell scanners (e.g., Microsoft DVWA, YARA rules), and SiteGuard's own WAF rules may detect the initial intrusion vector.
STEP 02

Identify SiteGuard installation and statistics feature

From the low-privilege shell, the attacker confirms SiteGuard Server Edition is installed by checking for /opt/jp-secure/siteguardlite/ (Linux) or the SiteGuard service on Windows. The statistics feature's status is visible in configuration files. Since it is enabled by default, the attacker can proceed in virtually all deployments without additional configuration changes.
Conditions required:
  • Low-privilege shell on the target host
  • SiteGuard Server Edition installed (Ver 2.20–8.00 Update 4)
  • Statistics feature enabled (default)
Where this breaks in practice:
  • None — the feature is on by default and the install path is well-known
Detection/coverage: File-integrity monitoring or EDR behavioral rules on enumeration of /opt/jp-secure/ paths could flag this reconnaissance, but few organizations have custom rules for SiteGuard internals.
STEP 03

Inject OS commands via statistics feature

The attacker crafts a malicious input that exploits the improper neutralization of special characters in the statistics component. The exact injection point is not publicly documented (no public PoC as of disclosure day), but the CWE-78 classification and vendor description confirm unsanitized input reaches an OS command execution context. The low-privilege user triggers the statistics processing pipeline with the injected payload.
Conditions required:
  • Local access with low-privilege account
  • Knowledge of the injection vector in the statistics feature (no public PoC yet, but the vuln class is well-understood)
Where this breaks in practice:
  • No public PoC or exploit code available yet — attackers exploiting this in the wild likely have private tooling
  • The specific injection point requires reverse-engineering of the SiteGuard statistics binary or scripts
Detection/coverage: Command-line auditing (auditd on Linux, Sysmon on Windows) may capture anomalous child processes spawned by SiteGuard components. Look for unexpected shell invocations from SiteGuard process trees.
STEP 04

Achieve root/SYSTEM command execution

Because SiteGuard's statistics processing runs with root (Linux/FreeBSD) or SYSTEM (Windows) privileges, the injected commands execute at the highest privilege level. The attacker now has full control of the web server: they can read application secrets, database credentials, TLS private keys, pivot to internal networks, or deploy persistent backdoors. The vendor's advisory urging evidence preservation before patching implies attackers are using this for durable compromise.
Conditions required:
  • Successful command injection from Step 3
Where this breaks in practice:
  • None — once injection succeeds, privilege escalation is automatic
Detection/coverage: Sudden root/SYSTEM-level process creation from SiteGuard parent processes. SIEM correlation of SiteGuard PID trees with unexpected network connections or file access. Host-based IDS rules for command injection patterns (semicolons, backticks, $(...) in process arguments).
03 · Compensating Control

1
HIGH 8.0→LOW 3.0
SEVERITY REDUCED
Disable the SiteGuard statistics feature immediately — The vulnerability is in the statistics processing component, which is enabled by default. Disabling it breaks the attack path at the injection point without affecting SiteGuard's core WAF detection and blocking functionality. Consult the vendor advisory or support for the exact directive (SiteGuard_Stats off or equivalent in the Apache/Nginx module configuration). Given confirmed active exploitation, deploy within hours, not days — this overrides the standard noisgate mitigation SLA.
2
HIGH 8.0→MEDIUM 5.5
SEVERITY REDUCED
Audit and harden local accounts on all SiteGuard hosts — The CVE requires PR:L — a local low-privilege account. Remove unnecessary local accounts, disable interactive login for service accounts, and enforce MFA on SSH/RDP access to web servers. This raises the bar for the initial-access prerequisite. Deploy within hours as part of immediate incident response.
3
HIGH 8.0→HIGH 7.0
Deploy command-line auditing on SiteGuard hosts — Enable auditd (Linux) or Sysmon (Windows) rules to monitor process creation from SiteGuard parent processes. Alert on unexpected child shells (/bin/sh, /bin/bash, cmd.exe, powershell.exe) spawned by SiteGuard binaries under /opt/jp-secure/siteguardlite/. This provides detection-in-depth while patching proceeds. Deploy within 24 hours.
4
HIGH 8.0→IGNORE 0.0
SEVERITY REDUCED
Apply vendor patch (Ver 8.00 Update 5 / Ver 7.00 Update 6) — The definitive fix. Given confirmed active exploitation, the noisgate remediation SLA is overridden — patch immediately, within hours. The vendor advises downloading diagnostic/forensic data before patching, as attack traces may be eliminated during the update. Coordinate with your IR team if you suspect compromise.
What doesn't work
  • Network-level WAF/IPS in front of SiteGuard — the attack vector is LOCAL, not network-borne. A perimeter WAF cannot intercept command injection happening via local process interaction on the host itself.
  • Restricting inbound web traffic — SiteGuard is the WAF processing that traffic, but the vulnerability is in its statistics feature, not in HTTP request handling. Reducing web traffic volume does not reduce exposure.
  • Running SiteGuard in monitoring-only mode — the statistics feature operates independently of whether SiteGuard is in blocking or monitoring mode. Switching to monitor-only does not disable the vulnerable code path.
04 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationConfirmed active. JVN advisory JVN#88474777 explicitly states the vulnerability is being exploited. Vendor notified support customers on Sept 29, two weeks before public disclosure, advising forensic evidence preservation — a strong signal of real incidents.
CISA KEV statusNot listed as of 2026-10-14. Given confirmed exploitation and same-day disclosure, KEV addition is plausible within days. Japanese JPCERT/CC coordinated the disclosure.
Proof-of-concept availabilityNo public PoC found. Checked pocindex.io, GitHub (CVE-2026-106931), ExploitDB, and nuclei templates — zero hits. Exploitation in the wild implies private tooling exists. Expect public PoC within 2–4 weeks given the CWE-78 vuln class.
EPSS scoreNot yet scored — CVE was published today (2026-10-14). EPSS updates daily; expect a score within 24–48 hours. Given active exploitation, the score should land in the 90th+ percentile once calibrated.
CVSS vectorsv3.0: CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (7.8 HIGH). v4.0: 8.5 HIGH. Local vector, low complexity, low privilege — the chain is short once you're on the box.
Affected versionsAll editions Ver 2.20 through 8.00 Update 4: Apache httpd, Nginx, IIS. FreeBSD editions: Ver 2.20 through 7.00 Update 5. Exception: IIS Ver 3.10–4.00 Update 4 unaffected. Statistics feature must be enabled (on by default).
Fixed versionsApache/Nginx/IIS: Ver 8.00 Update 5. FreeBSD: Ver 7.00 Update 6. Patches available from EG Secure Solutions. Support-contract customers had early access since Sept 29.
Scanning / exposure dataSiteGuard is a host-based WAF (not a network appliance), so it does not appear as a distinct service on Shodan/Censys. Detection requires host-level version auditing. SiteGuard claims #1 WAF market share in Japan with 1.5M+ protected websites — exposure is significant in Japanese enterprise and hosting environments.
Disclosure timelineSept 29: vendor notifies support customers. Oct 14: coordinated public disclosure via JVN and vendor advisory. Reported by the vendor itself to IPA; coordinated through JPCERT/CC.
Reporting entityReported by EG Secure Solutions (the vendor) to IPA. Coordinated via JPCERT/CC through the Information Security Early Warning Partnership. No external researcher credited — vendor self-discovered, likely during incident response.

Sources.

  1. JVN Advisory JVN#88474777
  2. EG Secure Solutions Vendor Advisory
  3. NVD Entry — CVE-2026-106931
  4. Strix.ai CVE Analysis
  5. ThreatInt CVE Database
  6. Offseq Radar — SiteGuard OS Command Injection
  7. EG Secure Solutions — SiteGuard Product Page
  8. PoC Index — CVE Search
05 · The Call

Final Verdict
= UNCHANGED to HIGH (8.0/10)

Why this verdict

  • Active exploitation confirmed: JVN explicitly states in-the-wild exploitation, and the vendor's pre-disclosure notification + forensic-preservation guidance indicates real incidents drove the disclosure. This alone prevents any downgrade below HIGH.
  • LOCAL vector is real friction but contextually weak: The CVSS AV:L tag implies physical-console-level access, but in practice web servers are the #1 initial-access target. A web shell or compromised service account satisfies PR:L. The prerequisite of 'local access to a web server' is routinely met in post-exploitation scenarios.
  • Default-on statistics feature eliminates configuration friction: No special setup needed. Every SiteGuard install from Ver 2.20 onward is exploitable unless the admin explicitly disabled statistics — and the vendor docs don't prominently surface that option.
  • Role multiplier: SiteGuard Server Edition is a security agent (WAF) running as root/SYSTEM on production web servers. 100% of installations occupy a security-sensitive role on hosts serving production web traffic. Compromise yields root on the web server → access to application secrets, database credentials, TLS keys, and a pivot point into the internal network. The blast radius is host-level (not fleet/domain), which keeps this at HIGH rather than CRITICAL. However, in Japanese enterprise/hosting environments where SiteGuard has dominant market share, a campaign targeting this CVE could achieve broad impact across many hosts.
  • No public PoC yet tempers urgency slightly: Private exploitation is confirmed, but the absence of public tooling means opportunistic mass exploitation hasn't started. This window is closing — expect public PoC within weeks.

Why not higher?

CRITICAL would require either a remote attack vector or fleet/domain-scale blast radius. This CVE requires prior local access — it is a privilege escalation, not an initial-access vulnerability. Root on a single web server is serious but does not directly yield domain takeover or fleet compromise without additional chaining. The blast radius is host-scoped, and the product is predominantly deployed in the Japanese market, limiting global exposure.

Why not lower?

Confirmed active exploitation is an absolute floor-setter — you cannot call an actively exploited root-privesc in a security product MEDIUM. The statistics feature is on by default, the exploitation complexity is low, and web servers are routinely compromised through other vectors, making the LOCAL prerequisite a speed bump rather than a wall. The vendor's own pre-disclosure IR guidance confirms real-world impact.

06 · Verification

Crowdsourced verification payload.

Run this script on each host where SiteGuard Server Edition is installed (Linux/FreeBSD). Requires read access to SiteGuard's install directory (run as root or with sudo). Invoke: sudo bash check_cve_2026_106931.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_106931.sh — Detect CVE-2026-106931 exposure
# SiteGuard Server Edition OS Command Injection (statistics feature)
# Run on target host as root or with sudo.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

SG_BASE="/opt/jp-secure/siteguardlite"
SG_CONF="${SG_BASE}/conf"
RESULT="UNKNOWN"

# Check if SiteGuard is installed
if [ ! -d "$SG_BASE" ]; then
  echo "[INFO] SiteGuard Server Edition not found at $SG_BASE"
  echo "[INFO] Checking for Windows-style install or alternative paths..."
  # Check common alternative locations
  for alt in /usr/local/jp-secure/siteguardlite /opt/jp-secure/siteguard; do
    if [ -d "$alt" ]; then
      SG_BASE="$alt"
      SG_CONF="${SG_BASE}/conf"
      echo "[INFO] Found SiteGuard at $SG_BASE"
      break
    fi
  done
  if [ ! -d "$SG_BASE" ]; then
    echo "UNKNOWN — SiteGuard Server Edition not detected on this host."
    exit 2
  fi
fi

# Attempt to extract version
VERSION=""
if [ -f "${SG_BASE}/version" ]; then
  VERSION=$(cat "${SG_BASE}/version" 2>/dev/null | head -1)
elif command -v "${SG_BASE}/bin/siteguardlite_ctl" &>/dev/null; then
  VERSION=$("${SG_BASE}/bin/siteguardlite_ctl" version 2>/dev/null | grep -oP '[0-9]+\.[0-9]+[^\s]*' | head -1)
fi

if [ -z "$VERSION" ]; then
  # Try extracting from package manager
  if command -v rpm &>/dev/null; then
    VERSION=$(rpm -qa 2>/dev/null | grep -i siteguard | head -1)
  elif command -v dpkg &>/dev/null; then
    VERSION=$(dpkg -l 2>/dev/null | grep -i siteguard | awk '{print $3}' | head -1)
  fi
fi

echo "[INFO] SiteGuard install path: $SG_BASE"
echo "[INFO] Detected version: ${VERSION:-unknown}"

# Check if statistics feature is enabled
STATS_ENABLED="unknown"
for conf_file in "${SG_CONF}/siteguardlite.ini" "${SG_CONF}/httpd.conf.siteguard" "${SG_BASE}/conf.d/"*.conf; do
  if [ -f "$conf_file" ] 2>/dev/null; then
    if grep -qi 'stats\|statistics' "$conf_file" 2>/dev/null; then
      if grep -qiP '(stats|statistics).*(off|disable|false|0)' "$conf_file" 2>/dev/null; then
        STATS_ENABLED="disabled"
      else
        STATS_ENABLED="enabled"
      fi
    fi
  fi
done

echo "[INFO] Statistics feature: $STATS_ENABLED (default is enabled)"

# Version comparison — fixed versions:
# Apache/Nginx/IIS: 8.00 Update 5
# FreeBSD: 7.00 Update 6
# Affected: >= 2.20 and < fixed version
#
# Simple heuristic: if version string contains "8.00" with update >= 5, PATCHED
# If version contains "7.00" with update >= 6 (FreeBSD), PATCHED
# If version >= 8.01 or >= 9.x, PATCHED

if [ -n "$VERSION" ]; then
  # Normalize: check for known patched patterns
  if echo "$VERSION" | grep -qiP '8\.00.*update\s*[5-9]'; then
    RESULT="PATCHED"
  elif echo "$VERSION" | grep -qiP '8\.00.*up(date)?\s*[5-9]'; then
    RESULT="PATCHED"
  elif echo "$VERSION" | grep -qiP '(8\.0[1-9]|8\.[1-9]|9\.|[1-9][0-9]\.)'; then
    RESULT="PATCHED"
  elif echo "$VERSION" | grep -qiP '7\.00.*update\s*[6-9]'; then
    # FreeBSD patched version
    RESULT="PATCHED"
  elif echo "$VERSION" | grep -qiP '([2-7]\.|8\.00)'; then
    RESULT="VULNERABLE"
  else
    RESULT="UNKNOWN"
  fi
else
  # Cannot determine version; check if stats is disabled as mitigating factor
  if [ "$STATS_ENABLED" = "disabled" ]; then
    echo "[INFO] Statistics feature appears disabled — attack surface mitigated."
    RESULT="UNKNOWN"
  else
    RESULT="UNKNOWN"
  fi
fi

# Final output
echo ""
if [ "$RESULT" = "VULNERABLE" ]; then
  echo "VULNERABLE — CVE-2026-106931: SiteGuard $VERSION with statistics ${STATS_ENABLED}."
  echo "[ACTION] Patch to Ver 8.00 Update 5 (or 7.00 Update 6 on FreeBSD) immediately."
  echo "[ACTION] As interim mitigation, disable the statistics feature."
  exit 1
elif [ "$RESULT" = "PATCHED" ]; then
  echo "PATCHED — SiteGuard $VERSION is at or above the fixed version."
  exit 0
else
  echo "UNKNOWN — Could not definitively determine vulnerability status."
  echo "[ACTION] Manually verify SiteGuard version and statistics feature status."
  exit 2
fi