Les sources de vulnérabilité d’un système d’information

Chaque semaine semble apporter son lot de nouvelles failles de sécurité au cœur des systèmes d’informations. Parmi elles, quelques failles de sécurité à grande échelle, mettant en danger les données personnelles de millions d’utilisateurs, font leur apparition chaque trimestre environ. Comment expliquer ces failles ? Comment est-il possible, compte tenu de l’environnement agressif constaté sur la toile, que de nouvelles failles apparaissent encore ? Négligence des ingénieurs ? Incompétence notoire ? Collusion avec les pirates ?

Source de vulnérabilité SI

La réalité est bien plus simple. Dans les faits, les sources de vulnérabilité de systèmes d’information ont trois causes principales :

  • La qualité du code;
  • La confiance faite aux données entrantes; 
  • La grande complexité des applications, SE ou logiciels.

La qualité du code, première source de vulnérabilité

A la base, un code est écrit pour créer ou améliorer une fonctionnalité. Pas pour lutter contre la cybercriminalité. En effet, les clients des logiciels ou applications paient avant tout pour la performance et les fonctionnalités choisies. Dans les faits, seuls les professionnels de la cybersécurité attachent une importance grandissime à la sécurité des applications utilisées. De plus, une application ou un logiciel à destination du grand public se doit d’être souple, ergonomique et simple d’utilisation. Or chacun sait que la lutte contre la cybercriminalité fait perdre en liberté et en simplicité ce qu’elle fait gagner en sécurité. Il n’y a qu’à voir comment votre propre PC se met à ramer lorsque vous lancez un programme antivirus ou antimalware…

De fait, donc, les produits grand public sont voués à être moins bien codés du point de vue de la sécurité. Question de budget, d’objectif et de séduction de la clientèle.  C’est ce que l’on retrouve dans le concept de produit minimum viable. Le strict minimum pour séduire les clients, garantissant des marges maximales ou un prix de vente vraiment séduisant. De plus, applications et logiciels démarrent souvent avec des structures légères permettant d’ajouter d’autres fonctionnalités par la suite. Pourquoi se damner à vouloir construire un tank alors qu’un vélo suffit ? Ceci étant, l’ajout de nouvelles fonctionnalités sur la base de l’existant coûte bien plus cher que l’intégration directe des codes de sécurité dès la conception. A méditer.

La confiance confinant à la naïveté

Autre source de vulnérabilité de systèmes d’information : la confiance. Les failles ne se créent pas par hasard ou sous l’action d’un forcené s’attaquant à mur blindé qu’il finira par avoir à l’usure. Elles sont existantes et souvent béantes. Notamment au niveau de l’entrée des données. En somme, chaque interface permettant l’entrée de données dans le système est une possible faille. Au moins un lieu potentiel où se concentrent les attaques.

Ce n’est pas une nouveauté. Les programmeurs connaissent parfaitement ces entrées et font d’ailleurs ce qu’ils peuvent dans le temps qui leur est imparti pour filtrer les données et éviter les attaques. Le problème vient de deux éléments : les délais bien trop courts pour avoir vraiment le temps de développer la sécurité et le manque de ressources nécessaire à l’approfondissement de la question.

La complexité des programmes

D’autant qu’un troisième élément vient se greffer sur ces problématiques : la complexité des logiciels. Coder aussi vite des programmes complexes dans un délai très court, avec des ressources limitées qui donnent invariablement les mêmes résultats. Sans même parler de délai et de moyens, la complexité du codage à elle seule, laisse forcément des passages ouverts. Afin que vous compreniez bien de quoi on parle, prenons l’exemple du navigateur Firefox :

Il a fallu plus de 16 millions de lignes de code, écrites par plus de 5 000 développeurs sur une période de 10 ans pour en arriver là où on en est aujourd’hui.

Le fait est qu’il est impossible de demander à une seule personne de superviser l’ensemble et de tracer les erreurs éventuelles. Et si en plus de cela, vous ajouter les plug-ins, les interdépendances, les bases de données raccordées, les bibliothèques, les différentes couches, les compatibilités avec certaines applications… Il est tout à fait logique de trouver des failles, y compris des failles majeures, au cœur de systèmes d’informations pourtant réputés fiables et protégés.

Enfin, tout ce beau monde ne reste pas figé. Et le mouvement créé (le moindre changement d’une virgule dans une ligne de code) génère à lui seul un nombre incalculable de failles potentielles. Certaines seront à l’origine d’un bug momentané du logiciel, d’autres permettront à un pirate patient et tenace de trouver le bon endroit d’où lancer son attaque. Finalement, vulnérabilité et cybersécurité se jaugent mutuellement. Pour chaque attaque perpétrée, le niveau de sécurité augmente. Conséquence, le niveau des pirates augmente aussi… Et ainsi de suite.

Partager sur twitter
Twitter
Partager sur linkedin
LinkedIn
Partager sur facebook
Facebook