Security Vulnerability Report
中文
CVE-2026-24439 CVSS 6.5 MEDIUM

CVE-2026-24439

Published: 2026-01-26 18:16:41
Last Modified: 2026-01-28 20:01:46

Description

Shenzhen Tenda W30E V2 firmware versions up to and including V16.01.0.19(5037) fail to include the X-Content-Type-Options: nosniff response header on web management interfaces. As a result, browsers that perform MIME sniffing may incorrectly interpret attacker-influenced responses as executable script.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:o:tenda:w30e_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:tenda:w30e:2.0:*:*:*:*:*:*:* - NOT VULNERABLE
Tenda W30E V2 V16.01.0.19(5037)及之前所有版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # CVE-2026-24439 PoC - Check if X-Content-Type-Options header is missing # Target: Tenda W30E V2 Router target_ip = "192.168.0.1" # Default Tenda router IP target_url = f"http://{target_ip}/" def check_x_content_type_options(): """ Check if the target web interface is missing X-Content-Type-Options header """ print(f"[*] Testing CVE-2026-24439: Missing X-Content-Type-Options header") print(f"[*] Target: {target_url}") try: response = requests.get(target_url, timeout=10) print(f"\n[*] Response Headers:") for header, value in response.headers.items(): print(f" {header}: {value}") # Check for X-Content-Type-Options header if "X-Content-Type-Options" not in response.headers: print(f"\n[!] VULNERABLE: X-Content-Type-Options header is missing!") print(f"[!] Browser MIME sniffing may interpret responses as executable script") return True else: xcto_value = response.headers["X-Content-Type-Options"] if xcto_value.lower() != "nosniff": print(f"\n[!] VULNERABLE: X-Content-Type-Options is set to '{xcto_value}' instead of 'nosniff'") return True else: print(f"\n[+] NOT VULNERABLE: X-Content-Type-Options is properly set to 'nosniff'") return False except requests.exceptions.RequestException as e: print(f"[!] Error connecting to target: {e}") return None def exploit_scenario(): """ Demonstrate MIME sniffing attack scenario This PoC checks for the vulnerability; actual exploitation requires additional context """ print("\n[*] MIME Sniffing Attack Scenario:") print(" 1. Attacker uploads a file with embedded JS (e.g., fake image with JS payload)") print(" 2. File is served with Content-Type: image/gif") print(" 3. Browser MIME sniffing detects JS content and executes it") print(" 4. X-Content-Type-Options: nosniff would prevent this") if __name__ == "__main__": result = check_x_content_type_options() exploit_scenario()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-24439", "sourceIdentifier": "[email protected]", "published": "2026-01-26T18:16:41.463", "lastModified": "2026-01-28T20:01:46.097", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Shenzhen Tenda W30E V2 firmware versions up to and including V16.01.0.19(5037) fail to include the X-Content-Type-Options: nosniff response header on web management interfaces. As a result, browsers that perform MIME sniffing may incorrectly interpret attacker-influenced responses as executable script."}, {"lang": "es", "value": "El firmware de Shenzhen Tenda W30E V2, versiones hasta la V16.01.0.19(5037) inclusive, no incluye el encabezado de respuesta X-Content-Type-Options: nosniff en las interfaces de gestión web. Como resultado, los navegadores que realizan MIME sniffing pueden interpretar incorrectamente las respuestas influenciadas por el atacante como script ejecutable."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/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": 2.1, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "attackRequirements": "PRESENT", "privilegesRequired": "NONE", "userInteraction": "ACTIVE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "LOW", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "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:N/UI:N/S:U/C:L/I:L/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 2.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-116"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:tenda:w30e_firmware:*:*:*:*:*:*:*:*", "versionEndIncluding": "16.01.0.19\\(5037\\)", "matchCriteriaId": "4DB07B19-71FC-4936-98BD-36A8B3B7CBF0"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:tenda:w30e:2.0:*:*:*:*:*:*:*", "matchCriteriaId": "56B9C2BB-D36E-40F8-83FF-FC919337F6BD"}]}]}], "references": [{"url": "https://www.tendacn.com/product/W30E", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://www.vulncheck.com/advisories/tenda-w30e-v2-lacks-x-content-type-options-header", "source": "[email protected]", "tags": ["Third Party Advisory"]}]}}