Sécurité et logiciel – Implémentation (SDL phase 3)

Contrôle de l’intégrité des logiciels utilisés

Le contrôle de l’intégrité des logiciels utilisés permet de s’assurer de l’intégrité des outils et des librairies utilisés pour l’implémentation du logiciel.

Pour les outils, il s’agit :

  • De s’assurer que l’outil utilisé offre des garanties suffisantes au niveau de la sécurité.
  • De s’assurer que l’outil utilisé n’a pas été contrefait ou corrompu.

Pour les librairies, il s’agit :

  • De s’assurer de la qualité et de la sécurité de la librairie.
  • De s’assurer que la librairie n’a pas été contrefaite ou corrompue.
  • De s’assurer que la licence d’utilisation est en adéquation avec les besoins et les choix de l’entreprise.
  • De s’assurer que la communauté ou l’entreprise proposant la librairie maintient toujours activement celle-ci.

Généralement, on utilisera la dernière version des outils et des librairies pour tirer parti des améliorations offertes dans le domaine de la sécurité de l’information.

Configuration des outils de production

Les outils de production comme les compilateurs ou les linkers (lieurs) disposent de nombreux paramètres de configuration. Un certain nombre de ces paramètres concernent directement la sécurité de l’information. Ces paramètres doivent être définis et validés.

Pour les compilateurs, une attention particulière doit être portée sur les messages d’avertissement concernant :

  • Les erreurs de transtypage
  • L’utilisation de fonctions obsolètes
  • L’utilisation de variables non initialisées

Pour les linkers, on tiendra compte des options suivantes :

  • Vérification que le gestionnaire d’exception n’a pas été corrompu afin d’empêcher le remplacement du gestionnaire d’exception légitime par un gestionnaire d’exception malveillant.
  • Empêcher l’exécution des données gérées par l’application (Data Execution Prevention ou DEP) afin de limiter la possibilité d’injecter du code malveillant dans l’application.
  • La randomisation des espaces mémoires utilisés pour le stockage des données et du code de l’application afin de rendre ceux-ci moins prédictibles et de compliquer l’injection de code malveillant dans l’application.

Certains compilateurs et certains linkers offrent des fonctionnalités d’analyse dynamique.

Analyse statique

En plus d’une analyse qualitative du code les outils d’analyse statique permettent également de vérifier la prise en compte de certaines exigences de conception durant l’implémentation.

Les outils d’analyse statique permettent :

  • La vérification du respect des règles de codage
  • La vérification du niveau de complexité des fonctions.
  • La détection de l’usage de fonctions obsolètes ou non sûres
  • La détection des erreurs de transtypage
  • La détection de variables non initialisées

Parmi les outils d’analyse statique gratuits, on peut citer :

Cette liste n’est pas exhaustive.

Malheureusement, les outils d’analyse statique ne sont pas suffisants pour assurer que les méthodes préconisées pour l’implémentation d’un code sûr sont respectées. Une analyse manuelle est nécessaire en complément de l’analyse automatique.