Web Application Firewall (WAF) – l’etat de l’art (2)

L’architecture d’un pare-feu applicatif web

Le placement du pare-feu applicatif web

Les pare-feu applicatifs qui sont des appliances sont d’habitude placés directement derrière un pare-feu classique et avant les serveurs Web de l’organisation. Habituellement le positionnement du pare-feu applicatif fait que tout le trafic web passe à travers celui-ci. Pourtant, certaines solutions peuvent être positionnées sur un port de surveillance du réseau (network monitoring port) et donc elles reçoivent une copie du trafic réseau.

Les pare-feu applicatifs qui sont intégrées directement dans les serveurs web fournissent des fonctionnalités similaires en traitant le trafic avant qu’il n’atteigne l’application web.

Le modèle de sécurité

Un pare-feu applicatif suit généralement soit un modèle de sécurité positive ou négative quand il s’agit de l’élaboration de politiques de sécurité pour les applications Web.

Le modèle de sécurité négatif autorise par défaut toutes les transactions. Seules les transactions contenant des attaques sont rejetées. Basé sur une signature, le pare-feu applicatif détecte les attaques en exécutant des correspondances de définitions. Et, comme c’est le cas avec les logiciels antivirus et les systèmes de prévention des intrusions (IPS), la vitesse, la qualité et la quantité de mises à jour des signatures publiées par le fournisseur sont cruciaux.

Pour ce qui est du modèle de sécurité positif, le pare-feu applicatif refusera toutes les transactions par défaut et s’appuiera sur les ensembles de règles pour autoriser les seules transactions réputées fiables. Cette méthode exigera du firewall une activité d’apprentissage non négligeable pour détecter les transactions légitimes. Pour le WAF fonctionnant de la sorte, il est important de savoir s’il prendra en charge les mises à jour automatiques pour son modèle de comportement applicatif, sans devoir le former à nouveau lors de chaque mise à jour. En outre, il convient de s’intéresser aux techniques de normalisation qu’il utilise afin que des pirates ne puissent pas esquiver votre firewall en modifiant tout simplement une charge utile malveillante afin qu’elle semble inoffensive.

Le modes de fonctionnement

Les pare-feu applicatifs web peuvent fonctionner dans plusieurs modes distincts.
Chaque mode offre divers avantages et inconvénients qui obligent les organisations à évaluer la place optimale du WAF dans l’infrastructure réseau.

Le mode passif

Dans le mode passif, le WAF écoute le trafic sur un port de control (n’est pas en ligne directe avec le trafic) et donc n’est pas capable de l’influencer. Ce mode est idéal pour tester le WAF dans l’environnement sans nuire au trafic. Le trafic est répliqué au niveau 1 (couche physique) de la couche ISO/OSI.

Le mode de fonctionnement passif
Le mode de fonctionnement passif

Le mode bridge

Le mode bridge est similaire au mode passif. Le WAF fonctionne comme un switch au niveau 2 (couche liaison de données) de la couche ISO/OSI. Ce mode offre des performances élevées et pas des changements importants au niveau de l’infrastructure réseau puisque le WAF n’as même pas besoin d’une adresse IP. Ce mode a quelques inconvénients ; il n’est pas possible de fournir des services de cache.

Le mode de fonctionnement bridge
Le mode de fonctionnement bridge

Le mode routeur

A WAF en mode routeur agit comme un routeur au niveau 3 (couche réseau) de la couche ISO/OSI donc le WAF est en ligne directe avec le trafic Internet. C’est possible en ce mode de remplacer directement un router existant même si ce n’est pas conseillé.

Le mode de fonctionnement router
Le mode de fonctionnement router

Le mode reverse-proxy

Le mode reverse-proxy est le déploiement le plus courant et riche en fonctionnalités. En ce mode, le WAF se trouve en ligne directe avec le trafic venant de l’Internet. Le WAF a une adresse IP publique et toutes les requêtes concernant les applications web lui y sont directement adressées. Le WAF ensuite fait la requête au serveur web au nom du navigateur d’origine. L’inconvénient d’un mode reverse proxy est qu’il peut augmenter la latence des applications web.

Le mode de fonctionnement reverse-proxy
Le mode de fonctionnement reverse-proxy

Le mode embarqué

Dans ce mode le WAF est embarqué dans le serveur web comme un module logiciel. Cette approche a certains avantages pour le déploiement des applications web de complexité réduite parce que aucun matériel supplémentaire n’est nécessaire. Pourtant, pour des raisons de scalabilité c’est recommandé d’installer le WAF sur un serveur web indépendant.

Le mode de fonctionnement embarqué
Le mode de fonctionnement embarqué

Web Application Firewall (WAF) – l’etat de l’art (1)

Introduction

Au cours des dernières années, une tendance claire se dégage au sein du paysage de la sécurité de l’information; les applications Web sont l’objet d’attaques.

Les applications Web continuent d’être un des principaux vecteurs d’attaque
pour les criminels, et la tendance ne montre aucun signe de ralentissement.

En effet, de plus en plus, les pirates évitent les attaques réseau au profit d’attaques par cross-site scripting (XSS), d’injections SQL et de nombreuses autres techniques d’infiltration destinées à frapper plus haut dans le modèle OSI, au niveau de la couche applicative en général, et du Web en particulier.

Aujourd’hui la plus part d’architectures réseaux sont protégées contre des attaques venant de l’extérieur par des firewalls classiques. Mais dans le plus part des cas, les ports http/https ne sont pas du tout protégées ou filtrées. C’est dans ce contexte que les pare-feu applicatifs web (WAF) on vus le jours.

Un pare-feu applicatif Web (WAF) est une application ou une appliance
qui surveille les conversations entre un navigateur client et un serveur web au niveau des packages http. Le WAF a la possibilité d’appliquer des politiques de sécurité fondées sur une variété de critères, y compris des signatures d’attaques connues.

Le pare-feu applicatif Web est donc destiné à prévenir les attaques là où les pare-feu réseau et les systèmes de détection ou de prévention des intrusions cessent d’être efficaces. A noter aussi qu’une mise à jour de la norme PCI DSS (Payment Card Industry Data Security Standard), effective depuis juin 2008, exige de sécuriser les applications Web via l’analyse du code ou des firewalls WAF.

(Quelques) Types d’attaques contre les applications web

Déni de service

La méthode est d’utiliser un réseau de bots pour générer un flux de requêtes vers une application. L’exemple le plus simple est d’envoyer simultanément des milliers de requêtes sur la page d’accueille d’un site public pour rendre hors service le serveur web.

En fonction du type d’application, une requête sur une page dynamique génère sur le serveur et la sur la chaine applicative (serveur d’application et base de données) une charge conséquente (génération des requetés SQL, appel a d’autres instances d’applications telle qu’un service web). Lancer le traitement de cette chaine plusieurs milliers de fois par seconde est en général fatal, le composant le plus faible cédant en premier, en rendant alors l’application indisponible.

Élévation des privilèges

Pour mener cette attaque, il faut que l’attaquant soit déjà connecté sur l’application avec un compte utilisateur. Avec ce compte, il part à la découverte de l’application et tente d’accéder a des fichiers de configuration ou de mot de passe. Par exemple les répertoires suivantes peuvent être accèdes pour tenter d’y découvrir des fichiers de configuration, comptes administrateurs : « /system/ » ; « /passwords/ » ; « /logs/ » ; « /admin/ ».

Injection de code

Une injection de code se produit quand un utilisateur envoie du code au serveur et l’oblige de l’exécuter. Les attaques le plus connus par l’injection du code sont l’injection du SQL et l’injection du PHP.

Une attaque par injection SQL se compose d’insertion d’une requête SQL dans les données  envoyées par le client au serveur. Une attaque réussi  peut lire les données sensibles à partir de la base de données, modifier les données de base de données (INSERT / UPDATE / DELETE), exécuter des opérations d’administration sur la base de données (telles que l’arrêt du SGBD), récupérer le contenu d’un fichier présent sur le système de fichiers de la base de données et dans certains cas d’emmètre des commandes au système d’exploitation.

L’injection PHP est similaire à l’injection SQL mais on remplace le code SQL par du code PHP.

Cross-Site Scripting (XSS)

Une application web est vulnérable aux attaques de type XSS quand un attaquant peut forcer l’application de lui retourner des données soumises non altérées. Ce mécanisme lui permet d’insérer des chaines de caractères spéciales dans la page HTML retournée par le serveur.

Un exemple d’une chaine de caractères spéciale est : <script>alert(« XSS« ) ;</script> qui auras comme résultat l’affichage d’une fenêtre dans le navigateur.

Vol de session HTTP

Un utilisateur d’une application web a le control complet sur la réponse qu’il envoie au serveur. Cette affirmation est spécialement vrais pour les éléments qui stockent de l’information d’état d’une page web comme les cookies http, les champs http cachés, les entêtes http et tous les éléments http  qui peuvent être contenus dans un formulaire http.

Le protocole http est un protocole « sans états » : rien ne permet de lier entre elles les requetés provenant d’un même utilisateur. Les applications utilisent massivement les cookies pour palier ce problème. Les cookies présentent deux vulnérabilités :

  • Les cookies sont facilement manipulable à l’aide d’outils comme Fiddler ou Tamper Data. En envoyant des valeurs de cookies « au hasard » ou en utilisant des algorithmes de génération de cookies connus, il est possible de se faire passer par un autre utilisateur.
  • Les cookies peuvent être volées et réutilisés. On parle d’attaques par vol de session. Sur un réseau local, un simple « sniffer » suffit pour capturer un cookie. Sur Internet, cette attaque est plus complexe, mais les attaques de type XSS permettent de récupérer des cookies. Ces cookies peuvent être ensuite réutilisées pour qu’un attaquant se fasse passer pour un utilisateur légitime.

Une radiographie de la cybercriminalité roumaine

Présentation du sujet

La présentation se propose d’offrir « Une radiographie de la cybercriminalité roumaine » et a deux objectifs principaux

  •  Tout d’abord, trouver des chiffres et des statistiques concernant la cybercriminalité roumaine.
  •  Deuxièmement, faire une liste la plus exhaustive possible des domaines de la cybercriminalité dans lesquels la criminalité roumaine est plus spécialisée.

Un troisième but qui résume et résulte de l’aboutissement des deux premiers  serait de faire une distinction très claire  entre le mythe qui entoure la cybercriminalité (qui est surtout créé et entretenu pas la presse) et la réalité  de la cybercriminalité.

La géographie de la veille

Concernant l’axe temporel, la veille a été amorcée au cours du mois d’avril 2012 avec des premiers résultats concluants vers mi-mai 2012.  Le processus de veille a été arrêté le 1er juillet 2012.

D’un point de vue géographique, la veille concerne uniquement la cybercriminalité provenant de Roumanie, mais sans distinction de la provenance géographique  des victimes. Il n’y a donc pas de limites géographiques en ce qui concerne les victimes.

Démarche

Les mots clés

Le tableau suivant synthétise les informations concernant les mots clés utilisés pour la veille :

Mots clés Efficacité Commentaire
romanian cyber criminality statistics   Très bonne
statistici cibercriminalitate romana  Très bonne Ces mots clés sont en langue roumaine
romanian cybercriminal statistics   Bonne
formes cybercriminalité  Bonne
types d’attaques cybercriminalité roumaine  Faible
Statistiques cyberdélits  Faible

Figure 1. Les mots clés de la veille

Dans la recherche des synonymes pour les mots clés on a utilisé l’outil Touchgraph qui à la base est un outil de cartographie. Ainsi qu’il résulte de l’image suivante, l’outil Touchagraph  présente pour chaque recherche, des recherches associées (« Related Searches »). Parmi ces recherches associées on peut parfois trouver des synonymes pour les mots clés de la recherche d’origine.

Figure 2. Recherches associées a des mots clés calculés par Touchgraph
Figure 2. Recherches associées a des mots clés calculés par Touchgraph

La veille manuelle

Les moteurs de recherches utilisés  pour la veille sont les suivants :

  • Google (google.be, google.fr, google.ro, google.com) – donne des résultats très pertinents et en plus il a des fonctionnalités  qui facilitent le travail de l’utilisateur, tel que l’aperçu des pages (voir Figure 2)
  • Bing – donne des résultats presque aussi bons que Google, mais il n’a pas toutes les fonctionnalités supplémentaires de Google
  • Yahoo – donne des résultats moins bons que les deux précédents moteurs
  • Exalead – donne des résultats plutôt mitigés donc, ce moteur n’as pas été retenu dans notre veille technologique.
Figure 3. L’aperçu des pages dans le moteur Google.
Figure 3. L’aperçu des pages dans le moteur Google.

La veille automatique

Une fois les mots clés identifiés, l’étape suivante a été de mettre en place une veille automatique.

Pour la veille automatique les outils suivants on été utilisés :

  • Google Alerts (voir Figure 4) – très bon outil gratuit qui s’intègre assez bien avec d’autres outils de Google (Gmail, iGoogle). Le nombre d ‘alertes est illimité et l’outil offre la possibilité de recevoir les alertes par email ou  par un flux RSS (qui donc peut être ajouté a n’importe quel outil d’agrégation comme iGoogle ou Netvibes).
  • Alerti –  l’outil offre des fonctionnalités comme des rapports, des tâches   liées à chaque élément d’une alerte, l’archivage des alertes mais tous ces fonctionnalités sont payantes. Alerti cherche les mots clés dans les blogs (n’est pas spécifié quels plateformes de blogs), dans des forums (aussi, sans spécifier quels sont les forums), sur Twitter, sur Facebook et d’autres réseaux sociales (sans indiquer lesquels). L’offre gratuite d’Alerti contient une seule alerte sans toutes les autres fonctionnalités.
  • TweetBeep – « TweetBeep is like Google Alerts for Twitter» outil qui fait des recherches par mots clés sur Tweeter. La version gratuite limite le nombre d’alertes a 5.
  • WatchThatPage – une fois que la veille a donné quelques sites ou pages web intéressantes, on a mis en place des outils de surveillance de ces pages web pour être alerté de la moindre modification. Pour cette tache le meilleur outil s’est avéré d’être WatchThatPage.com. L’outil permet de surveiller les pages web ciblées et rapporte leurs modifications par email (voir Figure 5).
  • Wysigot – est un outil similaire à WatchThatPage qui en plus est capable d’aspirer le contenu d’une page web. Malheureusement, pour pouvoir l’utiliser il faut installer l’application Wysigot sur une machine, ce qui n’est pas très pratique, contrairement a WatchThatPage qui est une application web.
Figure 4. Le page de Google Alerts pour notre veille
Figure 4. Le page de Google Alerts pour notre veille
Figure 5. La page de WathcThatPage pour notre veille
Figure 5. La page de WathcThatPage pour notre veille

La veille cartographique

Pour la veille cartographique les outils suivants on été utilisées :

  • Touchgraph – l’outil permet de faire une cartographie des mots clés et de vérifier le rayonnement des ces mots clés utilisés.   Pour notre veille on a essayé la version gratuite Touchgraph (appelée Touchgraph SEO).  Touchpraph n’as pas donné des résultats probants et il n’a pas été retenu pour la suite de notre veille.
  • PearlTree – est un outil qui a comme but de donner à l’utilisateur la possibilité d’organiser les pages web préférées sous forme des feuilles d’un arbre (appelé « pearl »). Les pearls peuvent être partagées avec d’autres utilisateurs et aussi stockées ensemble sous forme des arbres (appelé «pearlTree»s). L’outil PerlTree est beaucoup plus versatile et facile d’utilisation que Touchgraph. L’arbre de notre veille peux être accédé de façon gratuite a l’adresse suivante : www.pearltrees.com/citu_adrian.
Figure 6. L'arbre PearlTree pour notre veille
Figure 6. L’arbre PearlTree pour notre veille

Résultats

Les chiffres de la cybercriminalité roumaine

La veille de la cybercriminalité roumaine a permis de collecter quelques liens intéressants qui contiennent des données assez précises.

Lien Auteur Commentaire Prix
http://www.diicot.ro/index.php?option=com_content&view=article&id=52&Itemid=69 Ministère de l’Intérieur Roumain Des rapports annuels sur plusieurs domaines : sûreté de l’État, lutte contre le trafiques des drogues, criminalité économique, criminalité informatique 0
http://www.ic3.gov/media/annualreports.aspx IC3 (Internet Crime Compliant Center) Organisation crée par le FBI et le NW3C (National White Collar Crime Center)  pour recevoir les plaintes concernant les fraudes sur Internet. 0
http://ec.europa.eu/eurostat/ Eurostat Eurostat est l’Office statistique de l’Union européenne. Pour l’instant Eurostat ne propose pas des statistiques sur la cybercriminalité mais il devrait le faire dans  le futur. 0

Figure 7. Les liens le plus pertinents de la veille

Les figures suivantes présentent de façon graphique les données trouvées lors de la veille :

Le graphique suivant représente les officielles chiffres de la cybercriminalité roumaine telle que communiquées par le ministère de l’intérieur roumain.

Figure 8. Chiffres de la cybercriminalité roumaine
Figure 8. Chiffres de la cybercriminalité roumaine

L’organisation IC3 maintiens un classement des (10) états a partir desquels les attaques informatiques sont perpétrées.  Comme visible dans la figure suivante, la Roumanie est sortie de ce classement au cours de l’année 2009.

Figure 9. La Roumanie dans le classement américain des états voyous
Figure 9. La Roumanie dans le classement américain des états voyous

Analyse et synthèse

Le sujet lui-même reste très délicat à traiter de façon complète et claire pour des multiples raisons :

  • Par définition, les chiffres fournis correspondent uniquement aux cas avérés et connus de piratage et donc ne représentent que la face visible de la cybercriminalité.
  • Les particuliers ne déposent pas toujours plainte auprès des organes compétents.
  • Les sociétés victimes ne veulent pas qu’on sache que leur sécurité a été compromise, même si la loi les y oblige (aux Etats-Unis d’Amérique et bientôt en Europe aussi) pour des raisons commerciales, d’image de marque, etc…

Références

Valeur1-bon10-mauvais Lien Date Mot clés utilisées
10 http://www.guardian.co.uk/technology/2012/apr/27/cybercrime-ukcrime?newsfeed=true 25/04/2012 romanian cybercrime
9 http://www.bbc.co.uk/news/uk-17851257 27/04/2012 Romania cybercrime
10 http://www.techweekeurope.co.uk/news/host-of-credit-card-data-selling-websites-shut-down-75191 27/04/2012 Romania cybercrime
10 http://www.wired.com/threatlevel/2012/04/36-carding-sites-seized/ 27/04/2012 Romania cybercrime
5 http://www.thewhir.com/web-hosting-news/uk-us-federal-authorities-seize-36-domains-connected-to-financial-fraud 28/04/2012 Romania cybercrime
1 http://www.ic3.gov/crimeschemes.aspx#item-2 29/04/2012 romanian cyber criminality statistics
6 http://www.montrealgazette.com/business/Cybercrime+rise+Canada/6588911/story.html 08/05/2012 romanian cybercriminal statistics
7 http://www.cbc.ca/news/business/story/2012/05/08/cyber-security-phishing-bots-malicious.html 10/05/2012 Romania cybercrime
8 http://normantranscript.com/headlines/x728156592/Internet-crime-is-a-very-big-business-industry-and-asset 20/05/2012 Romanian cybercrime
9 http://www.saamu.net/topic440.html 20/05/2012 cybercriminalité roumanie
4 http://smartdatacollective.com/alexolesker/51898/hackers-and-honeypots-getting-things-done 10/06/2012 Romanian cybercrime
1 http://www.diicot.ro/index.php?option=com_content&view=article&id=52&Itemid=69 12/06/2012 statistici cibercriminalitate romana
10 http://www.wired.com/magazine/2011/01/ff_hackerville_romania/all/1 12/06/2012 Cybercrime romania
7 http://www.q13fox.com/news/kcpq-man-charged-with-stealing-more-than-40000-credit-cards-more-than-100-in-washington-20120611,0,4383016.story 12/06/2012 Romania cybercrime
3 http://www.lexpress.fr/actualite/high-tech/cybercriminalite-l-otan-appelle-les-nations-a-se-mobiliser_458152.html&title=Cybercriminalit%E9+%3A+l%27Otan+appelle+les+nations+%E0+se+mobiliser 16/06/2012 cybercriminalité roumanie
7 http://andrechassaigne.org/Lutte-contre-la-cybercriminalite.html 16/06/2012 cybercriminalité roumanie
3 http://www.v3.co.uk/v3-uk/the-frontline-blog/2185595/microsofts-trustworthy-computing-tour-europes-booming-cybercrime-business 20/06/2012 romanian cybercriminal statistics
5 http://www.telegram.com/article/20120624/COLUMN70/106249795/1002/BUSINESS 25/06/2012 Romanian cybercrime
3 http://www.bloggernews.net/128188 27/06/2012 romanian cyber criminality statistics

How to deploy from Ant to Tomcat through SSL

Problem: Deploy a war using the Ant to Tomcat. The Ant task should be something like this (where ${tomcat-manager-url} is something like httpS://targetServer:port/manager/text):

<target name="deploy" description="Deploy application to tomcat">
<echo>deploying from local source</echo>
<deploy url="${tomcat-manager-url}" username="${tomcat-manager-username}" password="${tomcat-manager-password}" path="/${deployed-application-name}" war="file:///${project-workspace}/${war.name}" />
</target>

Solution: The basic idea is to add the server certificate to the keystore from witch the deployment will be done and use this this certificate to talk with the server through SSL.

Step 1: Get and save the server certificate to the disk.

Step 2: Add the server certificate to the keystone truststore of the system from which Ant will deploy the application.
C:\>keytool -importcert -keystore keystoreFile -trustcacerts -alias targetServer
-file full path to the certificate file

Step 3: Execute the ant script script with the following system properties:
-Djavax.net.ssl.keyStoreType=jks
-Djavax.net.ssl.keyStore=Full path to the keystore file
-Djavax.net.ssl.keyStorePassword=keystore password
-Djavax.net.ssl.trustStore=Full path to the keystore file
-Djavax.net.ssl.trustStorePassword=keystore password

Problems: Some errors that can appear and how to solve them.

Problem: PKIX path building failed. The full error message is:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target

Solution: The executed Ant script cannot find the keystore passed as parameter in the Step 3

Problem: No name matching “serverName” found. The full error message is:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching serverName found

Solution: The server name on which the deployment is made should be the same as the FQDN(Fully Qualified Domain Name) of the certificate. The FQDN of the certificate is something like serverName.foo.org; the server name on which the deployment is made by Ant should be exactly the same.

Book review: Foundations of Security (Part 3 Introduction to Cryptography)

Chapter 12:  Symmetric Key Cryptography

The chapter starts with an introduction to cryptography that consists in explaining some notations and terminology. Then the block ciphers are explained and the following algorithms are introduced:

The second part of the chapter introduce the stream cyphers and as examples the One Time Pad and RC4.

Chapter 13: Asymmetric Key Cryptography

This chapter explains how the asymmetric key cryptography algorithms are working and briefly explains the RSA and Elliptic Curve Cryptography (ECC) algorithms; it also highlights one of the most important problem of the asymmetric key algorithms which is the public key creation and exchange.

Chapter 14: Key Management and Exchange

Key management refers to the process by which keys are generated, stored, agreed upon and revoked. The chapter is structured on 3 parts:

  • Key generation (how should new keys be created). For the key generation the authors focus on securely generating random numbers by using the C rand() function, using the Random APIs (CryptGenKey library or java.security API) or random device files.
  • Key Storage (how should keys be securely stored so that they cannot be easily stolen). The authors propose some solutions and starts from non secure storage “platforms” (as storing the keys into the compiled code or to a disk) until more secure “platforms” as external devices like smart cards, Hardware Security Modules (HSM).
  • Key agreement and exchange (how should to or more parties decide on a session key used to protect the confidentiality of their conversation). The authors present two ways that can be used to initiate a conversation:
    • generate a cryptographically random conversation key and  encrypt it with a public key
    • use Diffie-Hellman key exchange protocol

Chapter 15: MACs and Signature

This chapter presents Message Authentication Codes (MACs) and digital signatures. A MAC is  sequence of bits that can be attached to a message to verify where is originated and that is has not been tampered with. For MACs construction the authors present the following algorithms CBC-MAC and HMAC.

Chapter 16: Exercises for Part 3

As usually this chapter contains some questions and problems in order to test the comprehension of the notions discussed in the chapters 12-15.

(My) Conclusion

For me the book fulfill his goal: to present in a (rather) clear and concise way the fundamental notions about the security but what I disliked to this book is the writing style which I find it rather difficult to follow sometimes.