Découvrez notre société Contactez-nous

e-Xpert Solutions Genève

109, chemin du Pont-Du-Centenaire
CH-1228 Plan-les-Ouates / Genève
SUISSE

Tel. : +41 22 727 05 55 Fax : +41 22 727 05 50

e-Xpert Solutions Lausanne

Avenue de Gratta-Paille 20
CH-1018 Lausanne
SUISSE

Tel. : +41 21 802 26 78 Fax : +41 22 727 05 50
Contactez notre support : +41 22 727 05 56
En cochant cette case, vous acceptez notre politique de confidentialité disponible en cliquant ici
Envoyez votre message

Swiss Security Hackademy

Suivez notre blog bilingue en sécurité informatique !

Retour aux articles

La signature dans le monde de l’authentification SAML


Auteur : Wojciech Myszkorowski

Date de publication : 9 juillet 2020 - Dernière mise à jour : 9 juillet 2020


Dans le monde informatique actuel, les entreprises utilisent une multitude de produits dérivés de différents fabricants. Au quotidien, ces produits sont exploités par des professionnels et des personnes malveillantes, afin d’y découvrir des vulnérabilités permettant de gagner des accès non autorisés. Ces vulnérabilités, possédant des scores de criticité, doivent souvent être corrigées au plus vite afin de garder les ressources protégées intactes. L’une des plus récentes concerne le fabriquant Palo alto utilisant le protocole SAML.

SAML en deux mots

SAML est un raccourci pour Security assertion markup langage. Il s’agit d’un protocole lié à la sécurité permettant de faire de l’authentification sur le web. Souvent accompagné du mot single sign-on (SSO), il est question d’utiliser le SAML pour faire de la fédération et permettre à l’utilisateur de naviguer sur plusieurs sites web en ne procédant qu’une seule fois à l’authentification. Le SAML d’aujourd’hui est en version 2.0 basant sa nomenclature sur le langage XML. Dans l’image ci-dessous, nous retrouvons le fonctionnement de ce qu’il se passe lorsque l’utilisateur tente d’accéder à un site.

La signature dans le monde de l’authentification SAML

Voici le déroulement du processus :

  • 1. L’utilisateur essaie d’accéder à une ressource voulue (application / site web, etc ). L’utilisateur étant inconnu, il doit être authentifié avant de pouvoir accéder à son service.
  • 2. L’application en question redirige l’utilisateur vers le fournisseur d’identité. Il s’agit de la authnRequest.
  • 3. Le fournisseur doit maintenant émettre un défi pour authentifier l’utilisateur.
  • 4. L’utilisateur s’authentifie.
  • 5. Une fois l’utilisateur authentifié, une réponse signée est envoyée au fournisseur de service prouvant l’identité de la personne. Il s’agit de la Reponse.
  • 6. La personne accède à son service.

Dans la sécurité informatique, la notion d’intégrité est importante, car elle permet de prouver qu’une information n’a pas été modifiée. Dans le protocole SAML, nous retrouvons cette même notion. La signature protège l’information transmise entre le fournisseur d’identité et celui de service.

La signature de la requête ou de la réponse se fait à l’aide d’un certificat contenant une clé privée. Ce processus s’appelle le principe de la signature asymétrique.

Si nous analysons une requête standard SAML avec l’assertion signé, nous verrons des éléments sur la signature apparaître dans le message XML. Nous trouverons dans la méthode de signature, des informations sur l’algorithme utilisé pour la fabrication.

Palo alto vulnérabilité CVE-2020-2021

Dans le cas de Palo alto, un attaquant contourne l’authentification qui utilise le SAML dans le PAN -OS du Palo alto. L’attaquant qui réussirait à mettre en place cette attaque pourrait alors accéder à des ressources protégées comme par exemple le VPN de Palo alto. Cette attaque peut prendre place uniquement lorsqu’une authentification utilise le protocole SAML et que la coche qui permet de vérifier la validité du certificat est décochée. Les ressources pouvant être exploitées ne sont que celles où le SSO du Palo alto est configuré (VPN, GlobalProtect Portal, Captive Portal,etc..).

Les versions impactées sont les suivantes :

La signature dans le monde de l’authentification SAML

L’attaquant doit également pouvoir directement atteindre le serveur vulnérable en question. Cette vulnérabilité a obtenu un score de 10 sur 10, la rendant ainsi critique. Une Common Vulnerability and Exposures (CVE) est calculée sur la base de plusieurs paramètres assez complexes, comme par exemple le « base score », l’impact et l’exploitabilité. Mis ensemble, ces trois derniers facteurs forment une note plaçant la vulnérabilité dans une certaine catégorie (faible, moyenne, importante, critique).

Comment comprendre l’échange et les signatures SAML plus en détail

Lors de la mise en place de l’authentification SAML, il existe plusieurs produits permettant une analyse précise des échanges faits par les différentes entités. Par exemple, une manière facile est d’installer SAML- tracer (un plugin de google chrome) qui permet d’attraper les requêtes SAML faites dans le navigateur. Voici un exemple capturé à l’aide du SAML-tracer

La signature dans le monde de l’authentification SAML

Un autre moyen est d’utiliser un proxy local comme Fiddler ou Burp. Ceux-ci permettent de capturer autant les requêtes d’un navigateur, que celles des applications comme Citrix Workspace pouvant aussi faire du SAML.

Dans la photo ci-dessus, nous relevons quelques informations qui concernent la requête d’authentification qui a été signée. Il y a également des informations sur le processus permettant d’aboutir à la signature. Dans le protocole SAML, nous pouvons signer la requête et la réponse.

Dans la CVE-2020-2021, le problème repose sur la réponse qui va être signée avec les certificats importés sur la partie du fournisseur d’identité mais qui ne sont pas vérifiés comme étant des certificats valables.

En utilisant Fiddler pour tenter d’analyser la réponse., il est nécessaire de décoder SAMLResponse= afin d’avoir la constitution en XML de la requête. A savoir, il est possible de chiffrer une réponse afin d’apporter encore plus de sécurité et cela avec certains produits tels que F5.

La signature dans le monde de l’authentification SAML

La manière dont est validée la signature est assez directe. Les éléments nécessaires sont inscrits dans la réponse SAML avec les informations mises dans les balises suivantes :

  • 1. CanonicalizationMethod : il s’agit de l’algorithme de canonisation.
  • 2. SignatureMethod : il s’agit de l’algorithme de signature
  • 3. SignatureValue : il s’agit de la valeur qui doit être validé

L’intégrité du message et donc un string qui est vérifié à l’aide de la clef privé. Cette valeur se trouve dans la balise suivante :

La signature dans le monde de l’authentification SAML

La recommandation en matière de certificat

Lorsque nous mettons en place de la fédération avec le protocole SAML, nous conseillons vivement d’utiliser des signatures basées sur des PKI interne. Il s’agit de certificats valides, à l’intérieur d’une entreprise, qui permettent d’ajouter une sécurité valide et non réfutable lors du message chiffré ou signé. Avec les outils mentionnés ci-dessus, Il est possible de vérifier que la signature est correctement appliquée. Nous recommandons aussi de chiffrer les assertions et réponses pour rajouter une couche supplémentaire de sécurité afin de laisser le moins d’informations possibles à une personne qui tenterait d’intercepter le traffic.