Honeypot pour protéger une application web

mieux protéger une application internet

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com
Comment se protéger contre un voleur ? La chose la plus simple à faire consiste à lui donner une fausse adresse. Les experts de sécurité des applications web ont pensé la même chose et ont formalisé une technique qui s'appelle "honeypot".

Honeypot, autrement dit, un pot de miel. Pourquoi une telle nomination ? Est-ce une version criminelle d'un "Winnie l'ourson" ? Non. Cette comparaison est causée par le rapport entre les abeilles, l'apiculteur et le miel. Les agresseurs sont assimilés aux rôles des abeilles. Elles se précipitent donc vers le miel. Grâce à cela l'apiculteur peut constater l'activité de son tribu. Si l'on transfère cette illustration dans le monde informatique, on obtient à peu près la même chose. Les abeilles, ce sont les agresseurs. Le pot de miel c'est notre système. Mais attention, c'est un système préparé exprès pour "inciter" les abeilles à l'attaquer. L'apiculteur est donc le développeur qui, grâce à son miel, peut surveiller l'activité malveillante envers son application web. Il a donc plus de temps pour réagir avant que l'attaquant s'aperçoive de frapper à la mauvaise porte.

Deux types des honeypots
On peut donc constater qu'un honeypot est le miroir du système entier ou uniquement de sa petite partie. Il permet de mieux surveiller le réseau et donc d'anticiper d'éventuelles attaques. On distingue trois types d'usage des honeypots :
1) Prévention : honeypot rajoute une couche supplémentaire de protection. Cependant, elle ne remplacera jamais de l'adaptation de bonnes pratiques de développement. Honeypot ne peut pas donc être le seul moyen de protection. Il est une valeur rajoutée, rien de plus.
2) Détection : un honeypot bien adapté peut aider à identifier de vrais dangers auxquels est exposée notre application web. Il est bien plus sophistiqué qu'un simple logger. Ce dernier aura du mal à faire la distinction entre un internaute faisant une fausse manipulation et un hacker essayant de s'introduire dans le système.
3) Réaction : grâce à l'implémentation des honeypots, on peut plus facilement réagir après une tentative d'attaque. La faille est alors clairement identifiée et le développeur n'a qu'analyser toutes les actions qui ont compromis la stabilité du système.
4) Recherche : le déploiement des honeypots permet de mieux comprendre la démarche des attaques. Il facilite la découverte des outils, des techniques ainsi que des circonstances des attaques. On parle aussi des honeypots de production, destinés à protéger une vraie application, et des honeypots de recherche qui, eux, ont pour but de mieux renseigner la communauté de la sécurisation des applications web.

On divise des honeypots en deux catégories :
- honeypot à faible interaction : outils qui se contentent de simuler le comportement des services et des systèmes. Le risque encouru est minimal. Même si l'agresseur parvient à prendre contrôle de l'honeypot, il ne sera toujours pas en possession d'accès à la vraie application.
- honeypot à forte interaction : outils qui opèrent sur le vrai système, celui de production. Il permet la gestion plus complexe et la récupération d'une plus grande quantité d'informations. Cependant, sa mise en place est plus sophistiquée et plus risquée. L'attaquant, en détournant le honeypot, acquiert automatiquement l'accès à l'application de production.

Applications honeypot
Plusieurs clients honeypot existent. Pour la protection du réseau on peut par exemple utiliser honeyd. Il permet de surveiller le trafic du réseau et d'émuler de faux services (SSH, FTP).

Un autre exemple de l'honeypot est Shelia. Il imite le comportement d'un internaute. Il peut, par exemple, tester si les liens inclus dans les mails dirigent vers des sites fiables. Si ce n'est pas le cas, une alerte est alors déclenchée.

Pour la protection des pages web, on peut se référer à développé il y a 4 ans spybye. C'est un bot qui analyse les URLs qui se trouvent sur les pages web de votre application. Il les classe ensuite en 3 catégories : harmless (on peut faire confiance, probablement URLs internes), unknown (adresses inconnues, peuvent être dangereuses) et dangerous (URL est dangereux et l'application a pu être contaminée).

Un autre outil, plus à jour que spybye, est Glastopf, développé par Lukas Rist sous toutelle de Thorsten Holz. Ce système analyse le contenu de la webapp à la recherche de tous les exploits connus (remote file injection, SQL injection). Ecrit en Python, il contient un système de stockage externe. Ce bot survole l'application à la recherche des chaînes de caractère contenant "http://" ou "ftp://". Après la découverte, il accède à la ressource et analyse le niveau de sa dangerosité.

Honeypot dans SQL injection
Le pot de miel peut être utilisé dans la conception de protection de la base de données. L'astuce consiste à inciter l'attaquant à se tourner vers une partie de l'application contenant de fausses données (une base, une colonne, une table).

Supposons que l'on veut protéger la table contenant les informations sur les utilisateurs enregistrés sur le site. Elle s'appelle regusers. Afin de détourner l'attention de l'agresseur, on va créer une deuxième table. Celle-ci sera nommée users.

Très probablement, si une personne malveillante voudra exploiter une attaque SQL injection sur les données de l'utilisateur, c'est vers la table users qu'elle se tournera. Contente de l'avoir trouvée, elle commencera à l'exploiter.

Une couche supplémentaire de notre application web va alors s'occuper de logger toutes les actions effectuées sur la fausse table users. Il peut s'agir par exemple d'un trigger qui mettra à jour une table avec des alertes. Il peut être aussi question d'utiliser un système des alertes e-mail. Le développeur pourra également bannir l'accès à l'application à l'adresse IP essayant de faire les requêtes sur la table users.

Comme on l'a déjà mentionné, un honeypot ne peut pas être la chose fondamentale dans la protection de notre application web. Il doit être une couche en plus qui permet de mieux suivre et analyser le traffic. Une couche qui permet de dormir plus tranquillement.

L'article écrit en rythme de:

Slaï - Cocktail
Bartosz KONIECZNY 11-12-2011 15:27 sécurité des applications web
Un conseil JavaScript

Comment supprimer un élément du tableau JavaScript ?

PHP a sa méthode unset() pour supprimer un élément du tableau. JavaScript n'est guère plus compliqué. Pour supprimer n'importe quel élément il suffit d'utiliser l'opérateur delete :

delete myArray[key];
On peut également utiliser la méthode pop() qui va automatiquement supprimer le dernier élément de notre Array(). On peut également enlever le premier élément du tableau en utilisant shift().