Sécurité Ajax:Les applications AJAX
vulnérables aux attaques deS pirates ?

AJAX et JavaScript:
Les technologies dans le détail.

Avec l'intérêt accru pour les technologies Web 2.0, AJAX (Asynchronous JavaScript et XML) retient de plus en plus l'attention des entreprises de toutes sortes.

L'une des principales raisons de la popularité croissante d'AJAX est le langage de scripts utilisés - JavaScript (JS) qui a un certain nombre d'avantages, notamment: la création de formulaires dynamiques pour inclure la vérification intégrée des erreurs, les zones de calcul sur les pages, l’interaction avec l'utilisateur pour les alertes et obtenir des confirmations, la modification dynamique des couleurs de fond et du texte ou des "boutons", la lecture historique de l'URL et de les modifier en conséquence, l’ouverture de fenêtres de contrôle, fournir différents documents ou pièces basées selon la demande de l'utilisateur.

AJAX n'est pas une technologie, mais plutôt, c'est un ensemble de technologies qui fournissent chacune des bases solides dans la conception et le développement d'applications Web:

XHTML ou HTML et des feuilles de style en cascade (CSS) fournissant des normes pour représenter le contenu à l'utilisateur.
Modèle Objet de Document (DOM) qui fournit la structure pour permettre la représentation dynamique de contenu et d'interaction associée. Le DOM expose des moyens puissants pour les utilisateurs d'accéder et de manipuler des éléments dans n'importe quel document.
XML et XSLT qui correspondent aux formats de données à manipuler, transférer et échangées entre le serveur et le client.


Requêtes XML HTTP :
Les principaux inconvénients de la création d'applications web, c'est qu'une fois une page web particulière est chargée dans le navigateur de l'utilisateur, la connexion au serveur lié est coupée. Navigation à l’intérieur de la page, il faut établir une autre connexion avec le serveur et envoyer la page entière en arrière-fond, même si l'utilisateur peut avoir simplement voulu développer un simple lien. Requête XML HTTP permet la récupération de données asynchrone ou faire en sorte que la page ne se recharge pas dans son intégralité à chaque fois que l'utilisateur demande le moindre changement.
JavaScript (JS) est le langage de scripts qui unifie ces éléments de fonctionner efficacement ensemble et prend donc un rôle plus important dans les applications web.

En tant que tel, AJAX est destiné à accroître l'interactivité, la rapidité et la convivialité.
Les technologies permettent une expérience plus riche et conviviale pour l'utilisateur alors que les applications Web sont conçues pour imiter les logiciels «traditionnels» de votre station de travail tels que Google Docs et outlook.com, Google Maps ou Yahoo! Mail.

Au début d'une session sur votre navigateur, au lieu de charger la page Web demandée, un moteur AJAX écrit en JS est chargé. Agissant comme «intermédiaire», ce moteur se trouve entre l'utilisateur et le serveur Web servant à la fois une interface de rendu et d'outil de communication entre le navigateur client et le serveur.

La particularité de cette fonctionnalité est immédiatement perceptible. Lorsque vous envoyez une requête à un serveur web, on constate que les composants individuels de la page sont mis à jour indépendamment (mode asynchrone) et élimine tout besoin d' attendre pour qu’une page entière devienne active jusqu'à ce qu'elle soit chargée (mode synchrone).

Imaginez auparavant, la lecture des emails impliquait un grand nombre de clics et de l'envoi et la récupération des divers cadres qui composent l'interface pour permettre la présentation des emails différents suivant l'utilisateur. Ce qui ralentissait considérablement l'expérience de l'utilisateur. Avec de transfert asynchrone, l'application AJAX élimine complètement le "départ-arret // depart-arret" de l'interaction sur le web – ces requêtes vers le serveur sont à présent complètement transparentes pour l'utilisateur.

Un autre avantage notable est la rapidité de traitement de la charge des différents composants du site. Cela conduit aussi à une réduction significative de la bande passante requise par la demande depuis la page web n'a pas besoin de serecharger intégralement.

D'autres avantages importants des applications AJAX comprennent:
l'insertion et /ou la suppression d'enregistrements, la soumission de formulaires web, la recherche de requêtes, et l'édition d’arborescence par catégorie - effectué plus efficacement sans avoir besoin de demander l'intégralité du code de la page HTML lors de chaque passage.

 

Vulnérabilités AJAX
Même si nous affaire à un ensemble de technologies plus puissantes, les développeurs doivent être conscients des failles de sécurité potentielles à laquelle les applications AJAX sont (et seront) vulnérables.

 

Selon Pete Lindstrom, directeur des stratégies de sécurité du Groupe de Hurwitz, les applications Web sont les éléments les plus vulnérables de nos jours pour l'infrastructure IT. Un nombre croissant d'organisations (à but lucratif et non lucratif) dépendent des applications Internet qui tirent parti de la puissance d'AJAX. Puisque ce groupe de technologies devient plus complexe pour permettre des fonctionnalités avancées, si les organisations ne savent pas sécuriser leurs applications Web, alors les risques de sécurité ne front qu'augmenter.

Une interactivité accrue dans une application Web signifie une augmentation du code XML, texte, et du trafic réseau général en HTML. Cela conduit à exposer les applications serveur qui auraient pu encore ne pas avoir été exposés jusqu’à présent, ou, s'il n'y a pas suffisamment de protection côté serveur, les utilisateurs non authentifiés pourraient manipuler les privilèges des configurations.

Il est faux de penser que les applications AJAX sont davantage en sécurité parce que l'on pense qu'un utilisateur ne peut pas accéder au script côté serveur sans le rendu de l'interface utilisateur (la page Web AJAX). Une requête XML HTTP agit sur les applications web et scripts côté serveur, et cette confusion donne aux développeurs de sites Web un faux sentiment de sécurité – la dissimulation d’un script n'est pas la sécurité. Comme les requêtes HTTP XML fonctionne en utilisant le même protocole que toutes les autres sur le web (HTTP), techniquement parlant, les applications Web basées sur AJAX sont vulnérables aux mêmes méthodes de piratage comme de «simples» applications.

Ensuite, il y a une augmentation de vulnérabilités possibles sur la gestion de session et un risque que des pirates puissent avoir accès aux URL des nombreux caches nécessaires pour traiter les requêtes AJAX.

Une autre faiblesse de l'AJAX est le processus qui formule des requêtes au serveur. Le moteur Ajax utilise JS pour saisir les commandes de l'utilisateur et les transforme en des appels de fonction.
Ces appels de fonction sont envoyés en texte clair visible sur le serveur et peuvent facilement révéler les champs des tables de base de données tels que ceux duproduit valide et de l'ID de l'utilisateur, ou même de noms de variables, les types de données valides ou les plages de données, ainsi que tout autre paramètre qui peuvent être manipulés à souhait par un pirate.

Grâce à ces informations, un pirate peut facilement utiliser les fonctions AJAX sans se servrir de l'interface pour élaborer des requêtes HTTP spécifiques directement sur le serveur. En cas de cross-site scripting, il peut malicieusement injecter à partir de l'AJAX qui lui fournit toutes les fonctionnalités pour agir au nom de l'utilisateur ainsi tromper l'utilisateur dans le but ultime de la réorienter sa session de navigation (par exemple, le phishing) ou la surveillance de son trafic…

 

Vulnérabilités JavaScript.
Bien que de nombreux sites confient leurs fonctions interactives à JS, l'utilisation généralisée de cette technologie entraîne plusieurs problèmes de sécurité graves.

Dans le passé, la plupart de ces problèmes de sécurité se pose depuis ou vers les systèmes de diffusion ou d'exploitation de vulnérabilités de type Cross Site Scripting (XSS) des sites vulnérables. La multiplication de ces vers activé un code pour injecter dans des sites Web dans le but d'être exécutés par les navigateurs Web ou des clients de courrier électronique pour manipuler des données ou simplement récupérer et voler les données utilisateur.

Comme les navigateurs Web et leurs capacités technologiques continuent d'évoluer, de sorte que l'utilisation malveillante renforce le besoin de la vieille à la création de nouveaux problèmes de sécurité liés à JS et AJAX. Ce progrès technologique a également lieu à un moment où il y a un changement important dans les objectifs finaux des intrus dont l'objectif principal a évolué depuis de simples actes de vandalisme (par exemple, la dégradation site Web) vers le vol de données de l'entreprise (par exemple, les détails des clients par carte de crédit) ainsi que le commerce d’informations dans des buts lucratifs sur le marché noir.

Les attaques de type XSS vont devenir de plus en plus intelligentes et capables de mener à bien des déni de service, des attaques de spam, et les attaques sur les messageries, et les exploits de navigateur de façon larvé. Il a également été récemment découvert qu'il est possible d'utiliser JS pour cartographier les réseaux domestiques et d'entreprise, ce qui rend instantanément tous les périphériques sur le réseau (serveurs d'impression, des routeurs, périphériques de stockage) vulnérable aux attaques.

En fin de compte ces attaques sophistiquées pourraient conduire à l'identification des actifs spécifiques du réseau un JS malicieux dans une page Web sur l'intranet de l'entreprise, ou toute autre application AJAX disposition du public et des données de retour.

Le problème est que la plupart des outils d'analyse Web disponibles rencontrent de graves problèmes avec l’audit des pages Web qui contiennent du JS. Par exemple, côté client le JavaScript exige un degré élevé d'intervention manuelle (plutôt que de l'automatisation).

 

Résumé et conclusions.
L'évolution des technologies web va vers des applications web de plus en plus efficaces, réactives et interactives. Ces progrès, cependant, augmentent également les menaces auxquels les entreprises et les développeurs Web sont confrontés de façon quotidienne.

Avec les ports publics 80 (HTTP) et 443 (HTTPS) toujours ouverts pour permettre l'envoi de contenu dynamique et d'échange, les sites Web sont à risque face au vol de données et la dégradation de site à moins qu'ils ne soient vérifiés régulièrement avec un scanner d'applications web fiable.
Comme la complexité de la technologie augmente, la faiblesse des site deviendra plus évident et les vulnérabilités plus graves.

L'avènement des applications AJAX a soulevé des questions de sécurité de plus en plus importantes en raison de la menace de la porte ouverte des mêmes technologies et de la complexité des applications. Avec une augmentation de l'exécution de scripts et des informations échangées en client / serveur, les pirates ont plus de chances de voler des données ainsi coûtant des millions aux organisations en revenus perdus, des conséquences juridiques sévères, la perte de confiance des clients et d'importants dommages causés à la réputation de votre organisation et de pertes de crédibilité.

La solution idéale pour un audit de sécurité efficace est un scanner de vulnérabilité qui automatise l'exploration de sites Web pour identifier ses faiblesses.
Cependant, sans un moteur performant d’analyse du code JavaScript, la remontée de ces audits peuvent se montrer inexactes et donne aux propriétaires de sites Web un faux sentiment de sécurité.