beSTORM est un outil de test et validation pour la sécurité des systèmes communicants (serveurs web, systèmes embarqués, injection dans des fichiers, ...).
beSTORM peut être utilisé sans expertise préalable en sécurité.
beSTORM est également un outil qualifié pour les sociétés souhaitant présenter leurs solutions à la certification EDSA d'ISASecure.
beSTORM est également le premier outil qualifié dans la version 2.0 d'EDSA.
Présentation beSTORM CEI 62443 ISASecure
Liens sur EDSA, ISASecure, CEI 62443
beSTORM pour la certification EDSA 2.0 ISASecure
L'ISA Security Compliance Institute (ISCI) avait déja validé beSTORM comme solution de test de robustesse (CRT Test Tool) pour un usage avec la certification d'ISASecure® (Industrial Automation and Control System - IACS) et validait ainsi les qualités de l'outil pour le test des exigences sévères de la certification ISASecure EDSA.
beSTORM est un outil qualifié en tant qu'outil pour le test et validation EDSA 2.0.
beSTORM est un outil entièrement automatisé qui peut être introduit dans des suites ssus de test et validation de sécurité des organisations et gouvernements. C'est un "fuzzer" et un outil de test "boîte noire" qui permet de lancer des tests dynamiques de produits et d'applications qui doivent être conformes aux exigences sévères du guide de certification EDSA ISASecure UDPv6 EDSA.
Vulnérabilités et sécurité des équipements réseau
Le nombre et la valeur des systèmes embarqués s'accroit comme la perception des menaces potentielles contre ces systèmes.
Les systèmes embarqués sont aujourd'hui au coeur de tous nos processus, qu'il s'agisse de systèmes industriels, d'infrastructures critiques, d'équipements scientifiques, en plus de se trouver dans des équipements plus classiques comme des imprimantes ou des capteurs de température par exemple.
Avec l'interconnexion croissante des systèmes de nouveaux risques sont apparus et ont provoqué l'attention d'attaquants malveillants qui s'en prennent maintenant à la sécurité de ces systèmes.
Quelques-unes des vulnérabilités critiques que l'on trouve classiquement sur ces systèmes sont :
Les erreurs de type débordement de tampons (Buffer overflow):
La modification d'exigences en cours de développement est la première source potentielle d'erreurs de codage.
Par exemple durant le développement d'une imprimante "intelligente", un chef de projet interprète les exigences depuis le besoin client vers des équipes de développement, dont les responsables techniques rafinent à leur tour ces exigences fonctionnelles en exigences techniques.
Chaque responsable technique traduit ensuite ces exigences en spécifications détaillées qui seront ensuite codées par des développeurs dans le langage de programmation approprié. Ce code est ensuite compilé pour devenir un code exécutable.
Chacune de ces transformations est une source potentielle d'erreur durant le cycle de développement.
Les erreurs aux limites (Off-by-one):
Les langages de programmation utilisent des mécanismes d'exception; par exemple un dépassement de limites sur un entier peut arriver lorsqu'un développeur rafine une exigence de haut niveau vers un algorithme informatique.
Si on souhaite traiter 'n' objets qui sont chacun longs de 'm' bytes, le développeur peut demander au système d'allouer n*m bytes.
Si n*m est plus grand que le plus grand des entiers qui peut être représenté numériquement dans le système informatique, la quantité de mémoire allouée sera plus petite que ce que souhaitait le développeur. Cette situation peut se traduire par un débordement de tampon (buffer overflow).
Les erreurs des applications web:
Beaucoup d'équipements embarquent un serveur web pour la configuration et l'interaction avec le système.
Dans la plupart des cas, les serveurs web qui tournent sur ces équipements sont très rarement (quand c'est seulement le cas) mis à jour avec les dernières versions des logiciels.
Le résultat ? Les serveurs web de ces équipements sont le plus souvent vulnérables à des attaques web sur des failles le plus souvent connues, publiées et sur lesquelles des exploits (moyens d'attaque) sont disponibles et publics.
Les utilisations non maîtrisées de moyens cryptographiques:
Même si des moyens de chiffrement sont mis en oeuvre dans les équipements dans le but de protéger des informations confidentielles ou importantes, leur mise en oeuvre non maîtrisée peut déboucher sur des failles de sécurité critiques.
L'impossibilité de générer des nombres aléatoires peut par exemple rendre facile l'identification de clé de chiffrement, ce qui ouvre la porte en grand pour des pirates éventuels.
Moyens faibles de vérification des accès ou d'authentification:
Les Entreprises attribuent souvent des mots de passe par défaut ou très simples sur leurs équipements.
Dans certains cas, on trouve même des mots de passe codés en "dur" qui permettent un accès non autorisé (voire illégal) à ceux qui connaissent le couple login/mot de passe codé en dur.
Ces vulnérabilités autorisent des attaquants malintentionnés à outrepasser facilement les mécanismes de contrôle d'accès et d'altérer les données de ces équipements (configurations d'automates par exemple, SCADA, routeurs, ...).
Pourquoi réfléchir à une certification EDSA ISASecure ?
A notre époque, les systèmes embarqués permettent de faire avancer rapidement de multiples domaines de la technologie qui ont besoin de rendre leurs systèmes intelligents (ou disons autonômes) : l'électronique grand public, les télécommunications, l'automobile, le domaine médical, le contrôle/commande de systèmes industriels ... Avec l'intégration de plus en plus importante des équipements en réseau et des dispositifs de calcul dans toutes les sphères de notre quotidien, la sécurité devient un besoin vital pour la sécurité de fonctionnement de tous les systèmes intelligents bâtis au-dessus de ces équipements.
Le programme proposé par l'organisme "ISA Security Compliance Institute’s" ou ISASecure s'efforce d'améliorer à marche rapide la cyber-sécurité de tout le secteur industriel (Industrial Automation and Control Systems - IACS) en standardisant des processus connus et reconnus et des exigences de fonctionnement pour les systèmes qui guident et améliorent la création de systèmes embarqués.
Le programme de certification "Embedded Device Security Assurance (EDSA)" est la première certification d'ISASecure qui se focalise sur les modes de fonctionnement des équipements plutôt que sur des pratiques de développement idéales faites maison ou provenant de tiers.
Les tests de robustesse pour la certification ISASecure UDPv6 EDSA permettent de valider la fiabilité des processus ou procédures implémentées dans les équipements et systèmes de contrôle industriels ce qui les apparente à la structure des tests fonctionnels qu'on trouve dans les certifications de sûreté de fonctionnement type IEC 61508. Obtenir une certification EDSA fournit une reconnaissance de tout le secteur industriel et signifie la reconnaissance immédiate d'un haut niveau de sécurité du dispositif.
L'ISCI recommande aux organisations d'identifier le plus tôt possible dans leur cycle de développement les vulnérabilités de leurs équipements connectés en utilisant elles-mêmes les outils qualifiés "CRT Test Tool" comme beSTORM durant le développement et les phases de test de leurs produits. Ces outils ont pour but d'identifier et supprimer les faiblesses des équipements au plus tôt dans leur développement. Les organisations qui mettent en oeuvre les produits qualifiés ISCI comme beSTORM peuvent également organiser l'évaluation des pratiques de leurs fournisseurs avant d'intégrer leurs produits dans leurs propres projets.
Comment se déroule le processus de certification EDSA ?
Le programme de certification d'un équipement avec ISASecure repose sur 3 niveaux (ISASecure EDSA niveau 1, niveau 2, et niveau 3), chaque niveau correspondant à un niveau d'assurance de sécurité plus important.
Afin de développer les critères de la certification EDSA, ISASecure fait référence aux meilleures pratiques disponibles pour la cyber sécurité en général et les systèmes de contrôle de process pour l'industrie en particulier.
Le programme de certification EDSA consiste ainsi en trois éléments techniques communs à chacun de ces niveaux qui sont : SDSA, FSA, CRT. Les critères pour SDSA et FSA sont alignés avec les projets de travaux du commité de standards ISA99. Les critères CRT ont eux été initialement créés d'après des principes pragmatiques provenant de protocoles standard de PME.
Cf. ici la présentation de la norme CEI 62443 au club 27001.
Les éléments techniques fournis dans le programme de certification EDSA sont :
- SDSA (Software Development Security Assessment) : il s'agit d'osculter dans le détail le processus de développement du produit. Typiquement EDSA couvre les exigences de sécurité pour la plupart des phases de développement d'un système. L'audit SDSA couvre aussi bien les preuves et la traçabilité documentaires que les audits des personnels impliqués dans le développement de l'équipement,
- FSA (Functional Security Assessment) : il s'agit de vérifier les capacités de sécurité de l'équipement comme les contrôles d'accès, les droits en fonctionnement, la confidentialité des données et l'intégrité des données. En général, l'audit FSA vérifie les problèmes d'implémentation comme de capacité du système. L'audit FSA se base aussi bien sur la documentation que sur des tests des équipements. L'analyse se déroule indépendamment du fait que la fonction de sécurité peut être portée par d'autres composants d'un système de systèmes que le système audité ce qui peut nécessiter de considérer tout le périmètre pour la certification.
- CRT (Communication Robustness Testing) : il s'agit d'examiner jusqu'à quel point les implémentations réseau des protocoles d'accès au système se protègent elles-même et les fonctionnalités du système qui y font appel en réaction à des messages mal séquencés, du trafic malicieux ou erroné provenant du réseau.
Les services essentiels testés avec les outils CRT
L'ISCI autorise des organisations, connues comme des organismes de certification, à délivrer des certifications d'évaluation des équipements.
Pour mener à bien des activités de certification d'équipements, un organisme de certification doit utiliser des outils comme beSTORM qualifiés "CRT Test Tool" par l'ISCI. Cette qualification assure que l'outil utilisé par l'organisme de certification lui permettra de valider ses rapports en regard des exigences de la certification ISASecure EDSA. L'outil permet en outre de conduire des tests de robustesse des communication.
Les tests CRT attestent de la mise en oeuvre de mécanismes de défense de l'équipement contre des attaques malicieuses et sa capacité à maintenir actifs les services indispensaben face d'une telle agression.
Un critère important des tests CRT concerne bien cette capacité pour l'équipement à continuer à faire fonctionner les services essentiels. Pour être certifié au cours du processus de test ISASecure CRT, le process de contrôle ou la boucle de sécurité de l'équipement doivent être préservés indépendamment de tout condition de trafic réseau. En d'autres termes, il est acceptable que d'autres services essentiels risquent de ne pas fonctionner en raison d'une saturation sur leur propre interface réseau, mais aucunement à cause d'un effet de bord sur d'autres interfaces ou services. Certains des services que d'un appareil embarqué certifié doit maintenir sont énumérés ci-dessous.
Certaines capacités essentielles que doit maintenir un équipement certifié sont listées ci-dessous :
- Maintenir la capacité de contrôle - Capacité à maintenir la boucle de contrôle principale, quelles que soient les conditions de trafic réseau,
- Maintenir la capacité de commande - Capacité à continuer à répondre à des signaux de commande de systèmes de plus haut niveau dans des temps contraints, quelles que soient les conditions de trafic réseau,
- Maintenir les lectures sur l'équipement - Capacité de continuer à fournir la visibilité sur le process dans des temps contraints, quelles que soient les conditions de trafic réseau,
- Maintenir les capacité d'alarmes et de traçage des alarmes - Capacité à maintenir le système d'alarme et de traçage des alarmes dans des temps contraints, quelles que soient les conditions de trafic réseau,
- Maintenir les fonctions essentielles de reporting de l'historique - Capacité à maintenir les fonctions d'historique des données dans des temps contraints, quelles que soient les conditions de trafic réseau,
- Maintenir le contrôle pair-à-pair - Capacité à continuer à exécuter des communications pair-à-pair des temps contraints, quelles que soient les conditions de trafic réseau,
Les services essentiels listés ci-dessus peuvent être dégradées temporairement par le dispositif sous test pour se défendre d'une attaque massive. Cependant ces capacités doivent redevenir à leur niveau nominal aussitôt que l'attaque cesse.
Exigences pour les outils de type "CRT Test Tool"
L'ISCI publie des exigences pour la qualification "CRT Test Tools" pour valider l'adéquation de ces outils à délivrer les tests exigés dans les programmes de certification ISASecure. Le process de qualification évalue des capacités techniques générales de l'outil comme :
- La capacité à monitorer la boucle de contrôle,
- La capacité à délivrer des tests de robustesse basique et sous stress,
- La reproductibilité des résultats de test,
- Le passage des tests pour les procédures certifiantes ISASecure.
L'ISCI a un process d'avaluation standard pour tous les outils CRT qui souhaitent obtenir la qualification "ISASecure EDSA".
Un système embarqué subit un test de surface de son interface puis un test de robustesse spécifique au protocole implémenté par le système. Une évaluation de l'informationtechnique initiale est suivie d'une évaluation des preuves de la couverture de test en rapport aux critères de complétude de test. Une validation par échantillonage de l'outil est réalisée pour vérifier si les informations fournies par l'outil sont conformes avec l'architecture de l'outil et qu'il répond correctement aux exigences des tests CRT.
Les organismes de certification ISASecure peuvent utiliser ces outils qualifiés CRT qui ont été reconnus par l'ISCI pour la portion CRT de la certification ISASecure EDSA et SSA.
Le process de validation CRT Tool test l'outil pour tous les protocoles de la certification. L'outil est également testé contre le stress et l'instabilité en vérifiant sa capacité à maintenir ses services essentiels ou au moins sa boucle de contrôle principale. Il est également essentiel dans le processus de qualification que les résultats de test soient identiques entre plusieurs essais.
La qualification du produit confirme est conforme et a subi la suite de tests basée sur les exigences ISA Secure CRT et est donc capable de délivrer des tests pour la certification ISASecure. Le process de qualification n'intègre pas le niveau de compétences des utilisateurs mettant en oeuvre l'outil, ce qui peut être essentiel pour mener à bien les tests; le process se contente de valider de la qualité technique de l'outil pour mener à bien les tests demandés.
Pour chaque mise à jour de son outil déja qualifié CRT Test Tool, le fournisseur avertit l'ISCI pour chaque modification dans les spécifications de l'outil lui-même. Si l'ISCI détermine que l'impact de ces modifications est important, l'ISCI peut imposer au fournisseur de repasser le processus de qualification de l'outil.
Pourquoi beSTORM dans votre certification EDSA ?
beSTORM est l'outil qualifié EDSA CRT ISCI de Beyond Security. Il est utilisé au moment des tests de certification au niveau système et pour générer du stress réseau, détecter des vulnérabilités critiques dans les systèmes comme des buffer overflow, des vulnérabilités web, des faiblesses dans les mécanismes cryptographiques, les contrôles d'accès, les vulnérabilités systèmes liées aux mécanismes d'authentification, ...
Conçu pour aider les administrateurs et les certifieurs qui ont besoin de certifier leurs applications avant déploiement, beSTORM permet de tester toutes les applications réseau même celles qui sont réalisées avec des protocoles propriétaires en utilisant un seul outil. En utilisant son module d'apprentissage automatique, beSTORM identifie les vulnérabilités réseau en mode "black box" (sans avoir besoin d'accéder au code source) et résoud ainsi les faiblesses identifiées dans applications web, les couches réseau et les systèmes industriels. beSTORM aide également car il permet de limiter le nombre de faux positifs en ne mettant en avant que les attaques réussies.
Son approche de type “smart fuzzing” classe les attaques en priorisant d'abord celles qui ont la probabilité de causer une faille dans le produit sous test. Contrairement aux outils traditionnels qui sont construits pour tester des failles connues, cette approche unique procure un haut niveau de sécurité des dispositifs.
Bien plus que d'évaluer la fiabilité du système ou du dispositif, beSTORM permet également de valider que le produit supportera le stress, sera stable et disponible pour maintenir ses fonctions essentielles.
Exemple : comment identifier des dépassements de tampon (Buffer Overflow) avec beSTORM
Il est impératif de pouvoir disposer de systèmes de fuzzing 'intelligents' comme beSTORM (multi-protocole, auto-adaptatif sur l'environnement) pour trouver des failles de type dépassements de tampon (Buffer Overflow). Ils automatisent et documentent le processus de créer des entrées altérées et vérifient de très près chaque réponse inattendue des applications. Par exemple beSTORM testera des paquets avec des entêtes malformées, en manipulant le contenu des paquets et en fournissant au bon endroit le type de donnée que l'application pourrait attendre en utilisant &, <, >, des points et des virgules dans une application mail, ou des URL typiques pour des serveurs HTTP. C'est simplement infaisable avec des processus manuels.
Blackbox Testing - Fuzzing basé sur les protocoles pour chercher les vulnérabilités et le test d'intrusion
La technique d'attaque dite en "boîte noire" (Blackbox) fonctionne en fournissant automatiquement au programme sous test des entrées multiples itérées et construites spécialement dans le sens de créer une erreur interne, indiquant une erreur de programmation (bug) et en faisant potentiellement cracher l'application.
Classiquement appelée technique d'"injection de faute", le test boîte noire peut être appliqué aussi bien à un service réseau qu'à un CPU, un téléphone portable, des paramètres d'entrée d'un programme, un test d'API, un browser web, un type de fichier (pdf par exemple), ...
Des profils test et validation sans connaissance préalable du fonctionnement interne de l'application sous test commencent par enregistrer le trafic et les protocoles d'une cible sous test, génèrent des itérations d'entrées conforme aux observations, puis lancent des messages 'aléatoires' ou 'déformés' ou des évènements 'licites' de la souris ou du clavier jusqu'à ce que des vulnérabilités de l'application apparaîssent.
Le monitoring de l'application peut se faire avec un simple watchdog qui voit que le programme est toujours en train de s'exécuter jusqu'à une vérification à distance pour voir si le service est toujours disponible et répond ou encore sur des techniques plus aancées comme du debug à distance branché sur des piles d'exceptions.
En manipulant des valeurs, seulement une donnée particulière peut être testée à un moment pour des changements de valeur ciblés; à travers la manipulation de protocole, toute la structure du protocole peut être testée ou les deux en même temps.
La solution est de capter les anomalies de l'application pendant le développement en utilisant la technique de fuzzing - quand la correction est encore facile et peu chère.
En appliquant des techniques de fuzzing de protocoles automatisées, beSTORM teste virtuellement toutes les combinaisons possibles d'attaques, en commançant intelligement avec les scénarios d'anomalies les plus communnes, qui indiquent souvent rapidement une attaque réussie.
De cette manière, les failles de sécurité peuvent être trouvées dans les applications bien plus rapidement, sans tests techniques de force brute et surtout quasiment sans intervention humaine ! Le passage à l'échelle est facile avec cette solution, beSTORM ayant la capacité d'utiliser de multiples processeurs ou des machines multiples pour parallèliser l'audit et réduire de manière substantielle le temps de test.
BeSTORM – Test de sécurité automatisé pour l'industrie (fuzzing)
beSTORM est un outil de test de sécurité exhaustif.
C'est un outil d'audit "boîte noire" très puissant, conçu pour trouver les faiblesses de sécurité dans les implémentations protocolaires.
beSTORM utilise les définitions provenant des RFC pour créer un langage d'attaque, qui à son tour est utilisé pour identifier des vulnérabilités dans les applications sous test.
Bien que supportant les tests de cas prédéterminés, beSTORM essaie d'exploiter les failles les plus courantes ou évidentes avant de continuer avec des tests complets, l'objectif étant de fournir la couverture de test la plus importante possible dans l'espace du protocole.
Avec beSTORM, il est enfin possible d'écrire vos propres modules adaptée selon vos protocoles propriétaires en utilisant des descriptions XML.