Introduction

Les navigateurs sont aujourd'hui le principal vecteur d'intrusion par les pirates afin de prendre le contrôle d'un ordinateur pour en faire un Botnet ou à des fins d'une attaque ciblée afin de (liste non-exhaustive, l'imagination n'a pas de limites dans ces cas-là) :

   * Mapper un réseau
   * Réaliser des attaques CSRF
   * Lire votre historique web
   * Hooker un keylogger au navigateur
   * Exécuter des commandes arbitraires à distance
   * Ouvrir un shell
   * Bypasser certaines protection réseau 
   * Scanner les ports d'un hôte 
   * Lire des fichiers locaux et les envoyer vers un serveur
   * Et j'en passe...

La sécurité des navigateurs est aujourd'hui plus d'actualité avec la mise en œuvre d'exploits et le développement à tout va de nouvelles technologies inhérentes aux navigateurs, pour la joie des yeux et de la vitesse, mais pas celle de la sécurité.

Nous allons donc dresser un petit inventaire des mesures de sécurité à mettre en œuvre afin de protéger ses arrières sur Internet tout en surfant convenablement, et ce, sur les navigateurs, mais aussi les différents plugins que nous pouvons avoir (Flash, Quicktime, ActiveX, Silverlight etc.) Nous verrons par ailleurs que les anti-virus ne servent à rien certaines fois et qu'une bonne navigation peut parer une très grande partie des menaces actuelles en terme de virologie informatique.

N'oubliez pas (mais cela vous ne le savez peut-être pas) qu'un navigateur non-sécurisé peut se transformer de fil-en-aiguille en un réel poste avancé pour un pirate afin de réaliser des attaques d'ampleur sur un réseau, d'où l'utilité de bien le configurer

JavaScript, oh, javascript, que ferais-je sans toi ?

Le JavaScript est un langage de programmation client-side (donc qui s'interprète par le navigateur) plus que populaire aujourd'hui suite à l'avènement de différentes solutions permettant une réelle interactivité avec l'internaute (Frameworks, ajax etc.).

Vulnérabilités liées au moteur JavaScript

Définition du problème

Face à cette dose quotidienne de Javascript, avec du code de plus en plus lourd, les navigateurs doivent suivre et présenter de nouveaux moteurs permettant d'interpréter de plus en plus rapidement le langage. La mise en place de ces moteurs demande un réel développement d'envergure présentant certaines fois quelques failles.

Comme dernièrement, avec une vulnérabilité sur Firefox 3.5 qui a fait largement parler d'elle dans la blogosphère mondiale, il se peut que des failles liées au moteur JavaScript atteignent des niveau critiques, telles que l'exécution de commandes systèmes avec les privilèges de l'utilisateur ayant ouvert sur sa session Firefox.

Nous pouvons noter d'autres vulnérabilités liées à des moteurs JavaScripts défaillants ayant eu lieu il y a quelques temps telles que la possibilité de réaliser des attaques cross-domain permettant par exemple de voler les cookies de n'importe quel site Internet visité par le navigateur ou de récupérer des tokens de sécurité afin de contourner les protections contre les attaques CSRF. De plus certains navigateurs acceptent la lecture de fichier locaux ainsi que leur expédition vers un serveur tiers via ajax. Bref, ce n'est pas très joli...

Sécurisation

Pour sécuriser son navigateur face à ce genre de failles (heureusement pour nous, assez rares mais très répandues en entreprise lorsque les DSI ne font pas leur boulot) il suffit tout simplement de ne limiter l'exploitation de l'interpréteur JavaScript qu'à certains domaines de confiance.

Ainsi, si j'ai une confiance totale en Google par exemple, j'autorise mon navigateur à interpréter le JavaScript contenu dans ses pages. Pour cela, il existe, par exemple, l'extension No-Script de FireFox permettant de limiter les exécutions de scripts.

Nous pouvons, par ailleurs, désactiver totalement l'usage du JavaScript dans les paramètres de navigateurs, même si, cette dernière option s'avère assez embêtante dans le surf de tous les jours (webmails, sites utilisant de l'Ajax etc.) Cependant, cette option est plus que recommandée dans le cas où une faille a été découverte et qu'elle peut être exploitée par un attaquant, alors qu'aucun patch n'a encore été développée par l'équipe de développement du navigateur.

Pour ceux qui veulent éliminer totalement Javascript de leur navigateur, allez sur la page No_Javascript_No_Flash_etc.

Vulnérabilités liées à l'interprétation du JavaScript

Définition du problème des XSS

Ces dernières sont aujourd'hui les plus connues et les plus répandues sur Internet, on les appelle les CSS ou XSS. Ayant donc comme nom, Cross Site Scripting, elles permettent de faire pas mal de choses, suivant la complexité de l'attaque mise en place et l'imagination du pirate. Nous pouvons noter comme attaques liées aux xss (liste non exhaustive, évidement) :

  * Le vol de sessions (le plus courant -_-')
  * La transformation de votre PC en Botnet le temps de votre session
  * La possibilité de mapper les administrations web de vos périphériques réseaux
  * La conduire d'attaque contre ces derniers.
  * La possibilité d'implanter un keylogger sur la session.
  * La mise en place d'un w0rm basé web ;)

Elles sont donc assez critiques, surtout si vous vous faites voler des sessions d'identification sur certains sites internet vulnérables. D'ailleurs, une grande partie des web services actuellement ont été, ou sont encore, vulnérables à des XSS parmi lesquels (liste non exhaustive encore une fois, je sais, j'aime les listes) :

  * FaceBook
  * MySpace
  * Orange
  * Free
  * Google (incluant, gmail, googledocs etc.)
  * Hotmail (msn)
  * Meebo et différents web services de Messagerie instantanée.
  * Twitter etc.

Il suffit souvent d'une heure ou deux de recherche sur ces services pour trouver de nouvelles XSS tant ils possèdent de pages dynamiques pouvant présenter ce genre de vulnérabilités.

Définition du problème du Clickjacking

Le Clickjacking est encore une "faille" persistante à l'heure qu'il est dans une très grande partie des navigateurs Internet. Cette dernière se présente sous la forme d'un détournement du Clic de souris grâce à Javascript permettant ainsi plusieurs bonnes ou mauvaises choses pour la personne étant victime ou pour le webmaster, comme par exemple (on peut ou on pouvait...) :

  * La possibilité de détourner les clics vers les PUB
  * La possibilité de faire télécharger un programme par la victime (*)
  * La possibilité d'activer sa Webcam avec Flash
  * La possibilité de transmettre un web-based worm
  * etc.

(*) Lorsque le navigateur le permet sans la confirmation ensuite de l'internaute, ce fut par exemple le cas pour le navigateur Chrome

Conclusion et sécurisation

Aujourd'hui les XSS et le clickjacking ont encore de grand jours devant eux, surtout lorsque ces vulnérabilités sont couplées à d'autres failles et méthodes d'exploitation dont nous ne feront pas l'apologie ici. Toujours est-il qu'il existe là aussi des moyens afin de se protéger, et ces moyens sont les mêmes que pour les failles liées au moteur JavaScript c'est à dire restreindre l'utilisation de JS à des domaines de confiance.

Autres vulnérabilités inhérentes à l'interprétation des pages web sans Javascript

Vous pensiez qu'en supprimant le JavaScript vous seriez à l'abri de toute attaque "web-based" ? Et bien il n'en est rien ! GAME-OVER, vous allez devoir vivre avec, voici une petite liste des vulnérabilités pouvant encore être exploitées ou ayant été présentes sans que le JavaScript soit activé.

Quelques vulnérabilités, histoire de preuve

CSRF en GET : Yeah, là on commence à kiffer un peu la wave (béhef: càd kiffer la wave?], les CSRF en GET peuvent être réalisées sans javascript tout en appelant l'URL externe à partir d'un simple élément HTML.

Savoir quels sites vous avez visités pendant votre session, même en ayant (pour certaines) supprimé l'historique : Oh oui, j'aime cela ! Donc, la personne a pour choix différentes recettes, utilisant JavaScript ou non. La plus marrante, reste celle made-in-CSS. Pour ce qui est des autres, il faut calculer le temps de chargement des pages par exemple, afin de voir si telle ou telle partie d'un template de site est en cache, si c'est le cas, la personne vient de le visiter ! C'est con, mais il fallait y penser :p

Scanner les serveurs web sur votre réseau local, et oui, cela aussi c'est possible, sans JavaScript évidement. Cela reprend un peu la même histoire que le timer pour déduire l'historique à partir du cache, et cela fonctionne.

Sécurisation

Pour vous prémunir de ce genre d'attaques, nous devons tout simplement éviter que la page HTML charge des choses qui ne sont pas sur le même domaine qu'elle. A ce jour, je ne connais aucun add-on pour ce faire sur l'ensemble des navigateurs "grand public", mais peut-être que quelqu'un aura sa lanterne plus éclairée que la mienne sur ce point là. Le mieux, est de retourner à Lynx ou un navigateur texte par défaut, après, il faut aimer le style old-school-textual-mod-de-la-mort-qui-tue (même si certaines attaques passent encore à travers... je n'en dis pas plus).

Cependant, pour ceux qui voudraient éviter de retourner à Lynx : voici quand même un add-on qui permet de bloquer à souhait les intrusions de serveurs non désirés sur une page web : requestpolicy

Plugins Adobe (flash/acrobat reader) une manne pour les pirates

Pour ceux qui veulent éliminer totalement Javascript et Flash de leur navigateur, allez sur la page No_Javascript_No_Flash_etc.

Voyez aussi la rubrique Plugin Flash navigateur d'Adobe.

Une sélection d'extensions de sécurité et de confidentialité pour Firefox

  • Les INDISPENSABLES toutes les extensions ci dessous sont sous licence libre:

    • Javascript, Flash, Plugins et autres:

    • Cookies:

    • Protection d'ip, Chiffrement etc:

      • HTTPS Everywhere pour transformer presque tous vos sites visités en SSL. Voyez aussi ce tutoriel.
      • HTTPS Finder est une extension (à l'état expérimental) pour Firefox qui permet de détecter automatiquement les connections HTTPS. Elle vous proposera dans le cas d'une détection positive de basculer en mode HTTPS. Mais ce n'est pas tout puisqu'elle vous proposera de générer une règle pour l'extension HTTPS Everywhere.
      • SSL Personas permet de voir clairement si vous etes sur un site chiffré en SSL
      • Stealthy est un proxy (attention le trafic n'est pas chiffré avec un proxy contrairement à un VPN).
    • Mots de passe:

      • Saved Password Editor.
      • Password Exporter.
    • Divers:

      • RefControl En temps normal, votre navigateur informe le site visité de l'URL du site visité juste avant, cela s'appelle le "referer". Cette extension permet d'envoyer un faux referer pour vous protéger de l'espionnage des sites web.
      • RequestPolicy: Contrôler quelles requêtes « cross-site » sont autorisées. Améliorer la vie privée durant la navigation. S'auto-sécuriser contre les CSRF (« sea-surfing ») et autres attaques.
      • Password Hasher.
      • ShowIP.
      • YouR IP.
      • IPFuck/IPFlood est une extension Firefox qui permet de changer d'adresse IP chaque seconde automatiquement.

Vulnérabilités inhérentes aux navigateurs

  • Les navigateurs et clients de courriel actuels proposent généralement de sauvegarder vos mots de passe sous la protection d'un mot de passe global ("mot de passe principal" ou "master password" dans le cas de Firefox et de Thunderbird). C'est très bien, mais attention : Outlook, Microsoft Internet Explorer, Windows Live Messenger et Chrome (sous Windows) effectuent cet enregistrement avec une protection totalement illusoire. Pour s'en convaincre, il suffit d'essayer SIW et de visiter la sous-rubrique "SECRETS" de la rubrique "SOFTWARE". Il est donc impératif d'interdire à ces logiciels de se souvenir de vos mots de passe. L'opération "effacer mes traces" ne suffit pas, même en cochant l'option "effacer les mots de passe enregistrés". L'éditeur de registre (RegEdit) non plus. Aussitôt trouvée, une solution efficace sera décrite ici (une recherche sur Google ne fournit que des réponses fallacieuses se contentant de décrire la procédure d'effacement incorporée à MSIE -qui ne fonctionne qu'en partie-, et aucune solution pour Outlook excepté une, partielle, ici). Les navigateurs et clients courriel de Mozilla (Firefox, Thunderbird et SeaMonkey notamment) ne présentent pas cette vulnérabilité.
La gravité de cette vulnérabilité est tempérée par le fait qu'elle ne compromet vos mots de passe que dans le cadre de votre session Windows (qu'on espère protégée par un mot de passe de connexion). Quiconque n'a pas accès à votre session (ou "profil") ne pourra découvrir vos petits secrets, même au moyen de SIW. Il faut tout de même savoir qu'une session Windows protégée par un mot de passe de connexion n'offre qu'une confidentialité très relative : il suffit d'un "Live CD" Linux pour accéder à la totalité des données que vous croyez -à tort- à l'abri des indiscrets (si le nfs n'est pas activé). Même un disque formaté en NTFS est vulnérable à ce type d'attaque, avec des utilitaires simples comme UltimateBootCD et NTFS4DOS.
  • Attention, avec Firefox, Thunderbird et SeaMonkey, vos mots de passe ne seront pas chiffrés (et SIW les révélera) si vous n'avez pas pris la précaution de définir le mot de passe principal (ou "master password").

Panopticlick ou comment une technique simple peut bousiller tout votre anonymat

On se croit en sécurité derrière son navigateur mais des chercheurs en sécurité sont en train de travailler sur une technique pour dé-anonymiser les internautes. Il partent du principe que chaque personne possède un navigateur différent, des plugins différents, avec des versions différentes, des polices différentes, un fuseau horaire différent…etc. Et toutes ces petites différences, misent bout à bout, permettent au final de créer une empreinte unique du navigateur (donc de la machine utilisée pour aller sur le net). Ça, c’est ce que l’EFF a appelé Panopticlick et que vous pouvez tester en allant ici.

Mais une nouvelle technique exploite les réseaux sociaux. En effet, en exploitant l’historique de votre navigateur, un attaquant (ou un espion ou une société privée) peut savoir sur quels sites vous avez été. A partir de là, en connaissant vos préférences de navigation, les groupes auxquels vous appartenez sur Facebook ou autre et en utilisant la technique de la EFF sur l’empreinte unique du navigateur, il devient possible de clairement vous identifier en tant que personne lors de votre surf quotidien et ce même si vous passez par un VPN

Effrayant non ?

Toutes les explications sont disponibles dans ce document PDF et vous pouvez tester la technique si vous faites parti du réseau social Xing en cliquant ici.

source & photo

Source News de Korben.info.

Avec l'extension NoScript pour Firefox vous diminuez le nombre d'informations laissées, sans pour autant que cela supprime assez d'informations pour vous rendre anonyme.
Faites le test Panopticlick avec scripts et sans scripts, vous verrez tout de même une différence notable.
Si quelqu'un connait une méthode absolue (autre que de n'avoir aucun historique, aucunes extensions, aucuns favoris etc), qu'il la cite ici, merci.