Sécurité des applications Web

La sécurité des applications Web est la sécurité du réseau pour les ordinateurs et les programmes qui communiquent à l’aide des protocoles HTTP et HTTPS. Il s’agit d’un domaine extrêmement vaste où les failles et les faiblesses en matière de sécurité abondent. Les systèmes d’exploitation des serveurs et des clients présentent des problèmes de sécurité et sont vulnérables aux attaques. Les logiciels de serveur Web et les technologies d’activation de sites Web telles que CGI, Java, JavaScript, PERL et PHP présentent des vulnérabilités sous-jacentes. Les navigateurs et autres applications clientes qui communiquent avec des applications web présentent également des vulnérabilités. Les sites Web qui utilisent n’importe quelle technologie mais le HTML le plus simple, y compris tout site qui permet l’interaction avec les visiteurs, ont souvent des vulnérabilités propres.

Dans le passé, une atteinte à la sécurité n’était souvent qu’une gêne, mais aujourd’hui c’est rarement le cas. Par exemple, les attaques dans lesquelles un pirate a accédé à un serveur Web et a apporté des modifications non autorisées à un site Web (dégradé) étaient courantes. Ils étaient généralement lancés par des pirates qui n’avaient aucune motivation que de démontrer leurs compétences à d’autres pirates ou de gêner la personne ou l’entreprise visée. Cependant, la plupart des manquements actuels à la sécurité sont motivés par un désir d’argent. La majorité tente d’atteindre l’un des objectifs suivants ou les deux : obtenir des renseignements confidentiels de nature délicate et potentiellement précieuse, ou obtenir un accès non autorisé à un site Web ou un serveur Web ou à un contrôle de celui-ci.

Certaines formes d’attaques sur le Web visent à obtenir des informations privées. Ces attaques sont souvent possibles même contre des sites Web suffisamment sécurisés pour empêcher un attaquant de prendre le contrôle total. Les informations qu’un attaquant peut obtenir à partir d’un site Web peuvent inclure les noms de clients, adresses, numéros de téléphone, numéros de sécurité sociale, numéros de carte de crédit, dossiers médicaux et autres informations privées. L’attaquant peut alors utiliser ces informations ou les vendre à d’autres. Une grande partie de l’information obtenue par de telles attaques est protégée par la loi, et tout cela par la coutume et l’attente. Une violation de ce type peut avoir des conséquences extrêmement graves pour les clients dont les informations privées sont compromises. Au mieux, ces clients devront faire preuve de vigilance pour empêcher les autres d’abuser de leurs cartes de crédit, d’ouvrir des comptes de crédit non autorisés en leur nom ou de s’approprier leur identité carrément (vol d’identité). Au pire, les clients peuvent faire face à des notations de crédit ruines ou même être blâmés pour des activités criminelles auxquelles ils n’ont pas participé.

D’autres attaques Web visent à obtenir le contrôle (ou compromettre) d’un site Web ou du serveur sur lequel il opère, ou des deux. Un pirate qui prend le contrôle d’un site Web ou d’un serveur peut l’utiliser pour héberger du contenu non autorisé, agir en tant que proxy pour le contenu hébergé sur un autre serveur Web, fournir des services SMTP pour envoyer des courriels en vrac non sollicités ou fournir des services DNS pour prendre en charge de telles activités sur d’autres serveurs Web compromis. La plupart des sites Web hébergés sur des serveurs Web compromis font la promotion d’entreprises douteuses ou purement et simplement frauduleuses. Par exemple, la majorité des sites Web d’hameçonnage et des sites Web d’exploitation des enfants sont hébergés sur des serveurs Web compromis.

La protection de vos sites Web et services Web contre ces attaques nécessite une défense multicouche capable à la fois de bloquer les attaques connues avec des caractéristiques identifiables et de protéger contre les attaques inconnues, qui peuvent souvent être détectées parce qu’elles sont différentes du trafic normal vers vos sites Web et services Web.

Attaques Web connues

La première ligne de défense pour vos sites web est la protection contre le grand nombre d’attaques connues et qui ont été observées et analysées par des experts en sécurité web. Les types d’attaques les plus courants contre les sites Web HTML sont les suivants :

  • Attaques par débordement de tampon. Envoi d’une URL extrêmement longue, d’un cookie extrêmement long ou d’une autre information extrêmement longue à un serveur Web dans l’espoir de provoquer le blocage, le blocage ou le système d’exploitation sous-jacent ou de permettre à l’attaquant d’accéder au système d’exploitation sous-jacent. Une attaque par débordement de tampon peut être utilisée pour accéder à des informations non autorisées, compromettre un serveur Web, ou les deux.
  • Attaques de sécurité des cookies. Envoi d’un cookie modifié à un serveur Web, généralement dans l’espoir d’obtenir l’accès à un contenu non autorisé en utilisant des informations d’identification falsifiées.
  • Navigation puissante. Accéder directement aux URL d’un site Web, sans accéder aux URL au moyen de liens hypertexte sur la page d’accueil ou d’autres URL de démarrage courantes sur le site Web. Des cas individuels de navigation forcée peuvent simplement indiquer un utilisateur qui a marqué une page sur votre site Web, mais les tentatives répétées d’accéder à un contenu inexistant ou à un contenu auquel les utilisateurs ne devraient jamais accéder directement représentent souvent une atteinte à la sécurité du site Web. La navigation forcée est normalement utilisée pour accéder à des informations non autorisées, mais peut également être combinée à une attaque par débordement de tampon dans le but de compromettre votre serveur.
  • Attaques de sécurité des formulaires Web. Envoi de contenu inapproprié à votre site Web dans un formulaire Web. Le contenu inapproprié peut inclure des champs cachés modifiés, du code HTML ou du code dans un champ destiné uniquement aux données alphanumériques, une chaîne trop longue dans un champ qui n’accepte qu’une chaîne courte, une chaîne alphanumérique dans un champ qui accepte uniquement un entier et une grande variété d’autres données que votre site Web n’a pas s’attendent à recevoir dans ce formulaire Web. Une attaque de sécurité de formulaire Web peut être utilisée soit pour obtenir des informations non autorisées de votre site Web, soit pour compromettre le site Web, généralement lorsqu’elle est combinée à une attaque par débordement de tampon.

Deux types spécialisés d’attaques contre la sécurité des formulaires Web méritent une mention spéciale :

  • Attaques par injection SQL. Envoi d’une ou de commandes SQL actives dans un formulaire Web ou dans le cadre d’une URL, dans le but d’amener une base de données SQL à exécuter la ou les commandes. Les attaques par injection SQL sont normalement utilisées pour obtenir des informations non autorisées.
  • Attaques de scripts intersites. Utilisation d’une URL ou d’un script sur une page Web pour enfreindre la politique de même origine, ce qui interdit à tout script d’obtenir des propriétés ou de modifier tout contenu sur un site Web différent. Étant donné que les scripts peuvent obtenir des informations et modifier des fichiers sur votre site Web, permettre à un script d’accéder au contenu d’un autre site Web peut fournir à un attaquant les moyens d’obtenir des informations non autorisées, de compromettre un serveur Web, ou les deux.

Les attaques contre les services Web XML relèvent normalement d’au moins une des deux catégories suivantes : tentatives d’envoi de contenu inapproprié à un service Web ou tentatives de violation de la sécurité sur un service Web. Les types d’attaques les plus courants contre les services Web XML sont les suivants :

  • Code ou objets malveillants. Demandes XML contenant du code ou des objets qui peuvent obtenir directement des informations sensibles ou donner à un attaquant le contrôle du service Web ou du serveur sous-jacent.
  • Demandes XML mal formées. Demandes XML qui ne sont pas conformes à la spécification XML du W3C et qui peuvent donc enfreindre la sécurité sur un service Web non sécurisé
  • Attaques par déni de service (DoS). Demandes XML envoyées à plusieurs reprises et en volume élevé, dans le but d’accabler le service Web ciblé et de refuser aux utilisateurs légitimes l’accès au service Web.

Outre les attaques basées sur XML standard, les services Web XML et les sites Web 2.0 sont également vulnérables aux attaques par injection SQL et par script intersite, comme décrit ci-dessous :

  • Attaques par injection SQL. Envoi d’une ou de commandes SQL actives dans une requête XML, dans le but d’amener une base de données SQL à exécuter cette ou ces commandes. Comme pour les attaques par injection HTML SQL, les attaques par injection XML SQL sont normalement utilisées pour obtenir des informations non autorisées.
  • Attaques de scripts intersites. Utilisation d’un script inclus dans une application XML pour enfreindre la stratégie de même origine, ce qui ne permet à aucun script d’obtenir des propriétés à partir d’une application différente ou de modifier un contenu. Étant donné que les scripts peuvent obtenir des informations et modifier des fichiers à l’aide de votre application XML, permettre à un script d’accéder au contenu appartenant à une autre application peut donner à un attaquant les moyens d’obtenir des informations non autorisées, de compromettre l’application, ou les deux

Les attaques Web connues peuvent généralement être arrêtées en filtrant le trafic du site Web pour des caractéristiques spécifiques (signatures) qui apparaissent toujours pour une attaque spécifique et ne devraient jamais apparaître dans le trafic légitime. Cette approche présente l’avantage d’exiger relativement peu de ressources et de présenter relativement peu de risques de faux positifs. Il s’agit donc d’un outil précieux pour lutter contre les attaques sur les sites Web et les services Web, et il est facile de configurer les protections de signature de base qui interceptent la plupart des attaques Web connues.

Attaques Web inconnues

La plus grande menace contre les sites Web et les applications ne vient pas d’attaques connues, mais d’attaques inconnues. La plupart des attaques inconnues appartiennent à l’une des deux catégories suivantes : les attaques lancées récemment pour lesquelles les entreprises de sécurité n’ont pas encore développé de défense efficace (attaques zero-day), et les attaques soigneusement ciblées sur un site Web ou un service Web spécifique plutôt que sur de nombreux sites Web ou services Web (attaques à la lance). Ces attaques, comme les attaques connues, ont généralement pour but d’obtenir des informations confidentielles, de compromettre le site Web ou le service Web et de permettre leur utilisation pour d’autres attaques, ou pour ces deux objectifs.

Les attaques Zero Day constituent une menace majeure pour tous les utilisateurs. Ces attaques sont généralement du même type que les attaques connues ; les attaques « jour zéro » impliquent souvent du SQL injecté, un script intersite, une falsification de requête intersite ou un autre type d’attaque similaire aux attaques connues. Dans la plupart des cas, ils ciblent des vulnérabilités que les développeurs du logiciel, du site Web ou du service Web ciblé ne connaissent pas ou viennent d’apprendre. Les entreprises de sécurité n’ont donc généralement pas développé de défenses contre ces attaques, et même si elles l’ont fait, les utilisateurs n’ont généralement pas obtenu et installé les correctifs ni effectué les solutions de contournement nécessaires pour se protéger contre ces attaques. Le temps entre la découverte d’une attaque de jour zéro et la disponibilité d’une défense (la fenêtre de vulnérabilité) diminue, mais les auteurs peuvent toujours compter sur des heures, voire des jours où de nombreux sites Web et services Web ne disposent pas d’une protection spécifique contre l’attaque.

Les attaques de lance constituent une menace majeure, mais pour un groupe d’utilisateurs plus sélect. Un type courant d’attaque à la lance, un hameçonnage à la lance, est généralement ciblé sur les clients d’une banque ou d’une institution financière en particulier, ou (moins souvent) sur les employés d’une entreprise ou d’une organisation spécifique. Contrairement à d’autres attaques de phishing, qui sont souvent des falsifications grossièrement écrites qu’un utilisateur ayant une quelconque connaissance des communications réelles de cette banque ou institution financière peut reconnaître, les spear phishes sont des lettres parfaites et extrêmement convaincantes. Ils peuvent contenir des renseignements spécifiques à l’individu que, à première vue, aucun étranger ne devrait connaître ou être en mesure d’obtenir. Le phisher est donc en mesure de convaincre sa cible de fournir les informations demandées, qu’il peut ensuite utiliser pour piller des comptes, pour traiter de l’argent obtenu illégalement d’autres sources, ou pour accéder à d’autres informations encore plus sensibles.

Ces deux types d’attaque ont certaines caractéristiques qui peuvent généralement être détectées, mais pas en utilisant des modèles statiques qui recherchent des caractéristiques spécifiques, comme le font les signatures standard. La détection de ces types d’attaques nécessite des approches plus sophistiquées et plus gourmandes en ressources, telles que le filtrage heuristique et les systèmes de modèles de sécurité positifs. Les regards de filtrage heuristique, non pas pour des modèles spécifiques, mais pour des modèles de comportements. Les systèmes de modèles de sécurité positifs modélisent le comportement normal du site Web ou du service Web qu’ils protègent, puis bloquent les connexions qui ne correspondent pas à ce modèle d’utilisation normale. Les contrôles de sécurité basés sur les URL et les formulaires Web permettent de déterminer l’utilisation normale de vos sites Web, puis de contrôler la façon dont les utilisateurs interagissent avec vos sites Web, en utilisant à la fois des heuristiques et une sécurité positive pour bloquer le trafic anormal ou inattendu. Une sécurité heuristique et positive, bien conçue et déployée, peut détecter la plupart des attaques que les signatures manquent. Cependant, ils nécessitent beaucoup plus de ressources que les signatures, et vous devez passer du temps à les configurer correctement pour éviter les faux positifs. Ils sont donc généralement utilisés, non pas comme ligne de défense principale, mais comme sauvegardes de signatures ou d’autres approches moins gourmandes en ressources.

En configurant ces protections avancées en plus des signatures, vous créez un modèle de sécurité hybride qui permet au Web App Firewall de fournir une protection complète contre les attaques connues et inconnues.

Sécurité des applications Web