Posts Tagged ‘attaques’

Twitter et un point sur la sécurité du « tout-ouvert »

Vendredi, août 21st, 2009

Suite au piratage de la firme Twitter ayant eu lieu il y a quelques mois et faisant encore maintes et maintes rebondissements aujourd’hui, il est primordial de faire un point sur la sécurité de ce que je qualifie de « tout-ouvert » mais que l’on pourrait par ailleurs appeler le « tout-API ».

Aujourd’hui, de plus en plus de services et de réseaux sociaux misent sur les API pour permettre aux utilisateurs une réelle appropriation de leur service et ainsi, récolter un maximum de membres. Le piratage de Twitter n’est en aucun cas lié au « tout-API », mais aux vulnérabilités du could-computing et surtout à la capacité des administrateurs de Twitter de faire confiance à un système vulnérable en soi. D’ailleurs, je ne comprend pas encore pourquoi ils laissent aux yeux de Google (un de leurs concurents) par l’intermédiaire de GoogleDocs des documents confidentiels et extrêmement préjudiciables pour leur entreprise…

Cependant, ce piratage amène à s’intéresser aux services professionnels et amateurs développés en parallèle des sites web 2.0 grâce aux différentes API mises à disposition par les développeurs. Ces derniers présentent de nombreuses vulnérabilités, pas uniquement liées aux vulnérabilités lambda du type XSS permettant le vol de compte des membres. Elles peuvent se transformer être de véritables risques, tant pour les utilisateurs, que pour d’autres sites Internet pouvant par l’intermédiaire du piratage de ces services subir de véritables DDos ou être le relai d’attaques plus pointues.

1. Vulnérabilités

Bref, voilà ce que l’on peut dire sur les types d’attaques dont peuvent être victimes les différents services et ce que cela peut engendrer pour les victimes :

  • Vol de session permettant, selon le type de configuration du service, de poster certaines informations à la place de l’internaute. Et peut-être, de pouvoir de fil en aiguille s’identifier totalement sur le site source produisant l’API à la place de l’internaute.
  • Attaque MIM, récupération des identifiants. Une large partie des services utilisant les API de certains réseaux sociaux demandent à l’internaute de s’identifier sur leur site – pour pouvoir, par exemple, poster un message à la place de l’internaute automatiquement -. Cependant, ces identifications sur certains services (une majorité) n’utilisent pas un protocole sécurisé -SSL- pour transmettre les identifiants du client vers leur serveur, permettant ainsi l’interception de ces derniers dans un réseau local. Ainsi, cela permet de contourner pour un pirate le https mis en place par certains réseaux sociaux pendant l’identification de leur membre.
  • Vulnérabilités lambda des services web Entre SQLi, XXS, CSRF, failles « d’upload », includes locales, injections dans des fichiers etc. Nous pouvons trouver de tout sur les services rattachés aux APIs de certains réseaux sociaux. Ceci permettant de faire un peu ce que l’on veut (ouverture d’un shell, mise en place d’une backdoor sur les différents serveurs, piratage des bases de données etc.). Cependant, les pirates auront – je pense – une attention toute particulière pour backdoorer les mécanismes d’identification des membres afin de récupérer les identifiants de ces derniers. Ils attaqueront – suivant leurs envies – ensuite les sessions des membres sur le réseau social promulguant les API, mais également testeront les mots de passes récoltés sur différents sites où les membres se sont sans doute inscrits ainsi que sur les webmails. D’autres s’amuseront peut-être avec la récupération des identifiants à inonder les services de micro-blogging de messages…
  • Hijacking des URLs Cette vulnérabilité pèse surtout sur les shorteners d’URL du type bit.ly ou tinyurl.com. Imaginez ce que peut ressentir un site internet étant pointé par des millions d’URLs potentiellement cliquables plusieurs fois par des utilisateurs. Le problème est à relever et la sécurité des shorteners d’URL est aujourd’hui un point critique auquel il faut faire très attention. D’ailleurs, ce problème est déjà arrivé au service Cligs, re-dirigeant deux millions d’URL vers un seul site… qui n’a pas tardé à tomber. Voir un article à ce sujet ici ou .

2. Contre-mesures

Les contre-mesures à appliquer sont assez simples pour les utilisateurs de réseaux sociaux, utilisez au minimum des services bâtis sur les API de certains services web, surtout quand ces derniers demandent une identification n’étant pas sécurisée. Il faut aussi essayer de deviner quels services sont susceptibles de garder dans leurs bases de données vos mots de passes en clair (cela est déductible assez facilement, si vous vous inscrivez à un service qui agit régulièrement sur votre Twitter sans votre intervention (transposition de flux RSS etc.)).

Pour ce qui est des développeurs de services reposant sur des API, engager un hacker/pirate/spécialiste (rayez la mention inutile) reste la meilleure solution afin de tester les différentes vulnérabilités qui peuvent siéger dans le système. Après libre à eux de le faire ou non, cependant la qualité de service risque à tout moment de passer à la trappe si des audits de sécurité ne sont pas faits régulièrement sur les différentes sphères du système d’information régissant le webservice. (acteurs, physique, application).

3. Conclusion

Tout comme les plugins pour les CMS, les services utilisant des API de certains sites communautaires répandent leurs vulnérabilités au grès de leurs créations augmentant ainsi les risques de rendre tout un système vulnérable. Cependant, ces vulnérabilités (et c’est là toute la chose) ne se concentrent pas au seul site internet du service utilisant l’API d’un énième site communautaire, mais peuvent être utilisés contre les utilisateurs des sites communautaires et contre d’autres sites internet.

Je pense que Twitter – même si la sécurité n’est pas leur fort – (ou d’autres sites communautaires) devraient avoir le droit de jeter un coup d’oeil sur les sources des scripts et des serveurs sur lesquels reposent les services utilisant leur API. C’est tout de même les utilisateurs du site internet diffusant les API les premiers attaqués. Bref, j’espère que cette petite parenthèse vous à un peu informé sur les risques du « tout-API » même si je n’ai pas énuméré l’intégralité des failles (ce qui est en soit impossible). Je prédis cependant une hausse significative des piratages de comptes utilisateurs par l’intermédiaire de ces services dans les prochains mois. D’ici là, prenez garde à vous ! NIARK :D

Twitter et sécurité… Arf.

Vendredi, août 21st, 2009

Depuis quelques jours, petit buzz sur la toile française. Nous pouvons changer le statut Twitter d’une personne visitant notre site Internet grâce au chargement d’une URL. Astuce présentée -et non découverte- par le blogueur Korben et reprise un peu partout, , ou même .

C’est la deuxième fois qu’un problème de sécurité est présenté sur le service Twitter, la première était le piratage de quelques gros comptes suite à une attaque par force brute d’un compte d’administrateur.

Beaucoup de personnes ont donc parlées de cette possibilité de changement de statut par un site tiers, mais personne n’a encore solutionné le problème. Donc je vais vous livrer quelques astuces pour sécuriser son site internet contre ces attaques mais aussi, vous sécuriser vous. Car il est en partie possible de se sécuriser contre ces attaques connues appelées CSRF.

Attaque ? Où, où ça ?

Tout d’abord étudions l’attaque. En temps normal, la personne étant loggée envoie son statut par l’intermédiaire d’une requête POST et Twitter le met à jour. Cependant, les requêtes POST et GET peuvent se confondre donc nous pouvons charger dans l’URL les données que nous voulons envoyer par l’intermédiaire de la variables statut. Ex : http://twitter.com/home?status=le statut à mettre.

A partir de là, il devient facile pour une personne de mettre un script dans son site Internet faisant le travail et changeant le statut de n’importe qui loggé sur twitter et visitant le site. Voir le PoC (proof of concept) ici.

Bon, ceci dit, comment se protéger ?

Tout d’abord, le site Internet doit être protégé au niveau du code. Ainsi, on n’accepte pas n’importe quelle variable envoyée depuis n’importe quel site Internet. Pour ce faire, une technique assez simple est de mettre un champ en hidden avec une valeur aléatoire envoyée en même temps que notre valeur (dans le cas de Twitter le statut.). Ainsi, grâce aux sessions, le site Internet garde en mémoire cette valeur. Lorsque la page reçoit le statut, la valeur cachée est comparée à celle en mémoire. S’il y en a pas où si cela n’est pas la bonne, en refuse le changement de statut. (encore dans le cadre de Twitter.)

Je vous ai fait un petit script que l’on peut tester et disponible ICI.

Cette valeur doit réellement être aléatoire et être hashée de préférence en sha1 pour (encore) plus de sécurité. En fait, tout dépend de la longueur de la chaine et du nombre de possibilités pour chaque case. Si cette dernière est élevée (comme dans mon exemple, 32 cases) il n’est pas réellement nécessaire de prévoir un hashage de cette dernière.

De plus l’utilisateur, lui, ne peut jamais être protégé. Ainsi, même en désactivant le Javascript sur son navigateur, en empêchant l’affichage des iframes, cela ne fera que stopper les attaques CSRF complexes, mais pas ce genre de petites attaques, car l’URL peut être appelée depuis n’importe quel code que cela soit une iframe, une image, une feuille de style etc.

Développeurs, développeuses, je vous encourage à patcher tous les champs de vos différents formulaires car cette faille est très – trop ? – répendue ! (Administrations de routeurs, de box, réseaux sociaux, sites bancaires (?), sites d’ecommerce, services de blogs etc.). Bref, maintenant la balle est dans votre camp !