title:      OpenID et phishing sont dans un bateau...
slug:       openid-et-phishing-sont-dans-un-bateau
date:       2007-01-09 16:36:07
type:       post
vignette:   images/logos/open_id_phishing.png
contextual_title1:  myOpenID propose des solutions intéressantes contre le phishing
contextual_url1:    20070418-myopenid-propose-des-solutions-interessantes-contre-le-phishing
contextual_title2:  ★ Comment utiliser OpenID, la solution d&#39;identification tant attendue
contextual_url2:    20070104-comment-utiliser-openid-la-solution-d-identification-tant-attendue
contextual_title3:  ★ Discussions sur les applications web libres
contextual_url3:    20091202-discussions-sur-les-applications-web-libres

<p>Suite <a href="https://larlet.fr/david/biologeek/archives/20070104-comment-utiliser-openid-la-solution-d-identification-tant-attendue/#c4952">aux commentaires</a> de <a href="http://chamia.info/bader/">Bader</a> relatifs aux problèmes de phishing, je me suis renseigné et je pense qu'il est nécessaire de mettre en garde les lecteurs un peu trop emballés par le <a href="https://larlet.fr/david/biologeek/archives/20070104-comment-utiliser-openid-la-solution-d-identification-tant-attendue/">premier billet</a>. Il existe clairement un risque que je n'avais pas identifié plus tôt, faute d'exemples concrêts. Allons-y pour une mise en situation...</p>

<h2>Le problème</h2>


<p>Tout commence par un site qui vous demande de vous identifier. Ce site est un vilain pirate qui n'a pas forcément de bonnes intentions concernant votre identité. Appelons ce site <strong>vilain-pirate.com</strong>. Le mécanisme normal pour s'identifer est le suivant&nbsp;:</p>

<ol>
<li>un formulaire sur le site <strong>biologeek.com</strong> qui demande l'<abbr title="Uniform Resource Locator">URL</abbr> d'identification</li>
<li>l'utilisateur est alors redirigé vers la page d'identification de son <strong>serveur OpenID</strong></li>
<li>ses identifiants sont demandés sur son <strong>serveur OpenID</strong></li>
<li>son profil pour le site <strong>biologeek.com</strong> est demandé sur son <strong>serveur OpenID</strong></li>
<li>l'utilisateur est redirigé vers <strong>biologeek.com</strong> et ce site peut récupérer les informations qui ont été approuvées par l'utilisateur</li>
<li>l'utilisateur a maintenant accès à des fonctionnalités avancées sur <strong>biologeek.com</strong></li>
</ol>

<p>Vous remarquerez que le mécanisme n'est pas vraiment simple, heureusement que ce cheminement n'est suivi que si vous n'êtes pas encore identifé sur votre serveur OpenID pour l'étape 3 et que vous ne vous êtes jamais identifé sur le site pour l'étape 4. Pour un site sur lequel vous participez souvent c'est quasi-immédiat. Heureusement.</p>


<p>Examinons maintenant le cas où vous vous identifiez sur <strong>vilain-pirate.com</strong>&nbsp;:</p>

<ol>
<li>un formulaire sur le site <strong>vilain-pirate.com</strong> qui demande l'<abbr title="Uniform Resource Locator">URL</abbr> d'identification</li>
<li>l'utilisateur est alors redirigé vers la page d'identification <strong>qu'il croit être</strong> celle de son <strong>serveur OpenID</strong></li>
<li>ses identifiants sont demandés sur son <strong>faux serveur OpenID</strong></li>
</ol>

<p>Je vous laisse deviner la suite... au «&nbsp;mieux » vague de spam avec votre identifiant, au pire prise de votre identité pour des services critiques.</p>


<p>Comment est-ce possible&nbsp;? Les principaux serveurs d'identification sont au nombre de 4 aujourd'hui. Ce qui signifie qu'il y a très peu de pages à créer si l'on veut faire du <strong>phishing</strong> (je vous rappelle que cette technique consiste à vous faire croire que vous êtes sur un site alors que ce n'est pas la bonne <abbr title="Uniform Resource Locator">URL</abbr> dans votre navigateur, typiquement <strong>bio1ogeek.com</strong> par exemple) puisqu'il suffit d'une seule page (celle de l'identification) par serveur.</p>


<p>Bon il y aussi les vols de session mais je n'en parlerais pas ici. Le <a href="http://www.djangobook.com/en/beta/chapter20/">chapitre du Django Book sur la sécurité</a> est sorti aujourd'hui et je pense que tous les développeurs web un peu consciencieux devraient aller le lire, c'est une bonne base.</p>



<h2>Les solutions</h2>

<ul>
<li><strong>Ne s'identifier que sur des sites de confiance</strong>&nbsp;: bon, c'est assez réducteur.</li>
</ul>
<ul>
<li><strong>Prendre ses précautions lors de l'identification</strong>&nbsp;: vous l'avez compris, la faille est dans la redirection. Si vous êtes déjà identifié sur votre serveur, vos identifiants ne doivent pas vous être redemandés et vous passez directement à l'étape du choix du profil. <strong>Dans le cas où l'on vous redemande ces identifiants, commencez à vous inquiéter.</strong> Une bonne chose est donc de s'identifier via un favoris ou en tapant directement l'adresse dans votre navigateur. Pas vraiment simple, notament pour les nomades...</li>
</ul>
<ul>
<li><strong>Options au niveau du serveur</strong>&nbsp;: une des solutions est que le serveur d'identification vous pose une question personnalisée. Vous saurez alors bien sûr que la page d'identification est la votre. Cela va de la photo de famille (plus visuel) au prénom de votre chat, toujours est-il que c'est une solution acceptable si le choix est assez vaste.</li>
</ul>
<ul>
<li><strong>Des plugins au niveau navigateur</strong>&nbsp;: c'est peut-être le plus simple (encore faut-il avoir confiance dans le concepteur du plugin !), un plugin pour firefox permettant de vous identifier sur votre serveur OpenID, vous lui donnez une bonne fois pour toute et il vérifie via une connexion au démarrage que vous êtes bien identifié. Si ce n'est pas le cas, vous êtes redirigé vers la page d'identification (sécurisée via <abbr title="Secure Socket Layer">SSL</abbr>) proposée en préférence.</li>
</ul>


<h2>Conclusion</h2>


<p>L'identification est un problème critique qui met du temps à se mettre en place. OpenID en est à sa première version mais <a href="http://openid.net/specs/openid-authentication-2_0-pre11.html">des spécifications plus élaborées pointent le bout de leur nez</a>, ça évolue et c'est déjà bien. Quand on voit <a href="http://simonwillison.net/2007/Jan/7/improvements/">les perspectives que ça ouvre</a>, ça met l'eau à la bouche (et sans hameçon s'il vous plaît).</p>


<p><strong>[edit du 10]</strong>&nbsp;: <a href="http://chile.ootao.com/phoff/">il existe un plugin pour firefox</a>.</p>


<p><strong>[edit du 20]</strong>&nbsp;: <a href="http://simonwillison.net/2007/Jan/19/phishing/">Simon Willison propose une solution</a> qui est loin d'être utilisable par le commun des non-geeks à mon avis...</p>


<p><strong>[edit du 6 février]</strong>&nbsp;: <a href="http://usablesecurity.com/2007/01/20/phishing-and-openid/">L'alternative du favori mise en pratique</a>.</p>


<p><strong>[edit du 18 avril]</strong>&nbsp;: <a href="https://larlet.fr/david/biologeek/archives/20070418-myopenid-propose-des-solutions-interessantes-contre-le-phishing/">myOpenID propose des solutions intéressantes contre le phishing</a>.</p>
