Ce cours a été réalisé en collaboration avec le Conservatoire national des Arts et Métiers.
L'objectif sera de comprendre les enjeux de production et de sécurité des logiciels et applications que vous installez sur vos équipements, smartphones, postes de travail, d'en comprendre le mode de fonctionnement dans les situations les plus courantes, et également de vous montrer des cas d'utilisation malveillante, comme des codes malveillants, de la divulgation d'informations personnelles, afin que vous puissiez comprendre et appliquer les bonnes pratiques de la sécurité proposées par l'ANSSI.
La bonne pratique N°2 nous a appris pourquoi les mises à jour des logiciels sont essentielles pour la sécurité, éviter en particulier l'exploitation de vulnérabilités liées à des bugs/défauts de conception logicielle ou matérielle ; nous avions également souligné l'importance d'effectuer ces mises à jour logicielles à partir des sites officiels des éditeurs de logiciels. En réalité, il existe un processus complet organisé par vos éditeurs de logiciels pour réaliser vos mises à jour directement sur leur site ; bien entendu sur les serveurs d’entreprises vous avez des outils logiciels pour effectuer ces mises à jour de façon sécurisée.
Au moment où vous introduisez une nouvelle application sur votre ordinateur ou sur un serveur, cela signifie que vous acceptez que de nouvelles activités s’exécutent sur votre serveur ; c'est-à-dire que vous consentez à ce que ces activités puissent modifier (voire supprimer) des fichiers, éventuellement des fichiers de configuration.
Donc, on peut dire qu’un bon logiciel va effectuer des actions et des activités qui vont vous rendre service (le service que vous avez choisi) ; on peut dire aussi qu’un mauvais logiciel, un « malware », va effectuer des actions qui d’une part sont codées par un attaquant, et qui d’autre part vont apporter de nouvelles données sur votre ordinateur, ou fournir des accès en modification ou suppression, ce qui engendre des effets non désirables.
Situation de téléchargement et déploiement d'applications
La liste montre une multitude de sites de téléchargement, vous voyez qu'ils vous est proposé dans l'encart 1 de vous installer un "cleanup" pour Mac ; ce cleanup est embarqué dans votre package (empacking).
Si vous choisissez parmi la liste, par exemple Google Chrome, dans ce cas, vous êtes informé, mais certains sites "repackage" sans que vous le sachiez, pire encore, en faisant cela, ces sites de téléchargement peuvent sans le savoir être infectés par un code malveillant.
La plupart des situations d'installations peuvent se dérouler ainsi :
Partir d'un nouveau besoin ou tester des nouveautés.
Choisir une application en bureautique, gratuite ou payante.
Télécharger sur votre poste de travail.
Installer en cliquant au fur et à mesure que l'application vous le demande.
Conserver les sources dans son répertoire de téléchargement.
En plus de son repackaging, et ce afin que l'étape 4 se déroule au mieux, le logiciel que vous téléchargez ne vient pas seul, il est "emballé" (empackagé) dans un "installer" ; l'installer est l'utilitaire logiciel qui va prendre en charge votre système d'exploitation et votre matériel. Pour cela, il est entièrement programmé et contrôlé par le développeur pour prendre vos configurations et réinstaller votre nouveau package :
sous Windows, tous les paramètres du registre, sous Linux des profils et des batchs ;
la création des répertoires d'accueil ;
la création des raccourcis dans le menu de Windows et sur le bureau ;
les ressources partagées : DLL Windows (WinSxS) ;
l'acceptation d'une ou de plusieurs licences.
N'oubliez pas que l'installer est un programme : on peut lui faire faire ce que l'on veut, puisqu'en plus, si vous le lui permettez, il aura les droits "admin-root".
Architecture technique des installations et déploiements logiciels
Que ce soient des logiciels gratuits ou payants, des applications liées directement à votre métier dans tous les départements de votre entreprise, les opérations de déploiement de nouvelles applications ou de leurs mises à jour passent par une expertise qui se déroule en 5 grandes phases, sur vos postes de travail Windows, client sur PC Linux, ou portable ou serveur :
installation : cette phase concerne la mise en place des équipements supports et l’installation de vos logiciels ; elle vise la mise en production en fonction de vos attentes. Des connaissances et expériences d'experts du parc informatique complet seront détenues pour atteindre la fiabilité et la sécurité de votre parc informatique. À ce stade, le choix des sources du téléchargement est vital ; vous ne devez pas vous procurer des sources non fiables ;
configuration : cette phase permet d'adapter vos logiciels à vos besoins et à vos équipements existants ; la connaissance des compatibilités des logiciels et des versions est indispensable. Le choix d'un paramètre peut être délicat et autoriser des failles de sécurité. Par exemple, faut-il activer les JavaScript sur votre navigateur ? La mise à jour le déconfigure, mais vous ne savez pas quel paramètre remettre ?
optimisation : cette phase va permettre d'opter pour une configuration plus optimale de vos logiciels, en optimisant la qualité de service (débit, qualité d'image...). Ne vous exposez pas à l'introduction de codes malveillants !
gestion de parc : la gestion de parc maintient les versions de vos logiciels, les informations sur vos équipements, leur histoire avec les dates de mises à jour, les incidents, les adresses des sources de téléchargement ; ces renseignements sont précieux pour avoir un suivi précis de votre parc et de vos logiciels ;
gestion d'incident et support : le déploiement d'un nouveau logiciel, l'installation d'un nouvel équipement, peuvent causer des incidents ; une cellule de support doit vous accompagner.
La menace
De votre côté, il est impossible de vérifier une application (une application = des milliers de lignes de code, donc même un spécialiste ne peut pas vérifier ça).
Les limites actuelles du développement logiciel
Imaginons que j’aie introduit une instruction parmi des milliers de lignes de code ; il est évident que vous ne pourrez pas le vérifier.
De même, comme le code est une production purement humaine, il est difficile de mettre en place un outil automatique pour vérifier ça ; la seule chose que l’on puisse faire (et c’est ce que font les logiciels antimalware), c’est de vérifier que certaines instructions connues, identifiées à l’avance et respectant certains standards, ne viennent pas réaliser des actions malveillantes ; à part cela, il n’y a pas d’autre protection que de prévenir un risque de mauvaise exécution.
Obfuscation
La plupart du temps, l’impossibilité de vérifier le code est liée au fait que les développeurs (éditeurs de logiciels) obfusquent leur code, c'est-à-dire qu’ils le rendent illisible afin de protéger leurs propriétés intellectuelle et industrielle. De cette façon, vous ne pourrez pas voir quelles sont les instructions qu’ils ont développées. Donc, en voulant lutter contre le vol de la propriété industrielle, d’une certaine manière on rend encore plus difficile la possibilité de se protéger.
Exécution automatique des installations logicielles
Certains paramétrages logiciels proposent d’exécuter même automatiquement (c’est ce qu’on appelle des compléments logiciels) ; c’est le cas de vos navigateurs. C’est ce qu’on appelle des « modules complémentaires ». Du coup, cela revient à faire un clic sans que ce clic ne soit réalisé par vous. Donc, cliquer c’est exécuter ; votre responsabilité est engagée chaque fois que vous avez cliqué sur une partie d’installation logicielle.
Injection de codes malveillants
On entend souvent des personnes croyant bien faire en téléchargeant une application pour nettoyer leur ordinateur, et qui sont alors victimes d’un malware qui va ensuite s’exécuter sur le serveur, les postes de travail.
Ou pire encore : n’oubliez jamais que vous êtes en réseau dans l’entreprise. Vous pouvez contaminer tout le réseau de votre entreprise et comme ces attaques sont contaminantes (vous avez certainement entendu parler des ransomwares qui n’ont certes pas les mêmes activités, mais qui sont en lien, en ce sens où c’est toute une activité de l’entreprise qui est suspendue, en touchant par exemple une chaîne de production ; ce genre de malware peut entraîner des conséquences considérables), l’entreprise peut être paralysée pour une durée indéterminée ; un clic et votre responsabilité est engagé, chaque fois que vous cliquez, il faut faire attention.
Logiciels open source, pour vous et les attaquants !
De nombreux logiciels en « open source » ou gratuits peuvent vous rendre vulnérable du fait que le code source est ouvert aux développeurs : l'open source fonctionne en mode contributeur.
Définition : open source = mutualiser des efforts et des développements pour améliorer un produit ; notamment toute la génération Git et GitHub, qui sont des sources logicielles déposées sur des plateformes mutualisées où chacun vient contribuer ; ça part d’un esprit de solidarité et de bienveillance, mais parfois il peut y avoir effectivement des malwares qui y sont déposés, et la communauté des développeurs n’est pas toujours en train de travailler sur le logiciel que vous avez téléchargé, donc il faut se montrer prudent.
Par ailleurs, certains logiciels, du fait de leur gratuité, ne sont pas maintenus par les éditeurs de logiciels qui ne vont plus apporter des modules complémentaires, et de cette façon on va mettre en place des modules complémentaires sur des fondations de logiciels qui ne sont jamais maintenues ni mises à jour.
On peut se demander comment fonctionnent les mises à jour, on a expliqué dans la partie précédente que les éditeurs de logiciels fournissaient des outils de mises à jour qui sont des agents déposés sur votre PC ; ces agents ont une relation particulière avec le site de l’éditeur de logiciels.
Il ne faut jamais payer
Vous n'avez pas de garantie :
que le paiement effectué parvienne à votre interlocuteur ;
que ce dernier vous restitue les clés de déblocage, peut-être lui-même les a-t-il perdues ou mélangées ! (Si vous êtes sa Xème victime) ;
qu'il ne vous sera pas demandé une nouvelle rançon.
En revanche, vous avez la garantie :
que vous redémarrerez avec vos sauvegardes !!!! rapidement et avec peu de dégâts... ;
que les institutions qui vous protègent lutteront mieux en analysant votre système.
Les bonnes pratiques pour le téléchargement de vos logiciels
Nous avons vu dans la bonne pratique n° 8 qu'il était possible de recevoir des liens malicieux via des emails ; nous vous recommandions de ne pas cliquer, vérifier les URL, vous avez été sensibilisé ! Ce n'est pas le cas de votre collègue, Monsieur Dupé (ci-dessus) : il a ouvert le mail, l'a lu puis a cliqué sur la pièce jointe ; l'exécution du code sur le poste de travail est alors enclenchée (l'étape 3) !
Il ne faut donc pas donner cette possibilité de cliquer, et votre responsabilité est entière ! Il faut vous renseigner, vous êtes le seul à être responsable de ce clic.
Choisissez le circuit vert!
C’est pour cela que parmi les précautions essentielles que vous devez respecter, il y a celle de faire une demande auprès de votre éditeur de logiciel (qui, lui, est plutôt bienveillant) pour vous délivrer un service de qualité à la hauteur de celui que vous avez souscrit en le payant ; et en particulier de ne pas repackager et empackager sans tester.
Télécharger des programmes via les utilitaires officiels des éditeurs
C'est une chose, mais il existe également la bonne pratique n° 2 ; on avait déjà expliqué le principe des mises à jour, et dans cette partie on va expliquer le téléchargement. Pour télécharger, les éditeurs de logiciels ou de systèmes d’exploitation fournissent des outils préférentiels pour l’installation et le téléchargement de nouveaux logiciels.
Et vous allez donc établir un lien avec l’URL de l’éditeur de logiciels qui vous est recommandé ; vous allez ensuite ouvrir un compte et ce sera avec ce compte que vous allez pouvoir obtenir des applications. Vous ouvrez le compte sur un centre de distribution de logiciels (centre de téléchargement officiel). Par exemple, pour l’environnement Windows vous allez avoir accès aux logiciels Microsoft via un agrément logiciel (cela peut parfois être un certificat ou une clé publique) ; Google fait également valider et met un niveau de confiance sur les applications logicielles.
Vous avez maintenant votre navigateur et votre utilitaire (en haut/droite de l’écran), donc on voit votre poste de travail de votre entreprise, vous êtes administrateur, vous gérez plusieurs postes de travail, vous ne donnez pas les droits d’installation des logiciels en mode administrateur afin de ne pas permettre des actions dangereuses et irréversibles sur les postes de travail, mais aussi sur le réseau puisque (comme on l’a dit tout à l’heure) ce sont généralement des logiciels qui vont se déployer automatiquement et souvent grâce au compte administrateur ; à ce stade, vous avez obligé vos utilisateurs à utiliser l’installer de Windows : c’est ce que montrent les écrans Windows 10, Windows 8.1 et Windows 7, qui sont des exemples de modules de téléchargement de logiciels.
Je vous conseille donc d’utiliser ces outils sans modération en respectant malgré tout les autres points de vigilance que nous avons évoqués ; mais au moins, cela vous permet d’établir des liens de confiance plus élevés avec ces éditeurs.
Donc, nous avons vu l’architecture utilisée pour réaliser les téléchargements ; on voit qu’effectivement on va chercher (tout en bas) sur des sources, des dépositaires d’applications qui sont des points d’entrée sur votre poste de travail, sur les postes de travail de vos utilisateurs et également sur les serveurs de votre entreprise.
À partir de cette architecture, téléchargez des programmes sur les sites, recommandez des éditeurs de logiciels, pensez à décocher ou désactiver toutes les cases proposant d’installer des modules complémentaires, pour garder la maîtrise des modules que vous installez.