Développeurs SAP : chef de la défense plutôt que problème de sécurité ?


Les développeurs SAP travaillent dans des environnements intégrés critiques pour l'entreprise et créent des logiciels qui traitent des données avec des caractéristiques de sécurité et des exigences réglementaires spécifiques.
Rôle essentiel des développeurs
Les développeurs SAP jouent un rôle majeur dans la conception du paysage de sécurité des environnements SAP. Le développement du code relatif aux modifications apportées aux fonctions SAP existantes ou aux nouvelles applications et interfaces peut constituer un projet de développement informatique aussi complexe que souhaité. Ces adaptations sont souvent nécessaires, mais elles peuvent comporter des vulnérabilités et réduire le niveau de sécurité de l'ensemble du système.
De nombreuses failles de sécurité dans l'environnement SAP sont dues à un manque d'exigences, à des décisions erronées dans la conception du logiciel et le choix des outils et à un manque de connaissances sur les pratiques de programmation sécurisées avec les langages de programmation et les frameworks utilisés. Ce faisant, les développeurs créent sans le savoir plusieurs vulnérabilités telles que des traversées de répertoire, des vulnérabilités de cross-site scripting ou des erreurs dans le contrôle d'accès. Une seule faille peut exposer des données commerciales sensibles ou permettre la compromission du système par un attaquant. En l'état actuel des choses, les développeurs génèrent de nouveaux risques de sécurité en plus de l'utilité de leur travail. Les développeurs disposent d'autorisations étendues. Avec des droits d'accès étendus, les développeurs peuvent, par inadvertance ou par malveillance, introduire des portes dérobées, manipuler des données critiques ou contourner les contrôles de sécurité. Les listes de contrôle pour la vérification des autorisations de transport ne comprennent souvent pas, à ce jour, de vérification des défauts de sécurité ou des logiciels malveillants.
Si aucune séparation des tâches n'est imposée et que les développeurs ont librement accès aux environnements de développement, de test et de production, le piratage de ces accès est particulièrement intéressant pour les attaquants. En dehors du monde SAP, le profil d'un développeur SAP serait qualifié de développeur "full stack". Ce terme, qui se distingue du frontend et du backend, désigne les programmeurs qui réalisent une application de manière autonome, de l'interface utilisateur à la logique commerciale en passant par les intégrations, en utilisant la pile technologique disponible.
En combinaison avec leur connaissance des processus, les développeurs SAP livrent quotidiennement des milliers d'extensions et d'adaptations avec la boîte à outils SAP, offrant ainsi aux clients SAP un énorme potentiel d'innovation et un avantage concurrentiel. La boîte à outils proposée par SAP est de plus en plus grande et on attend souvent des développeurs SAP qu'ils maîtrisent le clavier, de la maintenance d'une application SAP GUI existante à l'utilisation d'éléments Fiori et tout ce qui se trouve entre les deux. Chacun de ces claviers possède des caractéristiques de sécurité individuelles que le développeur SAP doit prendre en compte lors de leur utilisation afin d'éviter les vulnérabilités et d'appliquer correctement les exigences de sécurité.
Apprentissage par la pratique fatal
Il est rare que vous puissiez y consacrer du temps et des ressources - la plupart du temps, c'est une mentalité d'"apprentissage par la pratique" qui prévaut, avec ses conséquences. "Je n'aurais jamais pensé au terme 'transport' en tant que format de livraison de logiciels", déclare l'architecte de la sécurité logicielle d'une banque. Souvent, le reste de l'exploitation informatique et la sécurité de l'information ne savent absolument pas à quelle fréquence et dans quelle mesure le développement de logiciels a lieu avec les technologies SAP comme plate-forme d'application. Un architecte logiciel chez un client a décrit cela comme "l'éléphant caché" de sa pratique de développement logiciel.
Mais il arrive aussi que les initiatives visant à contrôler les processus de développement de logiciels ou à améliorer la qualité et la sécurité n'intègrent pas le développement SAP et que les processus et outils définis à cet effet ne soient pas ou que partiellement applicables au développement SAP. Dans ce contexte, des erreurs dans les développements et les add-ons propres aux clients peuvent causer des problèmes de sécurité considérables. Comme tout langage de programmation, Abap et consorts ont des caractéristiques spécifiques dont il faut tenir compte en tant que développeur.
Modèle d'erreur Abap
Parmi les dizaines de revues de code que j'ai effectuées au cours des dix dernières années, les modèles d'erreurs suivants se distinguent particulièrement :
- Validation insuffisante des entrées, entraînant des vulnérabilités de type Directory Traversal, SQL Injection ou Code Injection. Cela a pour conséquence directe ou indirecte la possibilité de compromettre complètement un système SAP. Souvent, le manque de connaissance des propriétés de sécurité du framework ou de l'API utilisé est à la base de cette situation.
- des erreurs dans la conception et la mise en œuvre des contrôles d'accès, telles que des contrôles d'autorisation manquants ou logiquement incorrects et une séparation insuffisante des fonctions dans la conception du stockage ou du traitement et de l'affichage des données. Cela peut s'accompagner d'une fuite d'informations confidentielles ou de leur compromission au niveau des transactions.
- des conceptions d'intégration non sécurisées, qui se traduisent en fin de compte par des possibilités de compromission des systèmes SAP en production, par exemple à partir d'environnements de test et de développement, ou qui permettent d'autres formes d'attaques par piratage de requêtes côté serveur
- Absence de nettoyage d'outils obsolètes et généralement non pertinents ou de copies d'applications SAP standard dans lesquelles les fonctions de sécurité ont été supprimées ou les corrections de vulnérabilité de SAP n'ont jamais été intégrées.
Utilisez exclusivement "call transaction" avec l'option "with authority-check" (extrait d'une directive de développement malheureusement typiquement mauvaise).
Paradigme Clean Core
Dans le monde SAP également, la sécurité des logiciels nécessite des directives claires, associées à des aides appropriées pour les développeurs afin qu'ils puissent s'y conformer. Souvent, les initiatives de qualité de code et de sécurité ont échoué sur ce dernier point. Ni l'introduction d'une analyse de code source améliorée par rapport aux outils standard, ni les interdictions dans les directives de développement ne permettront aux développeurs SAP de prendre conscience de la sécurité et d'acquérir les compétences nécessaires pour trouver des solutions.
Une formation appropriée et des guides utiles sous forme de "how-to" constituent la base du changement de culture nécessaire pour que d'autres mesures et outils soient également efficaces. Mais un développeur SAP peut-il encore causer de graves problèmes de sécurité à l'avenir en appliquant le paradigme "Clean Core" et en utilisant des outils comme SAP Build et Joule ? Clean Core" prône la séparation des extensions et des fonctionnalités de base. Outre l'objectif égoïste de pouvoir mieux migrer les clients existants vers les services cloud de SAP et de les y habituer, les risques opérationnels lors des mises à jour et des migrations sont considérablement réduits si l'application est correcte.
Combler les lacunes en matière de sécurité
L'utilisation de SAP Business Technology Platform (BTP) a pour conséquence une séparation plus stricte entre l'extension propre au client et le standard SAP. Si elle est bien mise en œuvre, elle permet de réduire ou d'endiguer fortement l'impact potentiel des vulnérabilités typiques mentionnées ci-dessus ou d'exclure certains défauts de sécurité tels que les vulnérabilités de traversée de répertoire. Les exigences concernant les capacités du développeur à mettre en œuvre correctement la sécurité et à transformer des conceptions initialement orientées vers les transactions en une architecture de microservices sont considérables. Ainsi, le développeur SAP doit désormais assumer des tâches de sécurité plus poussées, comme la construction de rôles, l'application de nouveaux concepts pour la journalisation des applications et le contrôle des composants logiciels dépendants et des bibliothèques pour détecter les logiciels malveillants et les vulnérabilités.
La vérité est dans le code
Dans le modèle d'exploitation SAP classique, ces tâches incombent à l'administrateur des autorisations et à l'administrateur de base. A cela s'ajoutent, avec la programmation cloudnative, de nouveaux scénarios de menaces que le développeur SAP doit traiter. Par exemple, un déni de service économique (EDoS), dans lequel l'application est utilisée abusivement pour solliciter les services et les ressources du cloud de manière si importante que les coûts ne peuvent pas être supportés ou que les services sont désactivés en atteignant les valeurs de consommation maximales.
Il doit comprendre la boîte à outils SAP et ses caractéristiques de sécurité, maîtriser les concepts d'analyse de la sécurité des applications logicielles, modéliser les menaces et mettre en œuvre des contre-mesures. Ainsi, le développeur SAP devient un acteur central et pilote de la sécurité informatique de votre environnement SAP.
En résumé, les applications SAP tant cloudnatives que classiques, qu'elles soient développées par le client ou par des tiers, doivent être soigneusement examinées afin de déterminer les points faibles et la conformité en matière de sécurité. Dans ce contexte, le rôle du développeur SAP passe de plus en plus du rôle de réalisateur d'exigences fonctionnelles à celui de conseiller qui trouve des solutions innovantes, prend en compte dès le départ la sécurité et la protection des données ainsi que les exigences de sécurité pour l'exploitation et la mise à disposition de son application et s'interroge sur leur mise en œuvre suffisante.
Comprendre la boîte à outils SAP
Il doit comprendre la boîte à outils SAP et ses caractéristiques de sécurité, maîtriser les concepts d'analyse de la sécurité des applications logicielles, modéliser les menaces et mettre en œuvre des contre-mesures. Ainsi, le développeur SAP devient un acteur central et pilote de la sécurité informatique de votre environnement SAP.