Bases de Sécurité

La sécurité informatique est un enjeu majeur dans le monde de l’entreprise. Trois objectifs principaux s’en dégagent. Il faut tout d’abord s’assurer de l’intégrité des données, elles ne doivent pas être altérées. De plus, il est essentiel d’en garantir la disponibilité dans le cadre prévu. Et enfin il faut évidemment veiller à la confidentialité des données. Il est également possible d’ajouter trois autres objectifs que sont la traçabilité de la donnée ce qui signifie concrètement que l’accès ou la tentative d’accès à la donnée est conservé. Il y a aussi l’authentification qui permet la gestion des droits d’accès utilisateur. Et enfin la non-répudiation  dans le sens où chacun est responsable de ses actions et qu’aucun tiers ne doit être en mesure de s’en attribuer la paternité.

Partant de ce constat, il existe énormément de failles de sécurité. Ici nous nous focaliserons davantage sur le domaine du Web. Le but de cet article n’est pas d’en faire une liste exhaustive mais simplement de s’intéresser à une poignée d’entre elles en les définissant de façon générale et par l’exemple pour finir sur quelques bonnes pratiques Php à adopter.

* * *

Audit PHP : sécurité et bonnes pratiques

PHP_LOGO

Créé en 1994, PHP (Hypertext Preprocessor) est un langage de programmation très répandu sur Internet.

C'est un langage puissant, facile à aborder et permissif.
De ce fait, il est fréquent de retrouver des codes PHP qui ne respectent pas les normes élémentaires de sécurité et de bonnes pratiques.

Cet article est un aide-mémoire qui dresse une liste (non exhaustive) des points à contrôler dans le cadre d'une revue de code.

TechEvening à Lyon sur la sécurité des applications Web

Ce lundi s'est déroulé à Lyon un TechEvening consacré à la sécurité des applications Web. Nous avons testé les différentes techniques et outils utilisés par les utilisateurs malveillants. Deux applications ont été utilisées, l'une en J2EE pour la plupart des techniques (WebGoat 5.3 de la fondation OWASP) et l'autre en ASP.NET MVC 3 pour un focus sur les perfides attaques CSRF.

Au programme:

  • Injection: diverses techniques d'injection SQL;
  • Cross-Site Scripting (XSS): techniques de phishing et de "session hijacking";
  • Violation de gestion d'authentification et de session: technique de "session fixation";
  • Références directes non sécurisées: techniques d'"AC Bypass" aux niveaux données et métier;
  • Cross-Site Request Forgery (CSRF): technique du "Token Bypass";
  • Mauvaise configuration de sécurité: technique de "Malicious File Execution";
  • Stockage cryptographique non sécurisé: sensibilisation au "hashing" et "salting";
  • Manque de restriction URL: technique du "forced browsing";
  • Protection insuffisante de la couche transport: "sniffing", "ARP spoofing" et "ARP poisoning"
  • Redirections et renvois non validés: techniques du "HTTP splitting" et du "cache poisoning"

Nous avons utilisé les outils suivants:

  • Firefox
  • Fiddler
  • Firebug
  • TamperData
  • WireShark

Vous pouvez retrouver ci-après tous les supports:

  • L'application WebGoat 5.3;
  • L'application CSRFDemo ASP.NET MVC 3;
  • Les slides (PPTX ou PDF) de présentation;
  • Quelques fichiers utilisés pour les attaques;

Pour ceux qui s’intéressent plus globalement à la sécurité des applications .NET (pas qu'en Web), je vous invite à lire l'article suivant sur l'altération des assemblages, l'injection de code et la suppression des signatures cryptographiques. Une vidéo est également disponible.