Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

Sécurisez votre logiciel avec SEI CERT C

Par Arthur Hicken

27 septembre 2018

5  min lire

La norme de codage sécurisé SEI CERT est un excellent choix pour sécuriser votre code, en particulier si votre application est intégrée ou critique pour la sécurité. Dans cet article, j'explique comment utiliser l'analyse statique pour implémenter cette norme de sécurité dès la conception.

 

«Bien que la notion de protection des logiciels soit importante, il est tout simplement plus facile de protéger quelque chose qui est sans défaut que quelque chose de criblé de vulnérabilités.»

- Gary McGraw, Cigital

La prolifération des logiciels embarqués et des appareils IoT augmente au quotidien les risques d'attaques de sécurité. Dans mon Salle de la honte IoT Je vois des attaques régulières contre tout, des usines de traitement de l'eau aux voitures en passant par les jouets pour enfants. Au fur et à mesure que les «choses» reçoivent plus de code et se connectent à Internet, elles promettent de nouvelles capacités et fonctionnalités, mais augmentent également les chances pour un mauvais acteur de pénétrer nos systèmes et même nos vies à la maison.

Le problème de l'IoT et de la sécurité embarquée

Des études montrent que même les voitures peuvent contenir plus de 100 millions de lignes de code. L'époque où quelques développeurs pouvaient réviser manuellement le code est révolue. Avec des systèmes aussi volumineux et sophistiqués, nous devons commencer à prendre la sécurité des logiciels au sérieux. Heureusement (dans le sens où les stratégies pour résoudre les problèmes peuvent être les mêmes), les problèmes de codage qui affectent les logiciels sécurisés sont souvent les mêmes que ceux qui affectent les logiciels sûrs et fiables.

De nombreuses normes de sécurité (ISO 26262, DO-178B / C, FDA, etc.) ont montré que la sécurité et la fiabilité des logiciels peuvent être considérablement améliorées grâce à l'utilisation de normes de codage et à l'analyse de code statique. L'analyse statique est le meilleur moyen de durcir systématiquement votre code et de passer d'une mentalité de «test de sécurité» à une mentalité de sécurité dès la conception. Cela signifie que nous ne pouvons pas laisser la cybersécurité à une équipe distincte, mais que nous devons commencer à y remédier dès que nous commençons à planifier et à coder. , livrez ”cycle avec une qualité, une sûreté et une sécurité élevées.

Alors, quelle norme de codage utiliser? Il y en a beaucoup là-bas, même si vous ne prenez en compte que les aspects de sécurité. CWE, OWASP et CERT sont des normes communes de codage sécurisé, pour n'en nommer que quelques-unes. Vous pouvez avoir des exigences qui vous indiquent les normes à utiliser, et si tel est le cas, vous devez les respecter. Mais j'aimerais faire valoir que CERT est un excellent choix pour sécuriser votre code, en particulier si votre application est intégrée ou critique pour la sécurité.

Pourquoi CERT pour sécuriser votre code?

La question évidente est donc "Pourquoi le CERT?" CWE n'est-il pas plus populaire? Ou OWASP? Eh bien, en premier lieu, OWASP (Open Web Application Security Project) ou OWASP Top 10, est destiné à être un point de départ, pas un processus rigoureux de sécurité des applications. De plus, comme son nom l'indique, c'est principalement pour les applications Web.

CWE (Common Weakness Enumeration) a une liste des 25 principaux problèmes. Encore une fois, bien que ce soit un excellent point de départ, ce n'est pas suffisant. En outre, CWE dans un sens est un standard symptomatique - il est conçu pour décrire le code qui conduit à des vulnérabilités spécifiques telles que celles trouvées dans CVE (Common Vulnerability Enumeration). Bien qu'il s'agisse d'une tâche utile et importante, elle est réactive de par sa nature même.

J'aime la norme de codage sécurisé SEI CERT pour plusieurs raisons. Premièrement, il est beaucoup plus axé sur les pratiques de codage sécurisées plutôt que sur les symptômes (par exemple, toujours, toujours valider l'entrée est une pratique de codage sécurisée, alors que l'injection SQL est un symptôme). Le CERT a analysé quelles lignes directrices sont les plus critiques et peuvent être analysées solidement et alors séparé en «règles» à suivre et en «recommandations», qui sont moins critiques et / ou moins susceptibles d'être analysées correctement. Cela permet de réduire rapidement les résultats de l'analyse statique aux plus critiques.

De plus, le CERT a créé un cadre d'évaluation des risques Cela aide à hiérarchiser davantage les résultats de l'analyse statique pour des directives particulières, en tenant compte de la gravité inhérente de la directive, de la difficulté d'exploiter un tel élément et du coût de sa correction. Avec cela, vous obtenez une hiérarchisation très granulaire qui vous aide à vous concentrer sur ce qui est le plus important, plutôt que de faire face à un déluge de violations d'analyse statique.

Je me rends compte que d'autres normes comme CWE ont également des cadres de risques, mais à ce jour, personne ne les a entièrement mis en œuvre pour l'analyse statique car c'est extrêmement difficile à faire. Par exemple, nous avons pris en compte les scores «impact technique» CWE, ce qui est utile, mais les scores CERT vont beaucoup plus loin vers la hiérarchisation automatisée.

Le problème avec ces cadres de risque, c'est que jusqu'à présent, ils ont été soit un exercice académique, intéressant à discuter mais pas quelque chose que vous pouvez utiliser sur le terrain, soit un processus entièrement manuel et quelque peu subjectif. Nous avons donc pris le système CERT et l'avons implémenté directement dans notre système de rapport d'analyse statique. Plus à ce sujet sous peu.

Pourquoi utiliser un outil d'analyse statique plutôt qu'un autre pour une application sécurisée du codage?

Je suis donc l'évangéliste Parasoft. Mais pourquoi nous utiliser? Tous les outils d'analyse statique ne sont-ils pas fondamentalement les mêmes? Bien sûr, la réponse est non, ils ne le sont pas. Et pour la norme de codage sécurisé CERT C, Parasoft C / C ++test  est la solution la plus complète, qui vous aide à progresser de trois manières principales:

  1. Prise en charge intégrée des règles CERT C. Nous avons implémenté toutes les règles CERT C, et nous avons également ajouté la majorité des recommandations, les autres étant bientôt disponibles. En termes simples, nous sommes le seul fournisseur à offrir une couverture complète des règles CERT C et nous couvrons également la plupart des recommandations de tous les fournisseurs. Donc, si vous vous souciez des directives CERT, le test Parasoft C / C ++ est objectivement le meilleur choix.
  2. Votre capacité à faire plus que simplement parler des scores de risque. Notre implémentation du cadre de risque CERT est unique car il est intégré dans chaque widget et rapport que nous avons pour la norme. Cela signifie que vous pouvez choisir entre des règles et des recommandations, sélectionner des scores de priorité, des niveaux, des catégories, etc., et voir les changements instantanément.
  3. Facilité avec les audits et les rapports de conformité. Parasoft fournit toutes les cloches et sifflets habituels que l'on attend des outils d'analyse statique (tableaux de bord personnalisables par l'utilisateur, rapports PDF, histogrammes, etc.), ainsi que des widgets de risque dynamiques. Mais là où vous obtenez une valeur unique de Parasoft, c'est que nous avons intégré tout cela dans notre cadre de conformité standard, afin que vous puissiez facilement produire des rapports pour prouver ce que vous avez fait, quand vous l'avez fait, comment vous avez mappé Parasoft sur CERT , et toutes les autres garanties nécessaires aux audits de sécurité. Votre agent de sécurité vous remerciera, ainsi que vos clients.

J'ai enregistré un rapide aperçu du tableau de bord de sécurité pour CERT pour vous montrer certains des flux de travail possibles avec les rapports et les widgets dans la configuration de conformité intégrée:

Tout cela fonctionne de la manière dont les développeurs en ont réellement besoin. Parasoft s'intègre entièrement aux systèmes build et CI, avec une interface utilisateur Web permettant à chacun de voir les résultats. Plus important encore, il s'intègre directement dans l'EDI du développeur (c'est-à-dire Eclipse ou Visual Studio), permettant au développeur de travailler là où se trouve le code pour un retour d'information le plus rapide possible.

Si vous avez essayé des outils de sécurité d'analyse statique dans le passé et que vous avez eu du mal parce qu'ils étaient trop bruyants ou n'ont pas vraiment durci votre code, c'est le moment idéal pour jetez un œil à Parasoft.

Test de développement unifié pour les applications C et C ++

Par Arthur Hicken

Arthur est impliqué dans la sécurité logicielle et l'automatisation des tests chez Parasoft depuis plus de 25 ans, aidant à la recherche de nouvelles méthodes et techniques (dont 5 brevets) tout en aidant les clients à améliorer leurs pratiques logicielles.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.