Qualité et sécurité des applications et des systèmes
A la base de tous nos systèmes il y a le code… et ses faiblesses.
La qualité des logiciels et la garantie de sécurité sont deux éléments clefs de la gestion du risque cybersécurité. Cette criticité se vérifie à plusieurs niveaux. Par exemple, les enjeux sont majeurs pour les logiciels intégrés dans les robots scientifiques utilisés dans le cadre de l’exploration interplanétaire. L’intégrité du logiciel est alors naturellement primordiale, la correction de bugs à distance pouvant s’avérer problématique. Intégrité et niveau de sécurité sont tout aussi essentiels lorsqu’il s’agit d’informations financières sensibles susceptibles de motiver des velléités de vol.
Il existe une différence fondamentale entre qualité et sécurité. Un test d’assurance qualité en fin de cycle de production valide, de façon binaire (oui ou non), si le niveau de stabilité d’un logiciel est suffisant. Un test de sécurité est plus ambigu (ça dépend). En fonction des contraintes d’accès au marché, le résultat de ce test peut ne pas être pris en compte par les décideurs. Si un code applicatif de bonne qualité ne peut pas toujours être sécurisé, un code sécurisé ne peut pas faire l’impasse sur la qualité.
Vérifiez et corrigez vote code en utilisant des mécanismes à base de méthodes formelles pour garantir l’absence totale de failles correspondantes aux familles de vulnérabilités logicielles identifiées.
Si l’application est critique et/ou utilisée en environnement sensible, l’ajout de fonctions de contrôle d’accès fin au niveau du code applicatif permet de maitriser les risques de compromission ou de détournement. Elle garantit en effet un meilleur contrôle de l’accès à certaines fonctionnalités.
L’outsourcing des tests et des développements d’applications impliquant l’utilisation de données métier est incompatible avec la totale confidentialité de l’information. Pour respecter les contraintes de conformité RGPD, l’anonymisation de toutes les données clients figurant dans les jeux de tests est une obligation.
Les principales sources de vulnérabilités peuvent être attribuées à des logiciels défectueux où à des défauts d’architecture, de conception, de mise en œuvre ou de configuration du logiciel qui créent des vulnérabilités potentiellement exploitables à des fins d’attaque. Pour tendre vers le “zero-bug” et éliminer les risques de compromissions des fonctions de sécurité essentielles de l’application ou du système d’exploitation – en particulier dans le domaine de l’IoT – une démarche “security by design” associée à l’utilisation des méthodes formelles permet d’atteindre un niveau de sécurité très élevé.
Le système d’exploitation et le noyau doivent être dignes de confiance et constituer un socle logiciel fiable. Ils doivent résister aux pirates informatiques dans leurs tentatives d’exploitation des bugs et vulnérabilités. Ces composants logiciels doivent se rapprocher du « zéro-bug » et démontrer leur niveau de conformité à travers leurs propriétés de sécurité.
Il est possible de piloter la sécurité applicative fine de son écosystème applicatif de manière totalement centralisée afin de pouvoir l’adapter progressivement et de manière agile aux règles de conformités. Pour ce faire, il est fortement recommandé d’intégrer, dès la conception, des APIs permettant un contrôle fin des fonctions sensibles de vos applications.
SECURITY BY DESIGN (Sécurité assurée dès la conception)
Pour pouvoir la garantir, il est essentiel d’intégrer la sécurité dès la conception. Or, d’une manière générale, les logiciels sont conçus principalement par rapport à leurs fonctionnalités métiers. La sécurité devient alors une préoccupation secondaire et les développeurs doivent gérer failles de sécurité et vulnérabilités quand il aurait fallu concevoir et mettre en œuvre, dès le départ, une sécurité optimisée. Avec le “security by design”, l’éditeur intègre la sécurité dès la phase de conception et la met en œuvre de manière efficace et rapide pendant les phases de développement et de test.