Compromettre un SAP via la RFC Gateway

CERT-DVT Sécurité SAP

English version
dev-light.png

Introduction

 

Certaines vulnérabilités de SAP ne peuvent être “patchées”, car elles ne concernent pas un bug dans un programme mais une mauvaise configuration d’un service ou composant. Parfois le seul moyen de se prémunir est d’activer et de gérer des fichiers ACL (access control list), ce qui peut vite tourner au cauchemar tant SAP est interconnecté avec d’autres systèmes. Le composant SAP Gateway fait partie de ces services, qui même à jour, peuvent ouvrir une faille critique sur le système.

dev-logistic.png

Le service SAP Gateway

 

La SAP Gateway est un composant technique du système SAP. Il contrôle les communications RFC entre SAP et le reste du monde, soit d’autres systèmes SAP ou des interfaces tiers. Par défaut le service SAP RFC Gateway écoute sur le port 33<SN> (où SN est le ‘system number’ du système SAP).

La sécurité de la SAP Gateway est contrôleé par deux fichiers : reginfo et secinfo

dev-security.png

Le fichier reginfo

 

Certaines interfaces clientes de SAP peuvent s’enregistrer sur le système SAP. Le fichier reginfo en contrôle l’accès : qui peut initier une connexion, qui peut arrêter une connexion, détermine quel serveur externe est autorisé et sur quel service, etc.

Le chemin du fichier est défini dans le paramètre de profile gw/reg_info

Par défaut : /usr/sap/<SID>/<INSTANCE>/data/reginfo

Si le fichier n’existe pas, aucun contrôle n’est effectué et n’importe quel serveur peut s’enregistrer depuis n’importe où.

Depuis le kernel version 7.20, le paramètre gw/acl_mode, permet de gérer cet aspect de sécurité dans ce cas (note 1480644).

Il est à noter que ce fichier n’est lu qu’une fois pendant l’enregistrement d’un programme. Tout changement dans le fichier reginfo, n’affecte pas les programmes déjà enregistrés.

dev-security.png

Le fichier secinfo

 

Le fichier secinfo spécifie les services pouvant être lancés, par quels utilisateurs et depuis quels serveurs à partir de la SAP Gateway. Pour faire simple, le secinfo est un fichier de sécurité évitant toute exécution, non autorisé, de commande sur le système d’exploitation.

Le chemin du fichier est défini dans le paramètre de profile gw/secinfo

Par défaut : /usr/sap/<SID>/<INSTANCE>/data/secinfo

Si le fichier n’existe pas, le système exécute toutes commandes OS demandé avec les droits de l’utilisateur administrateur de SAP.

Si le fichier est vide, aucun service ne peut être exécuté.

Avant de lancer une commande externe, le système SAP vérifie si une entrée valide existe dans le fichier secinfo.

dev-network.png

Menaces liés à la SAP RFC Gateway

 

Dans le cas où les fichiers reginfo et secinfo ne serait pas présent, ou mal configurés, il serait possible d’enregistrer n’importe quel service sur la SAP Gateway et obtenir un accès non autorisé au système SAP. Il est aussi possible d’enregistrer un « nouveau » service, avec un code malicieux, sous le même nom qu’un service existant. Enfin, il est également possible d’exécuter des commandes au niveau système d’exploitation, en tant qu’administrateur SAP (<sid>adm), et sans authentification.

  • Les impacts sont critiques :
  • Lecture, modification ou suppression du contenu de la base de donnée
  • Exécution non autorisée de commandes au niveau système d’exploitation
  • Déni de service

dev-target.png

Scénario d’attaque

 

Voici un scénario d’attaque exploitant une mauvaise configuration des fichiers ACL de la SAP Gateway :

Scan des services du système SAP, et récupération du port écoute du service SAP RFC Gateway


Prise d’information sur la faisabilité de l’attaque, avec une tentative d’enregistrement d’un faux service.


Exécution de commande OS à distance et sans authentification, puis post-exploitation

dev-risk-and-security.png

Correction et conclusion

 

Plusieurs actions peuvent être menées en parallèle afin de limiter le risque d’attaque sur la SAP Gateway :

  • Activer les logs et traces du service SAP RFC Gateway. Elles sont désactivées par défaut.
  • Etudier le contenu des logs pour identifier les services et serveurs légitimes pour la SAP Gateway.
  • Utiliser le ‘simulation mode’ pour éviter tout blocage de la production pendant l’évaluation des fichiers secinfo et reginfo.

Ci-dessous quelques SAP Notes sur le sujet :

910919 - Setting up Gateway logging
1069911 - GW: Changes to the ACL list of the gateway (reginfo)
1425765 - Generating sec_info reg_info
1408081 - Basic settings for reg_info and sec_info
614971 - GW: Changes to the ACL list of the gateway (secinfo)
1910365 - GW: Extended check for "reg_info" and "sec_info"
2021627 - GW: Improvements in gateway logging
2355548 - GW: New function in display of gateway logging control

N’hésitez pas à consulter notre offre SAP Sécurité :
http://www.devoteam.fr/en/offers/risk-security/expert-articles/secure-your-sap-against-new-threats

  • SAP Audit Assessment
  • SAP Penetration Testing
  • Remediation Process
  • Training
  • etc.