AlgoBlog

Les actualités et nos conseils sur la sécurité

Tous publics
Afficher seulement les articles tous publics
Public technique
Affichement seulement les articles techniques

Utiliser un gestionnaire de mots de passe

Benjamin 20 février 2017 Tous publics

Malgré l'apparition de nouvelles solutions depuis quelques mois ou années (lecteur d'empreintes digitales, mots de passe à usage unique, authentification double-facteur...), force est de constater que les mots de passe resteront pendant encore un moment la solution la plus utilisée pour s'identifier et protéger l'accès à des ressources.

Parallèlement à cela, les attaques informatiques et les fuites de base de données se multiplient, en témoignent les affaires Dailymotion, LinkedIn, Yahoo, Dropbox, Twitter et Tumblr...

Les critères de mots de passe... ça soûle !

Jusqu'à récemment, le conseil fourni aux utilisateurs était de choisir son mot de passe avec "intelligence" : majuscules, minuscules, chiffres, caractères spéciaux... Cette solution est très gênante pour les utilisateurs, et ne règle pas le problème de la réutilisation d'un mot de passe entre plusieurs services. D'autres solutions existent (comme des dés de génération de mots de passe, ou diceware) mais ne nous paraissent pas pratiques non plus.

Qu'est-ce qu'un gestionnaire de mots de passe ?

Un gestionnaire de mots de passe est un système qui va gérer pour vous :

  • la génération de mots de passe suffisamment complexes ;
  • le stockage sécurisé de ces mots de passe ;
  • l'expiration des mots de passe, pour vous rappeler d'en changer régulièrement.

Le principe est simple : vous n'avez à vous rappeler que d'un mot de passe, celui qui déverrouille le gestionnaire, choisi avec des critères sécurisés et ennuyeux... mais au moins, il n'y en a qu'un à se souvenir.

De plus, il vous permet de recenser à un même endroit tous les comptes que vous avez sur différents sites, et donc de mieux maîtriser votre présence en ligne et vos données.

Deux types de gestionnaires existent : les gestionnaires en ligne (DashLane, LastPass, 1password...) et les gestionnaires hors-ligne (KeePass, Enpass, Roboform...). À l'heure où l'on s'inquiète de voir partir toutes nos données dans "le cloud" ainsi que de la sécurité et de la confidentialité de celles-ci, confier à un service externe la gestion de tous ses mots de passe est pour nous un non-sens. D'autant plus que vu le type de données qu'ils stockent, ils sont davantage la proie des attaquants que d'autres services (LastPass s'est déjà fait pirater).

Nous privilégions donc l'utilisation d'un gestionnaire de mots de passe hors-ligne, stocké sur votre ordinateur.

Nous avons choisi KeePass, car il est gratuit et surtout open-source, c'est à dire que tout le monde peut inspecter le code du logiciel afin de l'améliorer et corriger les failles de sécurité, un principe qui nous est cher à AlgoSecure. De plus, il est simple d'utilisation et existe sur toutes les plateformes (Windows, Mac, Linux, Android et iOS).

Pourquoi ne pas enregistrer ses mots de passe dans son navigateur ?

Il est très déconseillé d'enregistrer ses mots de passe dans son navigateur. D'une part, pour des raisons pratiques : que se passe-t-il si l'ordinateur est volé, perdu, ou qu'il ne fonctionne plus ? D'autres part, stocker ses mots de passe dans son navigateur encourage l'utilisateur à ne pas à utiliser des mots de passe différents et complexes pour chaque service. Enfin, des outils permettent de voler les mots de passe stockés dans les navigateurs ou d'autres logiciels. Ci-dessous, l'un de ces logiciels a récupéré des mots de passe dans Internet Explorer et Firefox :

Installer KeePass

La première chose à faire est donc d'installer la version de KeePass correspondant à votre système :

  • Windows : télécharger et installer la Professional Edition, version Installer
  • Linux : installer le paquet keepass2 ou keepassx (généralement avec sudo apt-get install keepass2)
  • Mac (KeePassX) : télécharger et installer KeePassX, avec le lien Binary bundle
  • Android (KeePassDroid) depuis Google Play
  • iOS (KeePass Touch) sous iOS

Dans ce guide, nos captures seront réalisées sous Windows, mais le principe est le même pour les autres systèmes.

Créer une base

Au premier lancement du logiciel, rien ne s'affiche. Il va falloir créer une base de données, c'est à dire le fichier où seront stockés les mots de passe sur l'ordinateur. Pour cela, cliquer sur File, New, et indiquer l'endroit où enregistrer le fichier sur votre ordinateur.

S'affiche ensuite une fenêtre vous demandant de choisir un mot de passe principal (ou master password). N'oubliez pas que c'est le seul mot de passe que vous aurez à retenir dorénavant, celui qui protègera tous vos autres mots de passe. Nous insistons donc sur le fait qu'il faut qu'il soit long et complexe.

Vous pouvez par exemple choisir une citation, une maxime, un vers, un refrain, ou une réplique de film que vous aimez bien, en changeant certains caractères (les espaces par un point d'exclamation, les "o" par le chiffre 0, etc), ce qui constituera finalement plutôt une phrase de passe (ou passphrase) qu'un mot de passe. Il doit être suffisamment long et complexe pour que la barre Estimated quality devienne verte.

Ne notez ce mot de passe nulle part, conservez-le en lieu sûr dans votre mémoire.

Après avoir cliqué sur OK, une deuxième fenêtre vous propose de choisir un nom et une description pour la base de mots de passe. Entrez des informations vous permettant d'identifier votre base.

Allez ensuite dans l'onglet Security, puis cliquez sur le bouton 1 Second Delay. KeePass choisira automatiquement les paramètres mathématiques les plus adaptés à votre ordinateur pour protéger votre base de mots de passe.

Cliquez ensuite sur OK pour créer la base de mots de passe ! Le logiciel se décompose en deux parties : une colonne sur la gauche qui vous permet de créer des groupes pour classer vos identifiants (par exemple, un groupe Site d'achats, un autre Email, etc), et une partie sur la droite qui présente les identifiants du groupe.

Par défaut, deux entrées ont été créées afin de tester le principe de fonctionnement du logiciel, Sample Entry et Sample Entry #2. Vous pouvez les supprimer en faisant un clic droit sur la ligne de ces entrées, et en choisissant Delete Entry. Les entrées se placent dans un nouveau groupe, Recycle Bin, l'équivalent de la corbeille.

Ajouter des identifiants

Nous allons ajouter de nouveaux identifiants dans la base, en commençant par le plus important des comptes : votre compte email. Celui-ci vous permet en effet de réinitialiser les mots de passe de tous les sites sur lesquels vous avez des comptes, il est donc à protéger en priorité.

Rendez-vous sur le site de votre fournisseur d'email et lancez une procédure de changement de mot de passe, généralement dans les options ou paramètres du compte. Par exemple, pour Gmail, il faut se rendre sur ce lien. Le premier mot de passe qui vous est demandé est votre mot de passe actuel, puis vous arrivez sur cet écran :

Retournez dans la fenêtre de KeePass, cliquez sur le groupe eMail sur la gauche, faites un clic droit sur la partie de droite et choisissez Add Entry afin d'ajouter de nouveaux identifiants (une "entrée").

Dans la fênetre qui s'affiche, vous devrez indiquer :

  • un titre (le nom de votre fournisseur d'emails, par exemple Gmail)
  • votre nom d'utilisateur (généralement votre adresse email)
  • l'URL du formulaire de connexion du site (vous pourrez éditer l'entrée pour la rajouter plus tard)
  • l'expiration automatique du mot de passe, pour avoir un rappel et donc le changer dans 6 mois (par exemple)

Comme vous pourrez le voir, KeePass vous a déjà généré un mot de passe : vous n'avez qu'à cliquer sur le bouton avec les trois petits points, tout à droite de la ligne Password, pour l'afficher.

Vous pouvez alors copier le mot de passe qui vous a été généré, cliquer sur OK, puis coller le mot de passe dans le formulaire de changement de mot de passe que vous avez ouvert dans votre navigateur Internet. Après validation du formulaire, votre mot de passe sera modifié.

Se connecter à un site

Se connecter à un site est alors très simple : ouvrez votre base KeePass (File, Open, Open file) ainsi que le formulaire de connexion au site dans votre navigateur. Faites un clic gauche de la souris sur le champ "Nom d'utilisateur" (ou login, adresse email...) du formulaire de connexion dans votre navigateur, puis basculez sur la fenêtre de KeePass.

Sélectionnez l'entrée correspondant à vos identifiants, puis appuyez sur Ctrl + V (ou Pomme + V sous Mac) sur les touches de votre clavier. KeePass va automatiquement basculer sur la fenêtre de votre navigateur, saisir vos identifiants dans le formulaire, et cliquer sur le buton "Se connecter". Magique !

Il se peut que certains (rares) formulaires de connexion soient mal conçus et que le Ctrl + V ne fonctionne pas. Il faut dans ce cas copier-coller manuellement les informations depuis KeePass : un double-clic sur votre adresse email ou sur les ******** de votre mot de passe suffit à copier l'information dans le presse-papier pour une durée d'une dizaine de secondes, afin que vous puissiez le coller (Ctrl + V ou Pomme + V sous Mac) dans le formulaire.

Réglages "avancés"

Les réglages suivants amélioreront votre usage du logiciel.

  • Ce guide du site PC Astuces vous indiquera comment passer en français l'interface de KeePass.
  • En double-cliquant sur l'URL d'une entrée dans KeePass, votre navigateur s'ouvre directement sur cette URL.
  • Cet article de NextInpact explique comment configurer une YubiKey avec KeyPass. Une YubiKey est une petite clé USB d'une quarantaine d'euros qui déverrouillera votre fichier KeyPass, ou même d'autres comptes type Facebook ou Gmail, seulement lorsqu'elle sera branchée à votre ordinateur (ou proche de votre smartphone avec la version Neo et un smartphone disposant d'une puce NFC).
  • Vous pouvez durcir les paramètres de mots de passe par défaut. Allez dans Tools, Generate Password. Dans la section Generate using character set, indiquez 16 caractères, sélectionnez toutes les cases sauf Space (qui peut parfois poser problème). Dans l'onglet Advanced, cochez les deux cases (Each character must occur at most once et Exclude look-alike characters). Revenez dans l'onglet Settings et cliquez sur l'icône de disquette, sur la même ligne que Profile à droite, puis sélectionnez (Automatically generated passwords for new entries).

Quels sont les inconvénients d'un gestionnaire de mots de passe ?

La solution miracle n'existe pas, et chaque solution possède ses défauts.

D'un point de vue pratique, le fonctionnement par fichier nécessite que vous copiiez ou synchronisiez le fichier entre votre ordinateur et votre smartphone si vous avez l'habitude de vous connecter à vos comptes en mobilité.

D'un point de vue sécurité, il est possible pour un attaquant ayant piraté votre ordinateur de lire le contenu du fichier en mémoire, si vous avez votre base de mots de passe ouverte. Il est également possible de récupérer le fichier et tenter de bruteforcer le mot de passe principal (tester très vite toutes les combinaisons possibles), si vous avez choisi un mot de passe principal faible, d'où l'intérêt de choisir une phrase de passe comme nous le suggérons. Toutefois, si un attaquant accède à votre ordinateur, cela signifie que votre sécurité est déjà compromise, gestionnaire de mots de passe ou non !

La vache qui root

Jonathan 25 octobre 2016 Public technique

Une faille corrigée peut réapparaître quelques années plus tard. C'est le cas pour une faille hautement critique découverte par Phil Oester dans le kernel Linux. La faille vieille de 9 ans est une élévation de privilège, c'est à dire qu'un utilisateur avec des droits restreints peut exécuter une action avec des droits administrateurs (root dans le cas présent).

Dirty COW

La vulnérabilité est surnommée Dirty COW en référence au mécanisme Copy-On-Write du noyau Linux. Elle correspond à la CVE-2016-5195. Comme écrit plus haut, il s'agit d'une faille permettant à un simple utilisateur d'exécuter des programmes avec les privilèges root. Cette faille est d'autant plus critique que :

  • Il est facile d'écrire un exploit, une liste de POC est disponible ici
  • La faille est présente dans quasiment toutes les différentes distributions Linux, on peut citer Debian, Ubuntu et certaines version de RedHat...

La faille a déjà été corrigée pour les distribution RedHat, Debian et Ubuntu, pour les autres il faudra attendre avec patience...

Fonctionnement

Dans le noyau Linux, lorsqu'un processus souhaite écrire dans un fichier, une copie de ce dernier est créée au moment de l'écriture : c'est le mécanisme de Copy-On-Write. La vulnérabilité est basée sur cette fonctionnalité. L'exploitation est décomposée en plusieurs étapes :

  • Récupérer l'adresse mémoire de la copie du fichier avec la fonction mmap(). Le contenu du fichier est "mappé" en mémoire.
  • Effectuer parallèlement deux actions à l'aide de 2 threads:
    1. La première action est une écriture en boucle dans la zone mémoire pour générer des copies (Cow) de la zone.
    2. La deuxième action est l'utilisation de la fonction madvice() avec l'argument MADV_DONTNEED. Ce dernier indique au système qu'il peut libérer la zone mémoire utilisée.

La combinaison de ces deux actions peut provoquer une race condition, c'est à dire que l'écriture est effectuée avant que la copie en mémoire soit créée.

La vidéo suivante permet de donner plus de détails techniques sur l'exploit et la faille en elle-même:

Démonstration

Je me connecte en tant que root, pour créer un fichier accessible uniquement en lecture

(jonathan)$ sudo -s
(root)$ echo "Je suis root, personne ne peut modifier ce fichier" > test_DirtyCow
(root)$ exit
(jonathan)$ ls -ltr test_DirtyCow
-rw-r--r-- 1 root root 51 oct.  26 11:02 test_DirtyCow
(jonathan)$ echo "Algosecure is the best!" > test_DirtyCow
-bash: test_DirtyCow: Permission non accordée

Je ne peux donc pas modifier le fichier avec mes droits actuels. Je vais maintenant utiliser le POC dirtyCow pour modifier le fichier

(jonathan)$ ./dirtyc0w test_DirtyCow "Algosecure is the best et peut réécrire le fichier            "
mmap 7f6921ee3000

madvise 0

procselfmem 2005032704
(jonathan)$ cat test_DirtyCow 
Algosecure is the best et peut réécrire le fichier
(jonathan)$ echo "Algosecure is the best!" > test_DirtyCow
-bash: test_DirtyCow: Permission non accordée

Le fichier a bien été modifié. Cependant si le contenu à écrire dans le fichier dépasse la taille réelle du fichier, l'écriture sera tronquée. Inversement, si le contenu est plus petit, alors seul les n premiers octets du fichier seront écrasés.

Ce test n'est pas significatif de la criticité de la vulnérabilité. Cependant, en modifiant un fichier comme /etc/shadow ou les exécutables /bin/ls, /bin/cat, /bin/ping les conséquences seraient beaucoup plus importantes.

Pour aller plus loin...

Cette faille ne touche pas uniquement les machines Linux, elle concerne également tous les terminaux Android. Ce lien explique comment procéder pour la version Android.

Implémenter correctement le HTTPS

Benjamin 16 septembre 2016 Public technique

Le HTTPS est la solution la plus simple pour fournir une couche de sécurité aux utilisateurs de son site ou application web. Mais il n'est pas toujours facile de correctement l'implémenter. Nous allons passer en revue les principaux écueils liés à ce protocole.

Qu'est-ce que le HTTPS ?

Le HTTPS est la version sécurisée du protocole HTTP. Il permet de se connecter à des sites Internet sans que le contenu des données échangées, ni même les URL complètes des sites visités, ne soit récupérables par un pirate informatique.

Toutefois, il ne suffit pas d'activer le HTTPS, il faut correctement le paramétrer. Chaque année, de nouvelles faiblesses sont découvertes dans le protocole TLS sur lequel se base le HTTPS afin de chiffrer les échanges de données. Ainsi, les administrateurs système doivent régulièrement faire évoluer les paramètres de sécurité afin de se parer d'éventuelles attaques.

Les différentes versions de SSL/TLS

Le protocole SSL (Secure Socket Layer) est apparu au milieu des années 90, avec pour but d'assurer l'intégrité et la confidentialité des données échangées, mais aussi l'authentification du serveur (et parfois, des clients). Deux versions ont été disponibles : le SSL v2 et le SSL v3. Ce protocole a rapidement été suivi par son évolution : le protocole TLS (Transport Layer Security), à partir du début des années 2000. Ce dernier connaît actuellement trois versions : TLS v1.0, TLS v1.1, TLSv1.2, et la version 1.3 devrait être disponible en 2017.

Utiliser le protocole SSL est aujourd'hui considéré comme non-sûr suite aux attaques DROWN (SSL v2) et POODLE (SSL v3). Le protocole TLS v1.0 a quant a lui été touché par l'attaque BEAST. Ainsi, il est recommandé de n'utiliser que les versions les plus récentes du protocole TLS : TLS v1.1 et TLS v1.2.

Les cipher suites, ou suites cryptographiques

Une suite cryptographique est un groupement d'algorithmes dont chacun va assurer la sécurité d'une partie de la communication entre un client et le serveur. Chaque suite se compose ainsi (source : Mozilla) :

  • d'un algorithme d'établissement des clés (comme RSA, DH, ou ECDH) ;
  • d'un algorithme d'authentification du tiers (comme RSA, DSA ou ECDSA) ;
  • d'un algorithme de chiffrement des données (comme RC4, DES, AES) et taille de clés ;
  • d'un algorithme de hachage permettant l'authentification et la vérification des messages (SHA1, SHA256).

La sécurité de ces suites cryptographiques dépend fortement de l'algorithme de chiffrement des données. En effet, c'est principalement lui qui est remis en cause ; on pense notamment à l'algorithme RC4, considéré comme obsolète suite à la découverte de plusieurs vulnérabilités. Plusieurs attaques affectent cet algorithme, dont la plus connue de toutes : Bar Mitzvah.

Au niveau des recommandations, Mozilla fournit sur son wiki une page pour déterminer la cipher suite la plus adaptée en fonction des contraintes de compatibilité de l'environnement étudié. Trois configurations-type sont ainsi disponibles : "Old", "Intermediate" et "Modern".

Les certificats

Un certificat est une carte d'identitié numérique permettent d'identifier un hôte. Il permet de s'assurer que l'on communique avec le bon serveur, et non un serveur contrôlé par un attaquant. On y lit notamment la période de validité du certificat, et l'autorité de certification qui a validé (ou signé) notre certificat. Il est nécessaire de faire attention à différents problèmes qui peuvent se poser par rapport au certificat par rapport aux propriétés suivantes :

  • la période de validité ;
  • la fonction de hashage ayant permis de signer le certificat ;
  • le sujet du certificat (dans le cas d'un site, il s'agit du nom de domaine) ;
  • l'autorité de certification ayant signé le certificat.

Si l'un de ces points n'est pas conforme, au mieux, le navigateur de l'utilisateur lui affichera un avertissement, et au pire, il empêchera l'accès au site. Bientôt, les navigateurs afficheront également un message d'erreur pour les certificats dont la signature a été générée avec l'algorithme SHA-1 plutôt que SHA-2. Il peut en effet être victime de collisions, c'est à dire qu'il est possible de générer un autre certificat avec exactement la même signature.

Il est donc recommandé de faire appel à des autorités de certifications reconnues et réactives par rapport aux normes de sécurité. Nous recommandons généralement Let's Encrypt ou StartSSL, qui ont l'avantage d'être gratuites.

La clé

Pour chiffrer les échanges, le serveur envoie son certificat à l'utilisateur, celui-ci contenant sa clé publique. Des faiblesses ont été trouvées suggérant que les clés de taille trop faibles pourraient mener les échanges à être déchiffrés, notamment par la NSA qui possède une forte puissance de calcul.

Il est aujourd'hui recommandé d'utiliser des clés d'une taille minimale de 2048 bits, voire de 4096 bits lorsque cela est possible.

La renégociation

Lors d'une connexion HTTPS, il arrive parfois que les paramètres de sécurité doivent être renégociés. Toutefois, laisser la possibilité aux clients de demander cette renégociation ouvre la possibilité pour un attaquant de forcer la renégociation à la baisse, pour que la connexion utilise des paramètres permettant un déchiffrement plus rapide des échanges.

Il est recommandé de désactiver la renégociation initiée par les clients, et d'activer le mode de renégociation sécurisée du serveur.

La compression

Le fait d'activer la compression sur le protocole SSL/TLS expose les données échangées à l'attaque CRIME, permettant notamment de récupérer des cookies de connexion via l'analyse statistique des paquets échangés entre un client et le serveur.

Il est recommandé de désactiver la compression sur le protocole SSL/TLS afin d'éviter cette attaque.

HSTS (HTTP Strict Transport Security)

Le HSTS est un mécanisme de sécurité assez récent. Il s'agit d'une instruction que le serveur renvoie aux navigateurs des clients, et qui leur indique que pendant une certaine durée (généralement plusieurs mois), ils ne doivent se connecter au serveur que de manière sécurisée.

Lorsqu'un navigateur se connecte pour la première fois à un site utilisant HSTS, il enregistre que pour ses futures visites, si la connexion au serveur ne peut pas s'établir de manière sécurisée (certificat expiré, nom de domaine différent du sujet du certificat...), la connexion doit tout simplement être bloquée. L'utilisateur ne pourra pas accepter le risque et passer outre l'avertissement de sécurité en ajoutant une exception.

Ce mécanisme permet de se prémunir des attaques de type Man in the Middle. En revanche, il y a deux inconvénients :

  • Cela nécessite que les administrateurs système puisse toujours garantir une connexion sécurisée au serveur. Par exemple, il ne faut pas que le certificat arrive à expiration, et ce n'est pas si facile.
  • Lors de sa première connexion au serveur, le client sera "vulnérable". En effet, ce n'est que lors de la première connexion que le client recevra l'instruction de la part du serveur, comme quoi la connexion doit être sécurisée. Un attaquant réalisant une attaque de type Man in the Middle dès la première connexion d'un client au site web pourra faire échouer ce mécanisme de sécurité.

Pour parer au deuxième inconvénient, il est possible de faire enregistrer son nom de domaine sur une liste qui est intégrée dans les navigateurs récents. Ainsi, le client sera en sécurité dès sa première connexion au serveur.

Conclusion

Nous avons passé en revue les principaux éléments de sécurité d'une connexion HTTPS. D'autres mécanismes existent, notamment TLS_FALLBACK_SCSV, pour éviter qu'un attaquant ne puisse faire baisser le niveau de chiffrement d'une connexion. D'autres mécanismes vont sans doute voir le jour.

Ainsi, il est important pour les administrateurs système de se maintenir au courant des nouvelles vulnérabilités trouvées, et sur les nouveaux mécanismes qu'il est possible de mettre en place afin d'assurer l'intégrité et la confidentialité des échanges client-serveur. En ce sens, AlgoSecure peut vous aider à analyser la configuration HTTPS de vos sites, à comprendre les problèmes détectés, et à mettre en place une configuration sécurisée.

Bienvenue sur le blog d'AlgoSecure !

Benjamin 15 septembre 2016 Tous publics

Bienvenue sur l'AlgoBlog, le blog d'AlgoSecure ! Cet article est le premier d'une longue série où nous parlerons de sécurité informatique.

En effet, la sécurité informatique est aujourd'hui l'un des enjeux de notre époque. À l'heure où l'informatique et la high-tech envahissent nos vies, des smartphones aux objets connectés, il est important de veiller à ce que nos données personnelles restent... eh bien, personnelles.

Pour autant, notre approche à AlgoSecure est de rester factuels et pédagogiques. Qui n'a pas en tête l'image du vilain pirate devant son PC :

Nous tenterons sur ce blog de ne pas céder à ces sirènes alarmistes et de rester pragmatiques face aux menaces. Notre priorité est d'aider notre public à gagner en compétences dans le domaine de la sécurité, qu'il s'agisse de particuliers se protégeant de la récolte abusives de données privées, ou bien de sociétés cherchant à améliorer la sécurité de leur système d'information.

Nous espérons que les articles vous plairont, et nous vous souhaitons une bonne visite !