CVE-2026-105949
El ConstraintSecurityHandler de Jetty de Cruise Control registra restricciones de seguridad sobre especificaciones de ruta exactas, sin una restricción comodín que abarque todo y sin llamar a setDenyUncoveredHttpMethods(true). El servlet enruta las peticiones usando Path.of(pathInfo).getFileName(), que elimina todos los segmentos iniciales y las barras finales. Peticiones como POST /kafkacruisecontrol/x/rebalance eluden por completo la autenticación, pero aun así se despachan a los endpoints de administración. Los 15 endpoints de administración quedan accesibles sin autenticar. En AMQ Streams, la NetworkPolicy del operador de Strimzi restringe el puerto 9090 de Cruise Control únicamente a los pods del operador, lo que reduce la gravedad efectiva a Important.
Traducción automática del texto original de NVD (en inglés).
CVSS
- Puntuación base
- 8.8
- Versión
- 3.1
- Vector
- CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Probabilidad de explotación (EPSS)
FIRST aún no ha puntuado esta CVE (habitual en CVEs muy recientes o rechazadas).
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1210Exploitation of Remote Serviceslateral movement85 % - Impacto principal
T1565Data Manipulationimpact55 %
Vector AV:A con PR:N y UI:N; la descripción indica que las peticiones eluden la autenticación y llegan a los 15 endpoints de administración de Cruise Control.
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
CWE
- CWE-287
Referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-105949",
"cveTags": [],
"metrics": {
"cvssMetricV31": [
{
"type": "Primary",
"source": "secalert@redhat.com",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 8.8,
"attackVector": "ADJACENT_NETWORK",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "HIGH",
"privilegesRequired": "NONE",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.9,
"exploitabilityScore": 2.8
}
]
},
"affected": [
{
"source": "secalert@redhat.com",
"affectedData": [
{
"versions": [
{
"status": "affected",
"version": "2.0.82",
"lessThan": "3.1.0",
"versionType": "semver"
}
],
"packageName": "Cruise Control for Apache Kafka",
"collectionURL": "https://github.com/cruise-control-for-kafka/cruise-control",
"defaultStatus": "unaffected"
},
{
"cpes": [
"cpe:/a:redhat:amq_streams:2"
],
"vendor": "Red Hat",
"product": "streams for Apache Kafka 2",
"packageName": "cruise-control",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
},
{
"cpes": [
"cpe:/a:redhat:amq_streams:3"
],
"vendor": "Red Hat",
"product": "streams for Apache Kafka 3",
"packageName": "cruise-control",
"collectionURL": "https://access.redhat.com/downloads/content/package-browser/",
"defaultStatus": "affected"
}
]
}
],
"published": "2026-10-20T12:17:28.847",
"references": [
{
"url": "https://access.redhat.com/security/cve/CVE-2026-105949",
"source": "secalert@redhat.com"
},
{
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2510878",
"source": "secalert@redhat.com"
}
],
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"type": "Primary",
"source": "secalert@redhat.com",
"description": [
{
"lang": "en",
"value": "CWE-287"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "Cruise Control's Jetty ConstraintSecurityHandler registers security constraints on exact path specs without a catch-all wildcard constraint and without calling setDenyUncoveredHttpMethods(true). The servlet routes requests using Path.of(pathInfo).getFileName(), which strips all leading segments and trailing slashes. Requests like POST /kafkacruisecontrol/x/rebalance bypass authentication entirely but still dispatch to admin endpoints. All 15 admin endpoints become reachable without authentication. In AMQ Streams, the Strimzi operator's NetworkPolicy restricts Cruise Control port 9090 to operator pods only, reducing effective severity to Important."
}
],
"lastModified": "2026-10-20T15:03:59.857",
"sourceIdentifier": "secalert@redhat.com"
}