79 % contre 51 % : les néobanques indépendantes en retard sur la sécurité des applications. Lire le rapport

Analyse approfondie

Analyse approfondie

SAP NetWeaver ICM2SHELL : RCE avant authentification (CVE-2026-76964)

La journée de correctifs de novembre de SAP corrige ICM2SHELL, une RCE avant authentification dans le noyau SAP, et trois autres failles CVSS 10,0.

En bref

  • ICM2SHELL est une corruption de mémoire dans la gestion des WebSocket du noyau SAP, partagée par l'Internet Communication Manager (ICM) et le SAP Web Dispatcher. Une séquence de messages WebSocket forgée fait planter le processus ou exécute des commandes en tant que <sid>adm.
  • Elle touche SAP NetWeaver AS ABAP sur noyau 7.40 et versions ultérieures, ainsi que tout Web Dispatcher, y compris celui intégré à SAP HANA XS. AS Java n'est pas touché directement.
  • SAP note CVE-2026-76964, CVE-2026-89126, CVE-2026-89103 et CVE-2026-120017 CVSS v3.1 10,0 Critique. Aucune exploitation n'est connue, la CISA n'en recense aucune et aucune n'est dans KEV au 14 novembre 2026.
  • Appliquez les notes SAP 3778530 et 3778556 pour l'ICM et le Web Dispatcher, 3798345 pour la passerelle et 3849308 pour SAML2. Les niveaux de correctif du noyau sont dans Comment corriger ?.

Suis-je concerné ?

Vous êtes exposé à ICM2SHELL lorsque ces deux conditions sont réunies :

  • Le système exécute SAP NetWeaver AS ABAP sur une version de noyau SAP 7.40 ou ultérieure, ou il exécute un SAP Web Dispatcher.
  • Un attaquant peut joindre le port HTTP ou HTTPS que sert l'ICM ou le Web Dispatcher.

Tout Web Dispatcher compte, y compris un Web Dispatcher autonome et celui intégré à SAP HANA XS Classic ou XS Advanced. SAP NetWeaver AS Java n'est pas touché par ICM2SHELL. Un système dual-stack est touché par sa pile ABAP. SAP Content Server n'est pas touché. Le noyau 7.22 n'est pas touché.

La même journée de correctifs corrige trois autres failles avant authentification, avec des règles d'exposition distinctes :

  • PROXYGATE (CVE-2026-89103) touche tout système qui exécute une passerelle SAP, y compris les passerelles ABAP, AS Java, dual-stack et autonomes. La politique de proxy de la passerelle décide si elle est exploitable.
  • La faille SAML2 (CVE-2026-120017) touche les systèmes NetWeaver AS ABAP qui utilisent le fournisseur de services SAML2 dans les configurations décrites par SAP dans la note 3849308.
Noyau ou composant Versions concernées Niveau de correctif
Noyau SAP et Web Dispatcher 7.53 1616, 1617
Noyau SAP et Web Dispatcher 7.54 710
Noyau SAP et Web Dispatcher 7.77 914
Noyau SAP et Web Dispatcher 7.93 401, 420
Noyau SAP et Web Dispatcher 9.16 111
Noyau SAP 9.18 37
Noyau SAP 9.20 11, 13
Web Dispatcher de SAP HANA 2.0 dans XS Classic révisions 079 et 089 2.00.079.11, 2.00.089.05
SAP XS Advanced et XS Runtime 1 SP05 correctif 4
Noyaux hors maintenance 7.40, 7.41, 7.42, 7.45, 7.49, 7.73, 7.81, 7.85, 7.89 aucun correctif ; mise à niveau

Pour le noyau 7.93, un numéro de correctif supérieur ne prouve pas que la correction est présente : PL 419 reste affecté. Utilisez le Stack Kernel PL 401 mis à jour, PL 402 une fois publié, ou PL 420 ou ultérieur, et vérifiez la branche dans la FAQ 6 de la note SAP 3778788.

Le tableau contient neuf lignes corrigées et une ligne pour les noyaux que SAP ne maintient plus. Ce sont les niveaux de correctif des failles de l'ICM et du Web Dispatcher. Les niveaux de correctif de la passerelle sont différents et figurent dans Comment corriger ?.

La journée de correctifs de novembre de SAP a publié 43 notes de sécurité nouvelles et mises à jour, dont 12 HotNews et 13 High Priority. Quatre portent un CVSS v3.1 10,0.

La journée de correctifs de novembre 2026 de SAP a publié 43 notes
Figure 1 : notes publiées lors de la journée de correctifs de novembre 2026 de SAP. Source : Onapsis, SAP Security Notes: November 2026 Patch Day, vérifié le 14 novembre 2026

Vérifiez le noyau en cours sur chaque serveur d'application et chaque Web Dispatcher, pas seulement sur l'instance primaire :

# 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 affiche la version du noyau et le numéro de correctif du binaire en cours. Comparez ce numéro à la ligne de votre version. Sur un Web Dispatcher, lisez les mêmes valeurs dans sa sortie de version ou dans les premières lignes de dev_webdisp du répertoire de travail de l'instance.

Comment corriger ?

Appliquez les notes SAP pour chaque composant concerné et redémarrez-le, car le correctif est livré dans le binaire du noyau.

  1. Appliquez la note 3778530 à chaque serveur d'application AS ABAP et la note 3778556 à chaque Web Dispatcher, y compris les composants intégrés à HANA XS et XS Advanced. Atteignez le niveau de correctif du tableau.
  2. Appliquez la note 3798345 à chaque passerelle, puis réglez gw/acl_mode_proxy = 1 là où le noyau le permet. Les noyaux 7.93 et 9.16 prennent déjà en charge le paramètre. Les noyaux 7.22, 7.53, 7.54, 7.77 et 8.04 l'obtiennent avec la note.
  3. Appliquez la note 3849308 aux versions SAP_BASIS concernées pour la faille SAML2, puis vérifiez les fournisseurs d'identité de confiance dans la transaction SAML2.
  4. Redémarrez chaque composant corrigé et confirmez le numéro de correctif du noyau en cours. Un support package installé sans redémarrage laisse le binaire vulnérable en mémoire.
  5. Restreignez l'accès réseau aux ports HTTP/HTTPS de l'ICM et du Web Dispatcher, ainsi qu'aux ports 33NN et 48NN de la passerelle.

Le correctif de la passerelle utilise ses propres niveaux, car le code de la passerelle est une autre partie du noyau :

Noyau Correctif minimum requis
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

Les noyaux 7.20, 7.21, 7.40, 7.41, 7.42, 7.45, 7.49, 7.73, 7.81, 7.85 et 7.89 sont hors maintenance. Mettez-les à niveau vers un noyau compatible vers le bas encore maintenu, comme le décrit la note SAP 3810197.

Deux contournements pris en charge par SAP réduisent l'exposition à ICM2SHELL. Aucun ne remplace le correctif, et les deux changent le comportement.

  1. Désactivez WebSocket. Réglez icm/HTTP/support_websocket_upgrade=FALSE dans le profil et redémarrez l'ICM ou le Web Dispatcher. Cela supprime le chemin vulnérable, mais casse les ABAP Push Channels et certains scénarios Fiori et d'intégration. Vérifiez d'abord le journal HTTP pour le code de statut 101, car un système sans trafic WebSocket perd moins.
  2. Protégez les backends avec un Web Dispatcher corrigé. Un Web Dispatcher en 7.53 PL 1629, 7.54 PL 723, 7.93 PL 430, 9.16 PL 200 ou ultérieur ne protège que les systèmes joints exclusivement par lui. Il ne protège pas un backend qu'un attaquant peut joindre directement. Il ne fonctionne pas non plus lorsque le Web Dispatcher utilise icm/server_port_<x> = PROT=ROUTER.

Sur la passerelle, un fichier prxyinfo restrictif est le contrôle intermédiaire. Remplacez toute règle comme P SOURCE=* DEST=* par des règles limitées à des hôtes et des destinations de confiance. Lorsqu'aucun fichier prxyinfo n'existe et que le noyau ne prend pas encore en charge le paramètre, créez-en un jusqu'à l'application du correctif. SAP ne liste aucun contournement qui remplace la note 3798345.

L'analyse publique ne liste aucun contournement pour la faille SAML2. Appliquer la note 3849308 est la correction.

Quelle est la cause racine ?

L'ICM est le composant du noyau SAP qui reçoit le trafic HTTP, HTTPS et WebSocket d'un système ABAP. Chaque session de navigateur, application Fiori, appel OData et requête de service web passe par lui. Le SAP Web Dispatcher est un proxy inverse construit sur le même code du noyau, et il réassemble lui-même les messages WebSocket au lieu de seulement les transmettre.

ICM2SHELL est une corruption de mémoire de tas dans cette étape de réassemblage des WebSocket. Une connexion WebSocket commence par une requête HTTP qui demande une mise à niveau. Les messages peuvent ensuite être découpés en fragments, et le destinataire les assemble avant de remettre le message à l'application. Onapsis a constaté que certains paramètres de taille et de longueur des trames de contrôle WebSocket ne sont pas correctement validés.

Une séquence de trames forgée fait écrire à l'ICM ou au Web Dispatcher des données contrôlées par l'attaquant au-delà de la mémoire réservée à la connexion. Le résultat est un plantage immédiat ou une corruption de tas contrôlée. Le noyau de SAP est propriétaire, donc aucune fonction vulnérable n'est publique ; Onapsis décrit le mécanisme dans son avis.

PROXYGATE est une faille distincte du noyau dans la façon dont la passerelle applique sa liste de contrôle d'accès proxy. La passerelle SAP démarre des programmes auxiliaires et relaie des connexions RFC. Son fichier prxyinfo liste les sources autorisées à ouvrir une connexion proxy et les destinations de ces connexions. Lorsque le fichier manque, le paramètre de profil gw/acl_mode_proxy décide du comportement par défaut. Il est livré à 0, ce qui autorise toutes les connexions proxy.

La liste de contrôle d'accès par défaut de SAP classe aussi un attaquant externe comme un serveur d'application interne. Une requête forgée passe donc la règle « autoriser interne », et la passerelle démarre le programme demandé.

La faille SAML2 est un défaut de vérification des assertions. SAP indique que le fournisseur de services SAML2 ne vérifie pas suffisamment les assertions d'authentification entrantes dans certaines configurations. Un attaquant non authentifié peut soumettre une assertion forgée et obtenir une session pour un utilisateur arbitraire, y compris privilégié.

Comment la faille est-elle exploitée ?

Il n'existe pas de code de preuve de concept public pour ICM2SHELL. Onapsis a retenu les détails techniques d'exploitation et a fourni à SAP un exploit complet fonctionnel ; les étapes suivantes décrivent donc le chemin que son avis rend public.

  1. Joignez le port HTTP ou HTTPS de l'ICM ou du Web Dispatcher. La prise en charge de WebSocket est active par défaut, même sur les systèmes qui ne l'utilisent pas.
  2. Effectuez la mise à niveau WebSocket. Certains services ICF par défaut de SAP S/4HANA acceptent des connexions WebSocket sans authentification.
  3. Envoyez une séquence forgée de trames de contrôle WebSocket dont les champs de taille ou de longueur ne correspondent pas aux données qui suivent.
  4. Le code de réassemblage fait confiance à ces valeurs et écrit au-delà du tampon réservé à la connexion. Une séquence malformée fait planter le processus.
  5. Façonnez la mémoire corrompue pour détourner l'exécution. Onapsis indique que son exploit exécute des commandes du système d'exploitation en tant que <sid>adm de bout en bout.

PROXYGATE emprunte une autre route vers le même compte :

  1. Joignez un port de passerelle, 33NN ou 48NN, depuis un réseau que la politique de proxy traite comme non fiable.
  2. Envoyez la requête proxy forgée. La classification défaillante fait traiter la source comme un serveur d'application interne.
  3. La règle « autoriser interne » passe, et la passerelle démarre le programme nommé par la requête avec les privilèges de <sid>adm.

La faille SAML2 ne nécessite aucune exécution de commande :

  1. Joignez le point de terminaison du fournisseur de services SAML2.
  2. Soumettez une assertion d'authentification forgée dans la configuration concernée.
  3. Le service l'accepte sans vérification suffisante et crée une session pour l'utilisateur qu'elle nomme.

Comment se déroule l'attaque ?

Un WebSocket forgé atteint l'ICM ou le Web Dispatcher, corrompt son tas et exécute des commandes en tant que <sid>adm. PROXYGATE permet séparément des commandes système sous ce compte ; la faille SAML2 usurpe un utilisateur de l'application SAP, y compris un administrateur.

flowchart LR A["L'attaquant joint le port HTTP ou HTTPS"] --> B["Mise à niveau WebSocket acceptée"] B --> C["Trames de contrôle malformées"] C --> D["Le réassemblage écrit au-delà du tampon
(aucune validation de taille)"] D --> E["Plantage ou corruption du tas"] E --> F["Commandes système en tant que adm"]

Que peut faire un attaquant ?

ICM2SHELL donne à un attaquant non authentifié disposant d'un accès réseau le même contrôle que le compte <sid>adm qui possède l'installation SAP.

  • Lire les identifiants de base de données et d'autres secrets dans le secure store et les profils d'instance, puis lire ou modifier les données métier directement dans la base.
  • Collecter les destinations RFC et les identifiants techniques, puis atteindre les systèmes SAP et non SAP connectés.
  • Modifier la configuration ou les binaires et conserver un accès persistant.
  • Arrêter le système ou détruire des données, ce qui met hors ligne les processus métier qu'il exécute.

Une seule connexion malformée peut aussi faire planter l'ICM ou le Web Dispatcher. Pendant le redémarrage, chaque application Fiori, API et service web qu'il sert est indisponible, et des tentatives répétées le maintiennent hors ligne.

PROXYGATE donne la même exécution de commandes que <sid>adm sans authentification, mais seulement lorsque la politique de proxy de la passerelle est permissive ou absente. Un prxyinfo restrictif bloque le chemin depuis les réseaux non fiables.

La faille SAML2 donne une session pour n'importe quel utilisateur SAP, y compris un administrateur. Elle dépend de la configuration SAML2 décrite par SAP, et elle peut s'étendre aux systèmes connectés via les autorisations de l'utilisateur usurpé.

Pourquoi le correctif fonctionne-t-il ?

Le correctif du noyau comble le défaut de validation décrit par Onapsis dans l'étape de réassemblage des WebSocket.

La note 3778530 et la note 3778556 livrent le code du noyau corrigé aux niveaux de correctif du tableau. Le correctif couvre l'ICM et le Web Dispatcher parce qu'ils partagent le code.

La note 3798345 change le comportement proxy par défaut de la passerelle et ajoute gw/acl_mode_proxy. Après la note, l'opérateur doit régler le paramètre à 1 pour qu'un prxyinfo absent soit restrictif au lieu de tout autoriser. La note 3849308 ajoute la vérification manquante des assertions SAML2 entrantes.

SAP ne publie aucun diff de correctif pour ces composants propriétaires, donc le correctif ne peut pas être vérifié ligne par ligne. Onapsis situe la faille dans l'étape de réassemblage, et les notes de SAP listent les niveaux de correctif. Aucun des deux éditeurs ne publie le code modifié.

Comment vérifier si j'ai été compromis ?

Ni SAP ni Onapsis n'a publié d'indicateurs de compromission pour ICM2SHELL. Les contrôles suivants recherchent le schéma de plantage et de redémarrage qu'une tentative laisse, ainsi que l'activité de passerelle et SAML2 que les autres failles produiraient.

  • Sur chaque serveur d'application et Web Dispatcher, inspectez dev_icm et dev_webdisp dans /usr/sap/<SID>/<INSTANCE>/work/ pour des arrêts inattendus, des paniques ou des redémarrages hors fenêtre de maintenance.
  • Comparez les identifiants de processus de icman et sapwebdisp avec le dernier redémarrage planifié. Un changement sans correctif ni redémarrage est une piste.
  • Recherchez dans le journal HTTP de l'ICM ou du Web Dispatcher le code de statut 101, la mise à niveau WebSocket. Si aucune application n'utilise WebSocket, toute requête de ce type mérite un examen.
  • Sur les passerelles, examinez dev_gwrd et le journal d'audit de sécurité pour les connexions proxy entrantes hors des réseaux de serveurs SAP et pour les programmes auxiliaires lancés hors des tâches connues.
  • Pour SAML2, examinez les connexions sans événement d'authentification correspondant chez le fournisseur d'identité, ainsi que les utilisateurs privilégiés nouveaux ou modifiés depuis le 10 novembre 2026.

Une tentative qui échoue peut ne laisser aucune trace au-delà d'un plantage, et un plantage peut avoir d'autres causes. Traitez ces résultats comme des pistes, pas comme des preuves.

Chronologie

  • 2026-11-10 : SAP publie ses notes de sécurité de novembre, dont 3778530, 3778556, 3798345 et 3849308, ainsi que les enregistrements CVE des quatre failles. Onapsis publie ses analyses ICM2SHELL et PROXYGATE et sa revue de la journée de correctifs.
  • 2026-11-12 : Onapsis met à jour les avis ICM2SHELL et PROXYGATE.
  • 2026-11-14 : Aucune exploitation n'est signalée, les enregistrements SSVC de la CISA indiquent toujours aucune, et aucune des quatre CVE n'est dans le catalogue KEV de la CISA.

FAQ

ICM2SHELL est-elle exploitée dans la nature ?

Non. Onapsis a déclaré le 10 novembre n'avoir observé aucune exploitation, l'enregistrement SSVC de la CISA indique aucune, et aucune des quatre CVE n'est dans KEV au 14 novembre 2026. L'exploit fonctionnel fourni à SAP par Onapsis est une démonstration, pas un outil public.

L'authentification protège-t-elle un système SAP d'ICM2SHELL ?

Non. La faille est atteignable avant l'authentification, donc un accès réseau au port HTTP ou HTTPS suffit. Certains services ICF par défaut de SAP S/4HANA acceptent des connexions WebSocket sans authentification.

SAP NetWeaver AS Java est-il concerné ?

Non pour ICM2SHELL. La faille est dans le code du noyau de la pile ABAP, et un système dual-stack est touché par cette pile. La faille de la passerelle touche bien les systèmes AS Java et les passerelles autonomes.

La base SAP HANA est-elle concernée ?

Le Web Dispatcher intégré à HANA XS Classic et XS Advanced est concerné, et les révisions corrigées sont 2.00.079.11 et 2.00.089.05. Onapsis ne cite pas le moteur de base HANA lui-même comme concerné.

Puis-je désactiver WebSocket au lieu de corriger ?

Oui, si aucune application ne l'utilise. Réglez icm/HTTP/support_websocket_upgrade=FALSE et redémarrez le composant. Cela supprime le chemin ICM2SHELL, mais casse les ABAP Push Channels et certains scénarios Fiori ; vérifiez donc d'abord le journal HTTP pour le code 101.

Dois-je régler quelque chose après avoir appliqué les notes ?

Oui pour la passerelle. Après la note 3798345, réglez gw/acl_mode_proxy = 1 sur les noyaux qui le prennent en charge, et conservez un fichier prxyinfo restrictif. Pour ICM2SHELL, le correctif du noyau est la correction, et le composant doit être redémarré pour charger le binaire corrigé.

Inventorier les systèmes SAP exposés avec Ostorlab

Inventoriez les serveurs d'application SAP et les Web Dispatchers joignables sur votre réseau avec la découverte de surface d'attaque d'Ostorlab. L'équipe Basis sait alors quels hôtes corriger et redémarrer en premier.

Références

  • 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 novembre 2026, mis à jour le 12 novembre 2026 : https://onapsis.com/blog/icm2shell-cve-2026-76964-cve-2026-89126-sap-netweaver-web-dispatcher-threat-advisory/ (vérifié le 14 novembre 2026)
  • Onapsis Research Labs, « PROXYGATE (CVE-2026-89103): A Critical Pre-Authentication Vulnerability in SAP NetWeaver's Gateway », 10 novembre 2026, mis à jour le 12 novembre 2026 : https://onapsis.com/blog/proxygate-cve-2026-89103-sap-netweaver-gateway-threat-advisory/ (vérifié le 14 novembre 2026)
  • Onapsis Research Labs, « SAP Security Notes: November 2026 Patch Day », 10 novembre 2026, mis à jour le 12 novembre 2026 : https://onapsis.com/blog/sap-security-patch-day-nov-2026/ (vérifié le 14 novembre 2026)
  • Note de sécurité SAP 3778530, correctif ICM pour CVE-2026-76964 : https://me.sap.com/notes/3778530 (vérifié le 14 novembre 2026)
  • Note de sécurité SAP 3778556, correctif Web Dispatcher pour CVE-2026-89126 : https://me.sap.com/notes/3778556 (vérifié le 14 novembre 2026)
  • Note FAQ SAP 3778788, contournements pour ICM2SHELL : https://me.sap.com/notes/3778788 (vérifié le 14 novembre 2026)
  • Note de sécurité SAP 3798345, correctif de la passerelle pour CVE-2026-89103 : https://me.sap.com/notes/3798345 (vérifié le 14 novembre 2026)
  • Note de sécurité SAP 3849308, correctif SAML2 pour CVE-2026-120017 : https://me.sap.com/notes/3849308 (vérifié le 14 novembre 2026)
  • Note SAP 3810197, chemin de mise à niveau compatible vers le bas pour les noyaux hors maintenance : https://me.sap.com/notes/3810197 (vérifié le 14 novembre 2026)
  • Enregistrement CVE-2026-76964, CVSS v3.1 10.0 publié le 10 novembre 2026 : https://www.cve.org/CVERecord?id=CVE-2026-76964 (vérifié le 14 novembre 2026)
  • Enregistrement CVE-2026-89126, CVSS v3.1 10.0 publié le 10 novembre 2026 : https://www.cve.org/CVERecord?id=CVE-2026-89126 (vérifié le 14 novembre 2026)
  • Enregistrement CVE-2026-89103, CVSS v3.1 10.0 publié le 10 novembre 2026 : https://www.cve.org/CVERecord?id=CVE-2026-89103 (vérifié le 14 novembre 2026)
  • Enregistrement CVE-2026-120017, CVSS v3.1 10.0 publié le 10 novembre 2026 : https://www.cve.org/CVERecord?id=CVE-2026-120017 (vérifié le 14 novembre 2026)
  • Catalogue des vulnérabilités exploitées connues de la CISA, qui ne liste aucune des quatre CVE : https://www.cisa.gov/known-exploited-vulnerabilities-catalog (vérifié le 14 novembre 2026, via le flux JSON du catalogue)