Dans le domaine de la santé, où les enjeux sont encore plus critiques, la cybersécurité revêt une importance capitale dans le développement des logiciels médicaux. Un seul dysfonctionnement peut aller jusqu’à mettre en danger la vie des patients et exposer leurs données confidentielles.
Pour cette raison, les instances réglementaires accordent une importance particulière à la sûreté des appareils médicaux. C’est le cas de la Food & Drug Administration (FDA) aux États-Unis dont une des missions est de s’assurer que les logiciels sont conçus de manière à protéger les patients et les utilisateurs contre une utilisation malveillante.
Antoine Béland et Yanik Magnan, tous les deux concepteurs logiciel Tech Lead chez CLEIO, partagent leur regard d’experts sur la sécurisation des logiciels médicaux. Ils préconisent notamment d’utiliser le modèle STRIDE pour mitiger efficacement les risques dans ce secteur hautement sensible.
Qu’est-ce que le modèle STRIDE?
Le modèle STRIDE a été développé par Microsoft en 1999. Il permet d’identifier et d’analyser les menaces potentielles à la sécurité des systèmes. Ses lettres sont l’acronyme de six grandes catégories de menaces potentielles que nous allons explorer ensemble.
Usurpation d’identité (Spoofing)
Pour l’éviter, des mesures doivent être mises en place pour s’assurer que la personne qui se connecte est celle attendue, et ainsi garantir l’authenticité dans le système.
Manipulation de données (Tampering)
Pour empêcher que cela se produise et ainsi garantir l’intégrité du système, ce type d’actions doivent pouvoir être détectées.
Répudiation
Pour l’éviter, des mesures doivent être implémentées pour garantir la non-répudiation dans le système.
Divulgation d’informations (Information Disclosure)
Pour garantir la confidentialité du système, il est possible, par exemple, d’utiliser des mécanismes d’encryption.
Déni de service
Dans ce cas, l’accès doit être permis d’une autre manière afin de garantir la disponibilité du système.
Élévation de privilèges
Pour l’éviter, des mesures sont à mettre en place afin de garantir les autorisations dans le système.
6 étapes pour garantir la sécurité des logiciels médicaux avec le modèle STRIDE
Maintenant que nous connaissons le modèle STRIDE en détails, voyons comment nous pouvons nous en servir pour identifier des menaces potentielles au niveau de la cybersécurité pendant le développement d’un logiciel médical.
1
Identifier les actifs informationnels
Un actif informationnel est une ressource dans l’infrastructure d’une organisation qui doit être protégée car elle a de la valeur. On y retrouve les données numériques, les documents physiques, la propriété intellectuelle, ou encore les connaissances et les compétences des employés.
2
Identifier les surfaces d’attaques
Une surface d’attaque est l’ensemble des points d’entrée potentiels qu’un attaquant peut exploiter pour s’introduire dans le système et causer des dommages.
Les surfaces d’attaque sont en orange et les actifs sont les types d’informations acheminés sur ces canaux.
3
Appliquer le modèle STRIDE à chacun des actifs et des surfaces identifiés
Pour pouvoir appliquer le modèle STRIDE à chacun des actifs et des surfaces identifiées, nous recommandons de créer une matrice d’analyse de cybersécurité.
informational assets | Attack Surface | STRIDE | Scenario | Sequence of Events | Hazardous Situation |
---|---|---|---|---|---|
Patient temperature | Thermometer → BLE | Tampering | [...] | [...] | [...] |
Patient temperature | Thermometer → BLE | Spoofing | [...] | [...] | [...] |
Patient temperature | Thermometer → BLE | Elevation of Privileges | [...] | [...] | [...] |
Patient temperature | Thermometer → BLE | Denial of Service | [...] | [...] | [...] |
La colonne «Scénario» rassemble le type d’attaque qui s’applique à un type de menace. À noter qu’il est possible qu’il y ait plusieurs scénarios d’attaque possibles avec des impacts différents pour une même catégorie de menace. Dans ce cas, chaque scénario doit avoir sa propre ligne dans la matrice.
La colonne «Séquence des événements» donne une description haut-niveau du fonctionnement de l’attaque.
Enfin, la colonne «Situation dangereuse» permet de décrire de façon tangible l’impact que l’attaque aura sur l’actif ou la surface d’attaque concernée.
4
Identifier les conséquences plausibles des différents scénarios formulés
Pour chaque conséquence, il s’agit de définir l’impact, le dommage causé, ainsi que le niveau de probabilité et de sévérité.
Impact
Quel sera l’impact de la fonctionnalité, la performance du système, les données des utilisateurs, le patient ou la disponibilité du système?
Dommage
Blessure physique ou atteinte à la santé des personnes, ou atteinte aux biens ou à l’environnement.
Probabilité
-
Improbable
(1:100,000 < P < 1:10,000) -
Unlikely
(1:10,000 < P < 1:1000) -
Occasional
(1:1,000 < P < 1:100) -
Frequent
(P > 1:100)
Sévérité
- Negligible (user inconvenience)
- Minor (injury without requiring medical intervention)
- Major (injury requiring medical intervention)
- Severe (risk of death or permanent injury)
5
Évaluer le niveau de risque des conséquences identifiées
Le niveau de risque peut être déterminé par une matrice qui prend en compte la sévérité et la probabilité d’un incident:
6
Définir une mitigation au besoin
La connaissance de tous ces éléments permet alors de définir une mitigation si nécessaire, c’est-à-dire la mesure à mettre en place pour éviter que l’incident se produise.
- Apporter une modification au design de base si le risque est inacceptable pour réduire la possibilité de risque de survenir.
- Ajouter des mesures préventives pour éliminer ou réduire le risque comme l'encryption des données ou l'authentification multi-facteurs.
- Ajouter des informations préventives pour l’utilisateur si d’autres mesures ne peuvent pas être appliquées.
La cybersécurité est un élément essentiel à considérer lors du développement de logiciels médicaux. Nous avons vu comment le modèle STRIDE permet d’appliquer une méthode systématique d’analyse des risques et de réfléchir à des mesures à mettre en place pour les mitiger.
Cependant, cette méthode seule ne suffit pas à réduire les risques. D’autres actions sont à effectuer pendant le développement. C’est le cas notamment des tests logiciels qui doivent être menés de manière rigoureuse pour prévenir les incidents qui pourraient, non seulement, nuire aux patients, mais également entraîner des rappels de produits, des litiges, et porter atteinte à la réputation du fabricant.