SAP NetWeaver ICM2SHELL: RCE sin autenticación (CVE-2026-76964)
La jornada de parches de noviembre de SAP corrige ICM2SHELL, una RCE sin autenticación en el ICM y el Web Dispatcher, y otras tres fallas CVSS 10.0.
Resumen
- ICM2SHELL es un error de corrupción de memoria en el manejo de WebSocket del núcleo de SAP, compartido por el Internet Communication Manager (ICM) y el SAP Web Dispatcher. Una secuencia de mensajes WebSocket manipulada bloquea el proceso o ejecuta comandos como
<sid>adm. - Afecta a SAP NetWeaver AS ABAP con núcleo 7.40 o posterior y a cualquier Web Dispatcher, incluido el integrado en SAP HANA XS. AS Java no se ve afectado directamente.
- SAP califica CVE-2026-76964, CVE-2026-89126, CVE-2026-89103 y CVE-2026-120017 como CVSS v3.1 10.0 Crítico. No se conoce explotación, CISA no registra ninguna y ninguna está en KEV al 14 de noviembre de 2026.
- Aplique las notas SAP 3778530 y 3778556 para el ICM y el Web Dispatcher, 3798345 para la pasarela y 3849308 para SAML2. Los niveles de parche del núcleo están en ¿Cómo lo corrijo?.
¿Estoy afectado?
Está expuesto a ICM2SHELL cuando se cumplen estas dos condiciones:
- El sistema ejecuta SAP NetWeaver AS ABAP sobre una versión de núcleo SAP 7.40 o posterior, o ejecuta cualquier SAP Web Dispatcher.
- Un atacante puede alcanzar el puerto HTTP o HTTPS que sirve el ICM o el Web Dispatcher.
Cuenta cualquier Web Dispatcher, incluido uno autónomo y el integrado en SAP HANA XS Classic o XS Advanced. SAP NetWeaver AS Java no se ve afectado por ICM2SHELL. Un sistema dual-stack se ve afectado a través de su pila ABAP. SAP Content Server no se ve afectado. El núcleo 7.22 no se ve afectado.
La misma jornada de parches corrige otras tres fallas sin autenticación, con reglas de exposición distintas:
- PROXYGATE (CVE-2026-89103) afecta a cualquier sistema que ejecute una pasarela SAP, incluidas las pasarelas ABAP, AS Java, dual-stack y autónomas. La política de proxy de la pasarela decide si es explotable.
- La falla SAML2 (CVE-2026-120017) afecta a los sistemas NetWeaver AS ABAP que usan el proveedor de servicios SAML2 en las configuraciones que SAP describe en la nota 3849308.
| Núcleo o componente | Versiones afectadas | Nivel de parche corregido |
|---|---|---|
| Núcleo SAP y Web Dispatcher | 7.53 | 1616, 1617 |
| Núcleo SAP y Web Dispatcher | 7.54 | 710 |
| Núcleo SAP y Web Dispatcher | 7.77 | 914 |
| Núcleo SAP y Web Dispatcher | 7.93 | 401, 420 |
| Núcleo SAP y Web Dispatcher | 9.16 | 111 |
| Núcleo SAP | 9.18 | 37 |
| Núcleo SAP | 9.20 | 11, 13 |
| Web Dispatcher de SAP HANA 2.0 en XS Classic | revisiones 079 y 089 | 2.00.079.11, 2.00.089.05 |
| SAP XS Advanced y XS Runtime 1 | SP05 | parche 4 |
| Núcleos fuera de mantenimiento | 7.40, 7.41, 7.42, 7.45, 7.49, 7.73, 7.81, 7.85, 7.89 | sin corrección; actualizar |
Para el núcleo 7.93, un número de parche mayor no demuestra que incluya la corrección: PL 419 sigue afectado. Use el Stack Kernel PL 401 actualizado, PL 402 cuando se publique, o PL 420 o posterior, y consulte la FAQ 6 de la nota SAP 3778788 para la rama correcta.
La tabla contiene nueve filas corregidas y una fila para los núcleos que SAP ya no mantiene. Estos son los niveles de parche de las fallas del ICM y del Web Dispatcher. Los niveles de parche de la pasarela son distintos y aparecen en ¿Cómo lo corrijo?.
La jornada de parches de noviembre de SAP publicó 43 notas de seguridad nuevas y actualizadas, incluidas 12 HotNews y 13 High Priority. Cuatro tienen CVSS v3.1 10.0.
Compruebe el núcleo en ejecución en cada servidor de aplicaciones y cada Web Dispatcher, no solo en la instancia primaria:
# On every application server, including each additional one
disp+work -v
# Through sapcontrol, for each instance number
sapcontrol -nr <NR> -function GetVersionInfo | grep -Ei 'kernel|patch'
# Gateway proxy mode: 1 is restrictive, 0 or an absent parameter is the default allow-all
sapcontrol -nr <NR> -function ParameterValue gw/acl_mode_proxy
disp+work -v muestra la versión del núcleo y el número de parche del binario en ejecución. Compare ese número con la fila de su versión. En un Web Dispatcher, lea los mismos valores en su salida de versión o en las primeras líneas de dev_webdisp del directorio de trabajo de la instancia.
¿Cómo lo corrijo?
Aplique las notas SAP para cada componente afectado y reinícielo, porque la corrección se entrega en el binario del núcleo.
- Aplique la nota 3778530 a cada servidor de aplicaciones AS ABAP y la nota 3778556 a cada Web Dispatcher, incluidos los componentes integrados en HANA XS y XS Advanced. Alcance el nivel de parche de la tabla.
- Aplique la nota 3798345 a cada pasarela y después ajuste
gw/acl_mode_proxy = 1donde el núcleo lo admita. Los núcleos 7.93 y 9.16 ya admiten el parámetro. Los núcleos 7.22, 7.53, 7.54, 7.77 y 8.04 lo incorporan con la nota. - Aplique la nota 3849308 a las versiones SAP_BASIS afectadas para la falla SAML2 y después revise los proveedores de identidad de confianza en la transacción SAML2.
- Reinicie cada componente corregido y confirme el número de parche del núcleo en ejecución. Un support package instalado sin reinicio deja el binario vulnerable en memoria.
- Restrinja el acceso de red a los puertos HTTP/HTTPS del ICM y del Web Dispatcher, y a los puertos 33NN y 48NN de la pasarela.
La corrección de la pasarela usa sus propios niveles, porque el código de la pasarela es otra parte del núcleo:
| Núcleo | Parche mínimo requerido |
|---|---|
| 7.22 EXT, 7.22_EX2, 7.22_EX3 | 1612 |
| 7.53 | 1625 |
| 7.54 | 718 |
| 7.77 | 915 |
| 8.04 | 244 |
| 9.20 | 16 |
| 9.21 | 4 |
Los núcleos 7.20, 7.21, 7.40, 7.41, 7.42, 7.45, 7.49, 7.73, 7.81, 7.85 y 7.89 están fuera de mantenimiento. Actualícelos a un núcleo compatible hacia versiones anteriores que siga mantenido, como describe la nota SAP 3810197.
Dos soluciones alternativas compatibles con SAP reducen la exposición a ICM2SHELL. Ninguna sustituye al parche y ambas cambian el comportamiento.
- Desactive WebSocket. Ajuste
icm/HTTP/support_websocket_upgrade=FALSEen el perfil y reinicie el ICM o el Web Dispatcher. Esto elimina la ruta vulnerable, pero rompe los ABAP Push Channels y algunos escenarios de Fiori e integración. Revise primero el registro HTTP para el código de estado 101, porque un sistema sin tráfico WebSocket pierde menos. - Proteja los backends con un Web Dispatcher corregido. Un Web Dispatcher en 7.53 PL 1629, 7.54 PL 723, 7.93 PL 430, 9.16 PL 200 o posterior solo protege los sistemas a los que se llega exclusivamente a través de él. No protege un backend al que un atacante pueda llegar directamente. Tampoco funciona cuando el Web Dispatcher usa
icm/server_port_<x> = PROT=ROUTER.
En la pasarela, un archivo prxyinfo restrictivo es el control intermedio. Sustituya cualquier regla como P SOURCE=* DEST=* por reglas limitadas a hosts y destinos de confianza. Cuando no existe un archivo prxyinfo y el núcleo aún no admite el parámetro, cree uno hasta aplicar el parche. SAP no enumera ninguna solución alternativa que sustituya a la nota 3798345.
El análisis público no enumera ninguna solución alternativa para la falla SAML2. Aplicar la nota 3849308 es la corrección.
¿Cuál es la causa raíz?
El ICM es el componente del núcleo de SAP que recibe el tráfico HTTP, HTTPS y WebSocket de un sistema ABAP. Cada sesión de navegador, aplicación Fiori, llamada OData y solicitud de servicio web pasa por él. El SAP Web Dispatcher es un proxy inverso construido sobre el mismo código del núcleo, y reensambla los mensajes WebSocket por sí mismo en lugar de solo reenviarlos.
ICM2SHELL es un error de corrupción de memoria de montón en ese paso de reensamblaje de WebSocket. Una conexión WebSocket empieza como una solicitud HTTP que pide una actualización de protocolo. Los mensajes pueden dividirse en fragmentos, y el receptor los une antes de entregar el mensaje a la aplicación. Onapsis encontró que algunos parámetros de tamaño y longitud de las tramas de control WebSocket no se validan correctamente.
Una secuencia de tramas manipulada hace que el ICM o el Web Dispatcher escriban datos controlados por el atacante más allá de la memoria reservada para la conexión. El resultado es un bloqueo inmediato o una corrupción de montón controlada. El núcleo de SAP es de código cerrado, así que ninguna función vulnerable es pública; Onapsis describe el mecanismo en su aviso.
PROXYGATE es una falla distinta del núcleo en la forma en que la pasarela aplica su lista de control de acceso de proxy. La pasarela SAP inicia programas auxiliares y retransmite conexiones RFC. Su archivo prxyinfo enumera qué orígenes pueden abrir una conexión de proxy y a dónde pueden ir esas conexiones. Cuando falta el archivo, el parámetro de perfil gw/acl_mode_proxy decide el comportamiento predeterminado. Se entrega en 0, lo que permite todas las conexiones de proxy.
La lista de control de acceso predeterminada de SAP también clasifica a un atacante externo como servidor de aplicaciones interno. Por eso una solicitud manipulada pasa la regla de permitir interno, y la pasarela inicia el programa que el atacante pide.
La falla SAML2 es una brecha en la verificación de aserciones. SAP indica que el proveedor de servicios SAML2 no verifica suficientemente las aserciones de autenticación entrantes en ciertas configuraciones. Un atacante sin autenticación puede enviar una aserción manipulada y obtener una sesión como un usuario arbitrario, incluido uno privilegiado.
¿Cómo se explota?
No hay código de prueba de concepto público para ICM2SHELL. Onapsis retuvo los detalles técnicos de explotación y entregó a SAP un exploit funcional de extremo a extremo, así que los pasos describen la ruta que su aviso hace pública.
- Alcance el puerto HTTP o HTTPS del ICM o del Web Dispatcher. La compatibilidad con WebSocket está activada por defecto, incluso en sistemas que no la usan.
- Complete la actualización de WebSocket. Algunos servicios ICF predeterminados de SAP S/4HANA aceptan conexiones WebSocket sin autenticación.
- Envíe una secuencia manipulada de tramas de control WebSocket cuyos campos de tamaño o longitud no coincidan con los datos que siguen.
- El código de reensamblaje confía en esos valores y escribe más allá del búfer reservado para la conexión. Una secuencia malformada bloquea el proceso.
- Moldee la memoria corrupta para redirigir la ejecución. Onapsis afirma que su exploit ejecuta comandos del sistema operativo como
<sid>admde extremo a extremo.
PROXYGATE toma otra ruta hacia la misma cuenta:
- Alcance un puerto de pasarela, 33NN o 48NN, desde una red que la política de proxy trate como no confiable.
- Envíe la solicitud de proxy manipulada. La clasificación defectuosa hace que la pasarela trate el origen como un servidor de aplicaciones interno.
- La regla de permitir interno pasa, y la pasarela inicia el programa que nombra la solicitud con los privilegios de
<sid>adm.
La falla SAML2 no necesita ejecución de comandos:
- Alcance el endpoint del proveedor de servicios SAML2.
- Envíe una aserción de autenticación manipulada en la configuración afectada.
- El servicio la acepta sin verificación suficiente y crea una sesión para el usuario que nombra.
¿Cómo se desarrolla el ataque?
Un WebSocket manipulado alcanza el ICM o el Web Dispatcher, corrompe su montón y ejecuta comandos como <sid>adm. PROXYGATE permite por separado comandos del sistema con esa cuenta; la falla SAML2 suplanta a un usuario de la aplicación SAP, incluido un administrador.
(sin validación de tamaño)"] D --> E["Bloqueo o corrupción del montón"] E --> F["Comandos del sistema como
¿Qué puede hacer un atacante?
ICM2SHELL da a un atacante sin autenticación y con acceso de red el mismo control que la cuenta <sid>adm propietaria de la instalación SAP.
- Leer credenciales de base de datos y otros secretos del almacén seguro y de los perfiles de instancia, y después leer o modificar datos de negocio directamente en la base de datos.
- Recopilar destinos RFC y credenciales técnicas, y después desplazarse a sistemas SAP y no SAP conectados.
- Cambiar la configuración o los binarios y mantener un acceso persistente.
- Detener el sistema o destruir datos, lo que deja fuera de línea los procesos de negocio que ejecuta.
Una sola conexión malformada también puede bloquear el ICM o el Web Dispatcher. Mientras el proceso se reinicia, cada aplicación Fiori, API y servicio web que sirve queda indisponible, y los intentos repetidos lo mantienen caído.
PROXYGATE da la misma ejecución de comandos que <sid>adm sin autenticación, pero solo cuando la política de proxy de la pasarela es permisiva o falta. Un prxyinfo restrictivo bloquea la ruta desde redes no confiables.
La falla SAML2 da una sesión como cualquier usuario SAP, incluido un administrador. Depende de la configuración SAML2 que describe SAP, y puede extenderse a sistemas conectados mediante las autorizaciones del usuario suplantado.
¿Por qué funciona la corrección?
El parche del núcleo cierra la brecha de validación que Onapsis describe en el paso de reensamblaje de WebSocket.
La nota 3778530 y la nota 3778556 entregan el código del núcleo corregido en los niveles de parche de la tabla. La corrección cubre el ICM y el Web Dispatcher porque comparten el código.
La nota 3798345 cambia el comportamiento de proxy predeterminado de la pasarela y añade gw/acl_mode_proxy. Después de la nota, el operador debe ajustar el parámetro a 1 para que un prxyinfo ausente sea restrictivo en lugar de permitirlo todo. La nota 3849308 añade la verificación faltante de las aserciones SAML2 entrantes.
SAP no publica un diff de parche para estos componentes de código cerrado, así que la corrección no puede comprobarse línea por línea. Onapsis sitúa la falla en el paso de reensamblaje, y las notas de SAP enumeran los niveles de parche. Ninguno de los dos proveedores publica el código modificado.
¿Cómo compruebo si estuve comprometido?
Ni SAP ni Onapsis han publicado indicadores de compromiso para ICM2SHELL. Las comprobaciones siguientes buscan el patrón de bloqueo y reinicio que deja un intento, y la actividad de pasarela y SAML2 que producirían las otras fallas.
- En cada servidor de aplicaciones y Web Dispatcher, inspeccione
dev_icmydev_webdispen/usr/sap/<SID>/<INSTANCE>/work/para detectar paradas inesperadas, pánicos o reinicios fuera de una ventana de mantenimiento. - Compare los identificadores de proceso de
icmanysapwebdispcon el último reinicio planificado. Un cambio sin parche ni reinicio es una pista. - Busque en el registro HTTP del ICM o del Web Dispatcher el código de estado 101, la actualización de WebSocket. Si ninguna aplicación usa WebSocket, cualquier solicitud de ese tipo merece una revisión.
- En las pasarelas, revise
dev_gwrdy el registro de auditoría de seguridad para conexiones de proxy entrantes desde fuera de las redes de servidores SAP y para programas auxiliares iniciados fuera de tareas conocidas. - Para SAML2, revise los inicios de sesión sin un evento de autenticación correspondiente en el proveedor de identidad, y los usuarios privilegiados nuevos o modificados desde el 10 de noviembre de 2026.
Un intento que falla puede no dejar rastro más allá de un bloqueo, y un bloqueo puede tener otras causas. Trate estos resultados como pistas, no como pruebas.
Cronología
- 2026-11-10: SAP publica sus notas de seguridad de noviembre, incluidas 3778530, 3778556, 3798345 y 3849308, y los registros CVE de las cuatro fallas. Onapsis publica sus análisis de ICM2SHELL y PROXYGATE y su revisión de la jornada de parches.
- 2026-11-12: Onapsis actualiza los avisos de ICM2SHELL y PROXYGATE.
- 2026-11-14: No se informa de explotación, los registros SSVC de CISA siguen indicando ninguna, y ninguna de las cuatro CVE está en el catálogo KEV de CISA.
Preguntas frecuentes
¿Se explota ICM2SHELL en entornos reales?
No. Onapsis declaró el 10 de noviembre que no había observado explotación, el registro SSVC de CISA indica ninguna, y ninguna de las cuatro CVE está en KEV al 14 de noviembre de 2026. El exploit funcional que Onapsis entregó a SAP es una demostración, no una herramienta pública.
¿La autenticación protege un sistema SAP de ICM2SHELL?
No. La falla es alcanzable antes de la autenticación, así que basta con acceso de red al puerto HTTP o HTTPS. Algunos servicios ICF predeterminados de SAP S/4HANA aceptan conexiones WebSocket sin autenticación.
¿SAP NetWeaver AS Java está afectado?
No para ICM2SHELL. La falla está en el código del núcleo de la pila ABAP, y un sistema dual-stack se ve afectado a través de esa pila. La falla de la pasarela sí afecta a los sistemas AS Java y a las pasarelas autónomas.
¿La base de datos SAP HANA está afectada?
El Web Dispatcher integrado en HANA XS Classic y XS Advanced está afectado, y las revisiones corregidas son 2.00.079.11 y 2.00.089.05. Onapsis no nombra el motor de base de datos HANA en sí como afectado.
¿Puedo desactivar WebSocket en lugar de aplicar el parche?
Sí, si ninguna aplicación lo usa. Ajuste icm/HTTP/support_websocket_upgrade=FALSE y reinicie el componente. Esto elimina la ruta de ICM2SHELL, pero rompe los ABAP Push Channels y algunos escenarios de Fiori, así que revise primero el registro HTTP para el código 101.
¿Debo ajustar algo después de aplicar las notas?
Sí para la pasarela. Después de la nota 3798345, ajuste gw/acl_mode_proxy = 1 en los núcleos que lo admitan y mantenga un archivo prxyinfo restrictivo. Para ICM2SHELL, el parche del núcleo es la corrección, y el componente debe reiniciarse para cargar el binario corregido.
Inventariar los sistemas SAP expuestos con Ostorlab
Inventaríe los servidores de aplicaciones SAP y los Web Dispatcher accesibles en su red con el descubrimiento de superficie de ataque de Ostorlab. El equipo de Basis sabrá entonces qué hosts corregir y reiniciar primero.
Referencias
- Onapsis Research Labs, "ICM2SHELL (CVE-2026-76964 and CVE-2026-89126): A Critical Pre-Authentication Vulnerability in SAP NetWeaver's ICM and Web Dispatcher", 10 de noviembre de 2026, actualizado el 12 de noviembre de 2026: https://onapsis.com/blog/icm2shell-cve-2026-76964-cve-2026-89126-sap-netweaver-web-dispatcher-threat-advisory/ (comprobado el 14 de noviembre de 2026)
- Onapsis Research Labs, "PROXYGATE (CVE-2026-89103): A Critical Pre-Authentication Vulnerability in SAP NetWeaver's Gateway", 10 de noviembre de 2026, actualizado el 12 de noviembre de 2026: https://onapsis.com/blog/proxygate-cve-2026-89103-sap-netweaver-gateway-threat-advisory/ (comprobado el 14 de noviembre de 2026)
- Onapsis Research Labs, "SAP Security Notes: November 2026 Patch Day", 10 de noviembre de 2026, actualizado el 12 de noviembre de 2026: https://onapsis.com/blog/sap-security-patch-day-nov-2026/ (comprobado el 14 de noviembre de 2026)
- Nota de seguridad SAP 3778530, corrección del ICM para CVE-2026-76964: https://me.sap.com/notes/3778530 (comprobado el 14 de noviembre de 2026)
- Nota de seguridad SAP 3778556, corrección del Web Dispatcher para CVE-2026-89126: https://me.sap.com/notes/3778556 (comprobado el 14 de noviembre de 2026)
- Nota FAQ SAP 3778788, soluciones alternativas para ICM2SHELL: https://me.sap.com/notes/3778788 (comprobado el 14 de noviembre de 2026)
- Nota de seguridad SAP 3798345, corrección de la pasarela para CVE-2026-89103: https://me.sap.com/notes/3798345 (comprobado el 14 de noviembre de 2026)
- Nota de seguridad SAP 3849308, corrección de SAML2 para CVE-2026-120017: https://me.sap.com/notes/3849308 (comprobado el 14 de noviembre de 2026)
- Nota SAP 3810197, ruta de actualización compatible hacia versiones anteriores para núcleos fuera de mantenimiento: https://me.sap.com/notes/3810197 (comprobado el 14 de noviembre de 2026)
- Registro CVE-2026-76964, CVSS v3.1 10.0 publicado el 10 de noviembre de 2026: https://www.cve.org/CVERecord?id=CVE-2026-76964 (comprobado el 14 de noviembre de 2026)
- Registro CVE-2026-89126, CVSS v3.1 10.0 publicado el 10 de noviembre de 2026: https://www.cve.org/CVERecord?id=CVE-2026-89126 (comprobado el 14 de noviembre de 2026)
- Registro CVE-2026-89103, CVSS v3.1 10.0 publicado el 10 de noviembre de 2026: https://www.cve.org/CVERecord?id=CVE-2026-89103 (comprobado el 14 de noviembre de 2026)
- Registro CVE-2026-120017, CVSS v3.1 10.0 publicado el 10 de noviembre de 2026: https://www.cve.org/CVERecord?id=CVE-2026-120017 (comprobado el 14 de noviembre de 2026)
- Catálogo de vulnerabilidades explotadas conocidas de CISA, que no incluye ninguna de las cuatro CVE: https://www.cisa.gov/known-exploited-vulnerabilities-catalog (comprobado el 14 de noviembre de 2026, mediante el feed JSON del catálogo)