Les enjeux de la sécurité des applications Web

Publié le 5 juillet 2011 par Nicolas Cavigneaux | sécurité

Cet article est publié sous licence CC BY-NC-SA

Des applications Web partout et pour tous !

De nos jours les applications Web sont devenues omniprésentes et nous les utilisons au quotidien. Qui n’utilise pas une application en ligne de type Facebook, Webmail ou encore de partage de photos ou de documents ?

Toute entreprise ou administration se doit maintenant d’avoir un présence sur le Web que ce soit via un blog, un site de vente en ligne, intranet / extranet ou encore une application riche (réseau social, démarches administratives en ligne, …).

Ces applications, dîtes légères, ont pour gros avantage de ne nécessiter que d’un navigateur internet pour fonctionner et sont donc accessibles en permanence (au travail, chez soit, chez les amis, en vacances, sur smartphone).

Le revers de la médaille est que ces applications étant disponibles de partout et par tout le monde, elles sont particulièrement exposées aux attaques par des personnes malveillantes. Ces personnes décident de tenter de contourner les mesures de sécurité mises en place par défis technique et intellectuel, revendication ou tout simplement pour en tirer un profit financier.

Il n’est plus rare de voir des sociétés faire la une des actualités suite à une attaque… Personne n’est à l’abri, pas même les plus grandes multi-nationales comme Sony Playstation ou les institutions nationales.

Ces attaques peuvent avoir un effet catastrophique sur l’image de la société attaquée, faire fuir les utilisateurs et clients et donc engendrer de lourdes pertes financières.

La sécurité des applications Web est donc devenu un enjeu stratégique aussi important que les fonctionnalités ou l’ergonomie, d’ailleurs les utilisateurs y attachent de plus en plus d’importance. La peur de se faire voler des données sensibles (numéro de CB, documents, …) est bien plus présente dans les esprits qu’il y a encore quelques années. Ceci est sans nul doute dû au fait que les attaques se multiplient et que plus personne n’est épargné.

Il faut savoir que même les plus petites structures et plus petits sites sont des cibles potentielles. Elles ne sont pas visées par les pirates pour en tirer un profit direct mais plutôt pour servir de passerelle et de couverture pour des attaques de plus grandes envergures. Les obligations légales face à ces problèmes de sécurité sont de plus en plus drastiques et faire office de passerelle peut maintenant représenter un risque pénal.

Il est donc primordial de nos jours de développer son application Web dans une logique de sécurité, dès le départ et tout au long du processus. Aucune sécurité n’est inviolable mais vous pouvez considérablement compliquer la tâche des pirates qui passeront à quelqu’un d’autre si la compromission de votre application n’est pas absolument nécessaire à leur progression.

Télécharger le guide ultime pour réussir votre application web métier

Préparer sa sécurité

Assurer la sécurité d’une application Web est un métier à part entière et de nos jours encore trop de prestataires (SSII, Agence web, …) travaillent avec des personnes qui ont appris sur le tas et qui essaient de suivre les évolutions des technologies autant qu’ils le peuvent. Bien souvent ces développeurs ne sont pas sensibilisés aux contraintes de sécurité et n’arrivent pas à concilier esthétique, fonctionnalités et sécurité.

Chaque jour voit son nouveau lot de failles de sécurité et techniques de contournement apparaître. C’est un travail de veille constante difficile à suivre quand on sait que dans le milieux du web tout évolue très vite. Il faut dès lors être un vrai passionné pour prétendre être à la pointe des possibilités techniques et des mesures de sécurité à mettre en place.

Assurer la sécurité d’une application web n’est pas inné. Ce sont des années d’expérience, de documentation, d’écriture de code et cette formation ne s’arrête jamais. Si le développeur, dès le départ du projet ne porte pas une attention constante à la sécurité de son application, vous pouvez être sûr que celle ci comportera des failles exploitables. Dès lors plus rien ne peut être assuré, que ce soit la confidentialité des données ou l’intégrité de l’application. Une fois l’application compromise, dans la plupart des cas, la seule solution sûre et de ré-installer les serveurs et de lancer un audit de sécurité sur l’application ce qui entraîne un coût financier important sans parler de la non-disponibilité du service.

Comme dit précédemment, personne n’est à l’abri, pas besoin d’avoir à faire à un génie de l’informatique pour subir des attaques tellement les outils automatisés sont nombreux, puissants et facilement accessibles. De plus de nombreuses failles qui sont devenues des classiques sont maintenant très connues et testées de suite sur les cibles. Malgré cela de très nombreux sites ne sont pas ou mal protégés contre ses attaques “basiques”.

Il semble que la sécurité ne soit pas un critère pris en compte de facto par certains prestataires, il faut donc bien définir ses contraintes de sécurité sur son cahier des charges et ne pas hésiter à se renseigner sur les compétences du prestataire sur ce point précis.

De plus, toute application reliée à l’internet doit faire l’objet d’une attention particulière concernant la sécurité puisque même un simple extranet sans donnée sensible peut être utilisé comme point d’accès vers une autre application ou un autre système plus sensible.

Les failles les plus couramment exploitées

Il y a un certain nombre de failles très connues et qui pourtant fonctionnent encore aujourd’hui sur de nombreuses applications, il est absolument nécessaire de former ses équipes de développement à la sécurisation de ces types de failles ou de s’assurer que son prestataire est bien au fait de celles ci. Voici les plus exploitées :

  • Mauvaise gestion de l’authentification et des droits associés
  • Cross-Site Scripting (XSS)
  • Injection SQL
  • CSRF
  • Envoi de fichiers interprétables
  • Injection de commandes systèmes
  • Exposition d’informations via les messages d’erreur
  • Race condition

Une simple recherche de ces termes sur Google vous montrera l’effet désastreux que peuvent causer ces failles et vous trouverez d’ailleurs des articles vous expliquant comment les exploiter.

Bonnes pratiques

La sécurité se pense en amont, il ne faut pas attendre l’attaque ou même la fin du développement pour colmater une brèche.

Les équipes de développement ainsi que les équipes d’exploitation doivent impérativement être formées aux bases de la sécurité informatique. Le code doit être robuste et ne jamais faire confiance aux entrées utilisateurs ou aux données externes.

Les parties et données sensibles de l’application doivent être recensées lors de la phase d’écriture du cahier de charges de l’application. Prendre en compte ces notions de sécurité modifiera forcément les fonctionnalités et l’ergonomie des parties sensibles. Prendre en compte ces contraintes de sécurité est la meilleure chose que vous pouvez faire, pour vous et votre budget de développement, pour la sérénité de votre équipe de développement et bien sûr pour vos utilisateurs.

Les développeurs doivent s’imposer une discipline de développement, respecter quelques règles et bonnes pratiques ce qui contribuera déjà largement à la sécurisation de l’application. Une fois l’application sécurisée et en production le travail n’est pas fini. Les techniques de contournement de sécurités évoluent tous les jours et il faut se tenir informé pour ne pas se faire dépasser par les avancées techniques.

Si votre application contient des parties vraiment critiques, n’hésitez pas à faire appel à un expert en sécurité pour épauler ou orienter votre équipe de développement, voire développer ces parties.

Une fois l’application développée, vient l’heure de la recette. Cette recette consiste à faire tester votre application par un panel d’utilisateurs qui pourront mettre en évidence certains bugs fonctionnels, ces utilisateurs ne devront pas hésiter à maltraiter l’application, faire des choses inattendues, …

On pourra également demander à des spécialistes en sécurité d’essayer de mettre à mal l’application si celle ci est réellement critique et que les informations doivent à tout prix rester confidentielles. Ces spécialistes peuvent employer deux techniques distinctes :

  • La boîte noire où l’application est testée sans en connaître le code comme le ferait un pirate
  • L’audit de code qui consiste à relire le code de l’application pour en découvrir les problèmes de conception

Pour assurer la sécurité complète de l’application, la vérification seule du code ne suffit pas. Il faut s’assurer que le serveur qui héberge l’application, la base de donnée, en somme toute l’infrastructure soit correctement configurée.

Conclusion

Pour conclure, la sécurité des applications web est un point qu’il ne faut pas négliger. C’est un travail qui peut paraitre fastidieux, coûteux, pas forcément très utile pour des petites structures / sites mais quoi de mieux pour la sérénité et la satisfaction client que de savoir que son application est robuste et ne flanchera pas sous les attaques du premier pirate venu ?

Ne cédez pas toutefois pas à la paranoïa, il faut adapter ses mesures de sécurité à la valeur de ce qui peut être volé ou détruit. Iriez vous mettre vos fraises dans un coffre fort par peur de vous les faire voler ? Je ne pense pas.


L'équipe Synbioz.
Libres d'être ensemble.

Télécharger le guide ultime pour réussir votre application web métier