← Back to Feed CACHED · 2026-09-03 02:22:07 · CACHE_KEY CVE-2026-9586
CVE-2026-9586 · CWE-89 · Disclosed 2026-07-17

An unauthenticated SQL injection vulnerability exists in Sangoma Switchvox SMB Edition 8.3

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

Someone left the lobby phone's backend wide open — and attackers are already inside recording everything

CVE-2026-9586 is an unauthenticated SQL injection in Sangoma Switchvox SMB Edition 8.3 (build 104997). The /pa endpoint — designed to accept XML provisioning messages from IP phones — concatenates the user-controlled PhoneIP field directly into an unparameterized PostgreSQL query. An attacker sends a single crafted HTTP POST, gains arbitrary SQL execution against the backend database, and chains PostgreSQL's COPY TO PROGRAM (or equivalent) to achieve full remote code execution as the database service user on the underlying Linux host. No credentials, no user interaction, no complex race conditions. Affected versions are all Switchvox builds prior to 8.4.0.2; the fix shipped July 14, 2026.

The vendor's CRITICAL / 9.8 rating is exactly right — arguably even conservative given the current threat landscape. This is a textbook unauth-RCE with zero friction: network-reachable endpoint, trivial exploitation, and full host compromise. The CVSS 4.0 score of 9.3 aligns. With ~4,000 instances visible on Shodan, active automated scanning from at least one threat actor since August 30, a public PoC from Horizon3.ai, and CISA adding it to KEV on September 2, this is a live-fire emergency — not a theoretical risk.

"Unauthenticated SQLi-to-RCE on internet-facing VoIP appliance, actively exploited in the wild now."
02 · The Attack Path

5 steps from start to impact.

STEP 01

Locate exposed Switchvox instance

Attacker queries Shodan, Censys, or FOFA for Switchvox web interfaces. Approximately 4,000 instances are currently internet-exposed, predominantly in the U.S. The management and phone-provisioning interfaces often share the same HTTPS listener.
Conditions required:
  • Target runs Switchvox < 8.4.0.2
  • Switchvox HTTPS port is reachable from the internet
Where this breaks in practice:
  • Organizations that firewall Switchvox to VPN-only or VLAN-restricted phone networks are not reachable
Detection/coverage: Shodan/Censys queries for Switchvox or Server: Apache with Switchvox-specific cookies. GreyNoise has tagged scanning activity.
STEP 02

Send crafted XML POST to /pa

Attacker sends a single HTTP POST to /pa with a manipulated PhoneIP XML element containing a SQL injection payload. No authentication token, session cookie, or API key is required. The Switchvox web service parses the XML and directly concatenates PhoneIP into a PostgreSQL SELECT or INSERT statement. Tools: curl, sqlmap, or the Horizon3.ai PoC script.
Conditions required:
  • HTTP POST to /pa is accepted (default)
  • No WAF blocking SQLi payloads in XML body
Where this breaks in practice:
  • A properly configured WAF or IPS with XML-aware SQLi signatures may block the payload
Detection/coverage: WAF/IPS signatures for SQL metacharacters inside XML body fields; Suricata SID pending.
STEP 03

Execute arbitrary SQL on PostgreSQL

The injected payload executes arbitrary SQL statements against the backend PostgreSQL database. The attacker can dump credentials, call detail records, voicemail metadata, and SIP authentication secrets. PostgreSQL runs with elevated OS-level privileges sufficient for the next step.
Conditions required:
  • SQLi payload succeeds (trivial with default config)
Where this breaks in practice:
  • None — the database accepts the concatenated query as-is
Detection/coverage: Database audit logging (if enabled) would show anomalous queries; most Switchvox deployments do not ship with pg_audit enabled.
STEP 04

Escalate to OS-level RCE

Attacker uses PostgreSQL's COPY ... TO PROGRAM or lo_export to write a reverse shell payload to disk and execute it, or leverages CREATE FUNCTION with a UDF to spawn a shell. The observed campaign drops a reverse shell connecting back to attacker infrastructure (observed IP: 176.65.148.184). The attacker then enumerates processes and begins lateral movement.
Conditions required:
  • PostgreSQL service user has OS exec privileges (default on Switchvox appliance)
Where this breaks in practice:
  • Outbound firewall rules blocking egress from the Switchvox host would prevent the reverse shell callback
Detection/coverage: EDR/HIDS on the Switchvox host detecting unexpected child processes of PostgreSQL; netflow showing new outbound connections from the appliance.
STEP 05

Pivot into internal network

With a shell on the Switchvox appliance — which typically sits on a voice VLAN with routes to internal subnets — the attacker pivots laterally. SIP credentials, LDAP bind credentials for directory integration, and SMTP relay configs stored on the host provide further footholds. Call recordings and voicemail data may be exfiltrated.
Conditions required:
  • Switchvox has network adjacency to internal resources (typical)
  • Stored credentials provide lateral movement opportunities
Where this breaks in practice:
  • Microsegmented networks that isolate the voice VLAN from corporate infrastructure limit lateral movement
Detection/coverage: NDR/IDS alerting on anomalous traffic from the VoIP VLAN; SIEM correlation of logins from the Switchvox IP.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationYES — active since August 30, 2026. Automated scanning and exploitation observed from IP 176.65.148.184. Reverse shells deployed on compromised hosts. Reported by Help Net Security and The Hacker News.
Proof of ConceptPublic. Horizon3.ai published a detailed technical writeup and exploitation details. sqlmap works out of the box against the /pa endpoint with XML injection point.
EPSS Score0.01088 (~top 5% severity band). Given active exploitation, EPSS is lagging real-world risk.
KEV StatusAdded September 2, 2026 by CISA. Federal agencies must remediate per BOD 22-01.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — Network-accessible, no privileges, no user interaction, full CIA impact. Textbook 9.8.
Affected VersionsSangoma Switchvox SMB Edition all versions prior to 8.4.0.2, confirmed on build 104997 (version 8.3).
Fixed VersionSwitchvox 8.4.0.2 (released July 14, 2026).
Internet Exposure~4,000 instances visible on Shodan, primarily in the United States. Researchers believe most exposed instances have been or will be targeted.
Disclosure TimelineDiscovered by Horizon3.ai (reported April 2026). Patch released July 14, 2026. CVE published July 17, 2026. Active exploitation began August 30, 2026. KEV listed September 2, 2026.
Researcher / ReporterHorizon3.ai Attack Research team.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

The single most decisive factor is that this is an unauthenticated, remotely exploitable SQLi-to-RCE chain on a network-edge appliance that is actively being exploited in the wild with public PoC tooling. No friction point in the attack path requires any privilege, credential, or user interaction — the entire chain fires from a single HTTP POST against a default-exposed endpoint.

HIGH Vulnerability severity and exploitability
HIGH Active exploitation status
MEDIUM Total internet-exposed population (Shodan estimate)

Why this verdict

  • Zero authentication barrier: The /pa endpoint requires no credentials, tokens, or session state. Any host that can reach the HTTPS port can fire the exploit — this is the most favorable attacker position possible (AV:N/PR:N/UI:N).
  • Active KEV listing with confirmed campaigns: CISA added this to KEV on September 2, 2026, based on observed exploitation. Automated scanning has been hitting exposed instances since August 30. This is not theoretical.
  • Public, weaponized PoC: Horizon3.ai's disclosure provides sufficient detail that sqlmap and custom scripts work out of the box. The barrier to entry for even low-skill attackers is effectively zero.
  • Role multiplier: Switchvox is a network-edge VoIP appliance. In typical SMB deployments, it sits at the network perimeter or on a voice VLAN with routes to internal infrastructure. (a) *Low-value role:* lab/test PBX — blast radius is host-only. (b) *Typical role:* production PBX for a single site — blast radius is host + voice data + pivot to internal network. (c) *High-value role:* primary telephony gateway bridging external PSTN and internal network, often storing LDAP bind credentials, SIP auth secrets, call recordings (potentially regulated under HIPAA/PCI if recording payment or health calls), and SMTP relay configs. Compromise at this role = internal network pivot + sensitive data exfiltration. This is a network edge appliance in the high-value-role catalog. The chain succeeds identically across all roles. ≥80% of Switchvox installs serve as production PBX (typical or high-value role). The verdict floor is CRITICAL.
  • No friction compounds against exploitation: Unlike vulns requiring local access, auth, or unusual configs, every default Switchvox install with an internet-reachable web port is exploitable. The only mitigant is network-level blocking, which ~4,000 orgs have evidently not applied.

Why not higher?

The CVSS 3.1 score is already 9.8, which is effectively the ceiling. The Scope is Unchanged (the vuln compromises the Switchvox host, not a separate security domain directly), which is the only reason it isn't 10.0. There is no reasonable higher bucket.

Why not lower?

Every downgrade factor is absent: the vuln requires no authentication, no user interaction, no local access, no unusual configuration. It is actively exploited in the wild, KEV-listed, has public PoC, and targets a network-edge appliance where compromise yields internal network pivot. Downgrading would be indefensible.

05 · Compensating Control

What to do — in priority order.

  1. Block all external access to Switchvox web interface immediately — Place Switchvox behind a firewall rule or VPN that restricts HTTPS (port 443) access to the management and /pa endpoint from untrusted networks. This is the single most effective compensating control — if the endpoint isn't reachable, the exploit can't fire. Deploy within hours given KEV active exploitation status.
  2. Apply Switchvox 8.4.0.2 update — This is the definitive fix. Sangoma released 8.4.0.2 on July 14, 2026. Under the noisgate mitigation SLA for CRITICAL with active exploitation, patch/mitigate immediately — within hours, not days. Schedule the update during the next maintenance window, ideally tonight.
  3. Block egress from the Switchvox appliance — Configure outbound firewall rules so the Switchvox host can only reach required SIP trunking providers, NTP, and update servers. Block all other egress. This prevents a compromised host from establishing reverse shell callbacks. Deploy within 3 days per noisgate mitigation SLA for CRITICAL.
  4. Hunt for indicators of compromise — Check for unexpected outbound connections from Switchvox (especially to 176.65.148.184), new cron jobs, unfamiliar processes spawned by PostgreSQL, and recently written files in /tmp or /var/tmp. Review PostgreSQL logs for anomalous queries against the provisioning tables. Do this today.
  5. Rotate all credentials stored on Switchvox — After patching, rotate SIP trunk credentials, LDAP bind passwords, SMTP relay credentials, and any admin passwords stored on or accessible from the Switchvox appliance. Assume these were exfiltrated if the host was internet-exposed prior to patching.
What doesn't work
  • WAF with generic SQLi rules — the injection point is inside an XML body field (PhoneIP), not a URL parameter or form field. Many WAFs don't inspect XML payloads deeply enough to catch this, and tuning XML-aware SQLi detection takes time you don't have.
  • IP-based blocklisting of known attacker IPs — the observed IP (176.65.148.184) is one of potentially many. Blocking a single IP provides false confidence while new scanners spin up daily.
  • Disabling the /pa endpoint via application config — Switchvox does not provide a supported method to disable the phone provisioning endpoint without breaking IP phone auto-provisioning, which is core functionality.
06 · Verification

Crowdsourced verification payload.

Run this script on the Switchvox appliance itself (SSH as root) or from an auditor workstation that can reach the Switchvox HTTPS port. Usage: bash check_cve_2026_9586.sh <switchvox_host>. No special privileges needed when run remotely; root needed for local version check.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_9586.sh — Detect CVE-2026-9586 vulnerable Switchvox
# Usage: bash check_cve_2026_9586.sh <hostname_or_ip>
# Exit codes: 1=VULNERABLE, 0=PATCHED, 2=UNKNOWN

set -euo pipefail

HOST="${1:-}"

if [ -z "$HOST" ]; then
  echo "Usage: $0 <switchvox_host_or_ip>"
  exit 2
fi

# Method 1: If running locally on the appliance, check installed version
if [ "$HOST" = "localhost" ] || [ "$HOST" = "127.0.0.1" ]; then
  if command -v switchvox_version &>/dev/null; then
    VER=$(switchvox_version 2>/dev/null || true)
  elif [ -f /etc/switchvox/version ]; then
    VER=$(cat /etc/switchvox/version)
  else
    VER=""
  fi
  if [ -n "$VER" ]; then
    echo "Detected Switchvox version: $VER"
    # Compare against fixed version 8.4.0.2
    if echo "$VER" | grep -qE '^8\.[0-3]\.' || echo "$VER" | grep -qE '^8\.4\.0\.[01]$'; then
      echo "VULNERABLE — version $VER is below 8.4.0.2"
      exit 1
    else
      echo "PATCHED — version $VER is 8.4.0.2 or later"
      exit 0
    fi
  fi
fi

# Method 2: Remote check — probe /pa endpoint for existence
echo "Probing $HOST for /pa endpoint..."
HTTP_CODE=$(curl -sk -o /dev/null -w '%{http_code}' \
  -X POST "https://${HOST}/pa" \
  -H 'Content-Type: text/xml' \
  -d '<?xml version="1.0"?><PhoneConfig><PhoneIP>127.0.0.1</PhoneIP></PhoneConfig>' \
  --connect-timeout 10 --max-time 15 2>/dev/null || echo "000")

if [ "$HTTP_CODE" = "000" ]; then
  echo "UNKNOWN — could not connect to $HOST on HTTPS"
  exit 2
elif [ "$HTTP_CODE" = "200" ] || [ "$HTTP_CODE" = "500" ]; then
  echo "VULNERABLE — /pa endpoint is reachable (HTTP $HTTP_CODE). Verify Switchvox version is below 8.4.0.2."
  echo "NOTE: This confirms endpoint exposure. Confirm version via admin UI or SSH."
  exit 1
elif [ "$HTTP_CODE" = "404" ] || [ "$HTTP_CODE" = "403" ]; then
  echo "PATCHED or mitigated — /pa endpoint returned HTTP $HTTP_CODE (blocked or removed)"
  exit 0
else
  echo "UNKNOWN — /pa endpoint returned HTTP $HTTP_CODE. Manual investigation required."
  exit 2
fi
07 · Bottom Line

If you remember one thing.

TL;DR
This is a live-fire emergency. CVE-2026-9586 is actively being exploited as of August 30, was added to CISA KEV on September 2, and requires zero authentication to achieve full RCE on your Switchvox PBX. Because KEV-listed exploitation is confirmed, the noisgate mitigation SLA is overridden: patch or mitigate immediately, within hours — not days. Monday morning action: (1) confirm whether your Switchvox instance is internet-exposed, (2) if it is, block external access to the web interface *right now* and hunt for IoCs (outbound connections to 176.65.148.184, rogue processes under PostgreSQL), (3) apply Switchvox 8.4.0.2 during tonight's maintenance window, (4) rotate all credentials stored on the appliance (SIP, LDAP, SMTP). Under the noisgate remediation SLA for CRITICAL, full patching must be complete within 90 days, but given active exploitation you should treat this as a same-day emergency. If you run Switchvox and it's on the internet, assume compromise until proven otherwise.

Sources

  1. Horizon3.ai Disclosure
  2. Help Net Security — Active Exploitation Report
  3. CISA KEV Catalog Addition
  4. The Hacker News — Reverse Shell Deployment
  5. SC World — Exploitation Brief
  6. CVE Feed Detail
  7. Vulnerability-Lookup (CIRCL)
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.