lundi, 06 avril 2020 09:44

Publier une application web - Risques cyber et bonnes pratiques

Écrit par

Dans l’actualité informatique, pas un jour sans que l’on évoque un nouvel incident de sécurité informatique, certains de ces incidents étant si important qu’ils sont même mentionnés dans les journaux grands publics. Ces dernières semaines on pensera notamment à la série d’attaque ransomwares, à l’attaque ciblant l’AP-HP en pleine crise du coronavirus, ou encore à cette fuite de donnée de 5,2 millions de clients de la chaîne hôtellière Mariott. L’actualité nous amène à nous questionner en permanence sur la sécurité des applications web. Qu’elles soient hébergées sur votre système d’information, ou chez un hébergeur, quels pourraient être les incidents de cybersécurité les concernant ? Quels impacts pour vous et comment se protéger ?

Nous vous proposons donc ce premier article pour introduire la cybersécurité.

Qu’est-ce que la cybersécurité ?

La sécurité ne pas doit rester une affaire de professionnel ou de fanatique. Les dispositifs de sécurité qu’ils soient techniques, humains ou organisationnels doivent se faire en réponse à un besoin de sécurité. Tout le monde aura des besoins de sécurité.

On distingue 4 types de besoins de sécurité - DICP - pour un service ou un actif d’un système d’information :

Disponibilité : Il doit être utilisable en tout temps, et en tous lieux, dans la limite des moyens mis en œuvre

 

Intégrité : Il ne doit pas être modifié ou altéré. On oublie bien souvent l’erreur, mais elle peut être une source d’incident de sécurité : copier-coller. Erreur de commande

 

Confidentialité : Il ne doit pas être accédé par quelqu’un n’ayant pas les droits nécessaires.

 

Preuve/ Traçabilité : On doit pouvoir remonter l’historique des accès, des modifications.

 

En fonction de votre domaine d’activité, de la réglementation applicable, vos besoins seront différents.

  • Un site d’échange de cryptomonnaie doit être accessible 24/24, 7j sur 7j. Une application de commande d’oeuf de Pâques pourrait accepter une coupure durant la période d’été.
  • De la même manière, un livre d’or d’un restaurant n’aura peu de besoins liés à la confidentialité vu que les commentaires doivent être public (sauf éventuellement les logs d’accès pouvant contenir des adresses IP, ou le code source de l’application) à l’inverse une application liée au domaine de la santé devra être en place des contrôles stricts avant de laisser accéder à l’information.

Faire de la sécurité informatique c’est donc ça, c’est mettre en place les solutions et organisations qui permettent de répondre à ces besoins.

Pour la suite de l’article, je vous propose de nous mettre dans une situation d’exemple : vous êtes une société qui vend et installe des portails électriques pour particuliers. Afin d’augmenter votre visibilité et vos ventes, vous souhaitez mettre en ligne un espace permettant à vos clients et prospects de se renseigner sur vos gammes et services, mais également de prendre rendez-vous, de demander des devis, et de déposer des avis, de suivre l’avancée de leurs dossiers, et même de payer en ligne les différentes échéances. Cet espace doit également être utilisé par vos employés pour traiter et mettre à jour les dossiers.

Nous sommes bien dans le cas d’une application web interactive qui doit être ouverte à tous et offrant la possibilité aux visiteurs d’interagir via des dépôts, téléchargements de fichiers et documents divers. On parlera alors d’application extranet, car publiée sur internet.

Que peut-il se passer : Acteurs cyber et risques ?

En cybersécurité, afin de se défendre, il est essentiel de savoir contre qui, et contre quoi nous cherchons à nous protéger. C’est la connaissance de la menace.

Dans la plupart des cas étudiés le “qui” est un attaquant physique dont les objectifs pourront varier en fonction du profil, mais le qui peut également être “une panne” ou un évènement complètement extérieur qui peuvent remettre en cause la disponibilité de votre application, un incendie, une panne technique peut impacter votre hébergeur, et dans ce cas, plus d’accès à votre application.

Revenons-en à nos attaquants physiques avec souvent des pulls à capuches : Qui sont-ils quels pourraient être leurs objectifs ?

On distingue 3 variétés d’acteurs aux objectifs et méthodes différents:

Qui

Cyberbercriminel

Hacktiviste

Cyberespion

Objectifs

En individu isolé ou en groupe mafieux, il recherche le gain monétaire,

Il utilise la visibilité que lui offre une cyber attaque pour transmettre son message ou une opinion politique ou parfois religieuse. Il s'attaque à toute cible qui pourrait lui donner la visibilité qu’ils recherchent. On retrouve dans l’actualité le terme de script kiddies pour évoquer les hacktivistes en apprentissage, on parle bien souvent d’individu jeune, mais avec des compétences bien réelles. Ils peuvent être tout aussi dangereux, mais avec une perception moindre des enjeux …
Ils jouent un jeu et laissent parfois des messages dans leurs attaques.

En individu free-lance ou attaché à un service de renseignement, il cherche à obtenir de l’information afin de prendre un avantage stratégique ou concurrentiel sur sa cible

Cible

Personnel ou professionnel

Les sites de gouvernements ou institutions publiques sont ses cibles privilégiées, cependant en 2015 à la suite des évènements de Charlie Hebdo une vague d’attaque ciblant des PME ou même des bibliothèques municipales a été observée

Il s'attaque aux institutions étatiques ou commerciales indiquées

Revenons à notre exemple d'un extranet client pour votre société d’installation de portail électrique. Quels pourraient être les actions de ces attaquants ?

Un cybercriminel pourrait :

  • Utiliser vos ressources CPU pour miner de la cryptomonnaie, via un composant vulnérable, une erreur dans un développement, l’attaquant pourrait exécuter des commandes sur votre infrastructure, et y rester si vous n’êtes pas en capacité de le détecter.

En quoi est-ce un incident de sécurité ?

  • Votre serveur est lent, l’application ne peut plus délivrer le service attendu.

Quel-est l’impact ?

  • Il est financier et organisationnel, cos clients quittent l’application sans aller jusqu’au bout, vous perdez des commandes. Vos installeurs ne peuvent pas accéder aux dossiers et perdent en productivité.
  • Utiliser vos services non sécurisés pour envoyer des mails à vos clients leur demandant de mettre à jours leurs informations personnelles ou es bancaires. Dans ce cas il faudra prouver que vous n’êtes pas à l'origine de ces courriers, même si ceux-ci proviennent de votre serveur.
    Et puis … attention aux risques d’atteintes à l’image, pas facile de se faire payer ses factures après ça. Encore une fois par cette attaque l’attaquant recherche le gain monétaire. Soit en volant des données bancaires directement ou en usurpant des données personnelles pouvant être monétisées par ailleurs.

En quoi est-ce un incident de sécurité ?

  • La confidentialité des données de vos clients est levée.

Quel est l’impact ?

  • Cet incident impacte votre image. L’image de votre entreprise est usurpée. Les clients peuvent perdre confiance.
  • Votre serveur est lent, l’application ne peut plus délivrer le service attendu. Vos clients quittent l’application sans aller jusqu’au bout.
 
  • Prendre en otage votre application. Votre application génère votre activité ; elle permet également à vos commerciaux de renseigner les commandes et à vos installateurs de suivre les dossiers. L’attaquant va alors profiter de ça pour vous extorquer une rançon en échange de celle-ci. Pour ce fait, il va chiffrer tout ou partie de votre application, vous obligeant ainsi à payer. On parle alors de ransomware ou rançongiciel, attaques majoritairement exécutées par messagerie, mais très en vogue ces derniers temps.

En quoi est-ce un incident de sécurité ?

  • La disponibilité de l’application est remise en cause. Vous ne pouvez plus l’utiliser.

Quel est l’impact ?

  • Impact financier tout d’abord, votre activité doit s’arrêter. L’attaquant peut avoir mis un message de rançon directement sur la homepage de l’application, impactant également l’image de l’entreprise
 

Un hacktiviste pourrait :

  • Utiliser vos ressources réseau pour mener des attaques par déni de service : on parle alors de Distributed Denial Of Service -DDoS. Après avoir compris vos infrastructures l’attaquant va surcharger un site une application victime afin de le rendre inutilisable. Il aura alors besoin de plusieurs centaines voire milieu de serveurs compris pour les faire coordonner et déclencher un flux important de trafic de manière simultanée.

En quoi est-ce un incident de sécurité ?

  • L’intégrité de votre infrastructure est remise en cause. Elle a été modifiée par l’attaquant pour lui permettre de mener son attaque.

Quel est l’impact ?

  • L’impact peut être légal, si l’attaquant passe par votre infrastructure c’est elle qui sera visible pour la victime.
 
  • Défacer la page d’accueil de votre site. Il s’agit d’en modifier le contenu pour transmettre un message, une opinion

En quoi est-ce un incident de sécurité ?

  • L’intégrité de votre infrastructure est remise en cause. Elle a été modifiée par l’attaquant pour lui permettre de transmettre son message.

Quel est l’impact ?

  • Impact d’image, votre site est modifié, et l’attaque est rendue publique.
 

Un cyber espion pourrait :

  • Voler les données de votre application sur commande d’un concurrent. Par l’exploitation d’un service, d’une api mal sécurisée, il pourrait accéder aux données de l’application et les extraire pour son usage.

En quoi est-ce un incident de sécurité ?

  • La confidentialité de vos brevets et/ou base marketing est remise en cause.

Quel est l’impact ?

  • Vous perdez votre avantage concurrentiel, vos concurrents utilisent cette base marketing pour vous volez des clients
 

Notons qu’il est parfois possible de combiner plusieurs actions. Par exemple un attaquant pourrait prendre la main sur votre site, s’en servir de rebond pour attaquer un deuxième site, et une fois fait activer une charge ransomware avant de partir.

Bien sûr ces attaques sont à pondérer en fonction de votre visibilité de votre secteur d’activité, le type et la quantité de données traitées. On cherchera à estimer pour chacune la probabilité d'occurrence, ainsi que l’impact de celle-ci pour votre activité. Ainsi vous pourrez vous concentrer sur les attaques les plus craintes. On appelle ceci la gestion du risque cyber.

Sécurité d’une application web, comment ? Les bonnes pratiques

Comment pouvoir empêcher tous ces scénarios plus ou moins fictifs d’arriver sur notre application web ? Il existe quelques bonnes pratiques, plus ou moins complexes à mettre en œuvre et qui pourraient permettre de limiter la probabilité. Notons que “le risque 0” n’existe pas, il est impossible de garantir à 100% qu’il n’arrivera rien. Nous reviendrons à la suite dans différents articles sur certaines de ces mesures.

Architecture :

  1. Ne pas exposer directement un serveur web, utiliser un reverse proxy (ou serveur mandataire inverse), afin d’effectuer une rupture protocolaire. Ainsi ce n’est pas votre serveur web (IIS, Apache, Nginx, Tomcat) qui est visible. De cette manière vous pouvez :
    • Limiter connexions attaquants / cible
    • Disposer d’une meilleure visibilité
    • Filtrer les entrées de l’utilisateur
    • Faciliter la haute disponibilité
  2. Limiter les services exposés au strict nécessaire : les services d’administrations (SSH, RDP, SNMP etc.) peuvent être filtrés pour limiter leurs utilisations :
    • Aux interfaces privées si vous disposez d’un réseau d’administration interne dédié
    • À des adresses IP publiques précises : Utilisez à minima 2 adresses différentes.

Sur la même thématique, une base de données ne doit pas être exposée sur son interface publique.

Patch Management

Appliquez régulièrement les mises à jour des composants exposés : services de publication, application, plug-in de votre CMS. Ceci vous permettra de limiter les compromissions de votre service par des vulnérabilités connues. Pour cela, listez vos composants installés, effectuez de la veille sur les vulnérabilités et patchs sorties, et patchez !

 Traiter un incident c’est d’abord le détecter

Le risque 0 n’existe pas. Personne ne pourra vous garantir qu’il n’arrivera jamais rien à votre application ou service publié. Cependant, le meilleur moyen de limiter les impacts de l’incident, c’est de le détecter le plus rapidement. Ainsi, la supervision et l’installation d’une solution antimalware sur vos systèmes exposés pourraient vous permettre de détecter :

  • Des hausses de consommation CPU, réseau, I/O disque
  • Des nouveaux fichiers potentiellement malveillants
  • L’état des différents services
  • Des tentatives de connexion trop nombreuses et mettre en place du blocage dynamique,qui seraient alors synonyme d’incident, ou de tentative de brut force.

Sécurité applicative

Si nous avons beaucoup évoqué la sécurité des systèmes et middleware, la couche applicative doit également être sécurisée pour éviter les SQLi, XSS, CSRF et autres membres du Top 10 OWASP:

Quelques règles simples doivent être appliquées dès que du développement customisé est entrepris :

  • Gérer les accès utilisateur :
    • Imposez une authentification forte, et stockez les mots de passe de manière sécurisée (application de fonction de hachage robustesse avec sel).
    • A chaque accès utilisateur à une fonction, une page vérifiez que celui lui est autorisé, utilisation de liste blanche permettant de définir de manière stricte : qui a le droit de faire quoi.
  • Ne jamais faire confiance à une entrée utilisateur, et validez le contenu par rapport aux attentes : Utilisez des requêtes préparées, n’acceptez que les caractères [0-9] pour un numéro de téléphone pas, et n'interprétez pas les champs “libre” comment les commentaires.
    « 75% des attaques exploitent une vulnérabilité applicative » - Gartner
  • Ne jamais réinventer la roue quand on cherche à implanter la sécurité.
    Ceci est particulièrement vrai dans l’implémentation de la cryptographie. Il existe pour chaque usage des protocoles et implémentation étudiés et validés par la communauté. Les utiliser c’est limiter le risque d’erreur de développement qui pourrait permettre à un attaquant de contourner les objectifs de sécurité initiaux.

En conclusion, publier une application ou un service sur internet, c’est le rendre accessible à tous, y compris des acteurs aux intentions malveillantes. L’application de bonne pratique, doit vous permettre de vous protéger contre les attaques les plus simples. Pour se protéger « Espérer le meilleur mais toujours envisager le pire » permettra de parer les attaques, mais également à se préparer si elles arrivent.

Éléments similaires (par tag)