À l’ère numérique moderne, la technologie fait partie intégrante de notre quotidien. Cependant, l’utilisation des applications web comporte de sérieuses menaces. Les risques liés aux logiciels peuvent provenir de diverses sources, mais l’une des plus répandues est l’utilisation de composants open-source ou tiers vulnérables.
Bien que les bibliothèques, packages et frameworks open-source publics aient amélioré le processus de développement logiciel moderne, les failles de sécurité dans les composants ont ouvert la porte à des activités potentiellement malveillantes. Chaque jour, des hackers trouvent de nouvelles méthodes dévastatrices pour exploiter les vulnérabilités à des fins personnelles.
Si les développeurs de logiciels utilisent des composants non pris en charge et obsolètes, le logiciel devient vulnérable aux failles de sécurité. Une fois que vous détectez une vulnérabilité, les criminels l’ont peut-être déjà découverte — et travaillent activement à exploiter cette faille. Comment les hackers peuvent-ils exploiter cette vulnérabilité, vous demandez-vous ? C’est exactement ce dont nous allons discuter ici, entre autres choses. Alors, commençons !
Que sont les Composants Vulnérables et Obsolètes ?
Si un composant logiciel n’est plus maintenu, il est considéré comme un composant vulnérable et obsolète pouvant introduire de sérieux problèmes de sécurité. Que vous fassiez de la conception d’applications ou du développement web, vous pouvez écrire du code 100 % sécurisé et rester exposé aux vulnérabilités. La question se pose : comment est-ce possible ? La réponse est simple — par l’utilisation de composants vulnérables.
Si les composants que vous utilisez dans le processus de construction logicielle sont obsolètes, non corrigés ou contiennent de graves défauts, votre organisation, vos clients et les utilisateurs de votre application deviendront des cibles faciles pour les hackers. Les acteurs malveillants peuvent exploiter ces failles pour prendre le contrôle du serveur, accéder aux données de l’application ou compromettre entièrement le système. Au fur et à mesure que les solutions logicielles changent et évoluent, les équipes de développement ont un besoin urgent de mettre à jour ou de remplacer les composants pour éviter une potentielle violation de sécurité.
En 2017, l’utilisation de composants présentant des vulnérabilités connues se classait neuvième dans la liste OWASP des dix risques de sécurité les plus critiques pour les applications web. Ce problème est passé de la 9e à la 6e place dans le classement OWASP Top 10 actuel.
Attaques par Composants Vulnérables et Obsolètes
En raison du nombre croissant de vulnérabilités, il existe un risque élevé d’utiliser par inadvertance des composants non pris en charge ou obsolètes. Voici quelques exemples pratiques illustrant comment l’utilisation de composants non pris en charge peut influencer la sécurité de votre code. Prêt à découvrir ? C’est parti !
Dépendances obsolètes ou vulnérables
La réutilisation de composants inconnus ou non fiables peut entraîner des vulnérabilités de sécurité. Par exemple, OWASP WebGoat utilise une version vulnérable de la bibliothèque open-source Xstream pour convertir un document XML en objet Java.
Faites attention à la version de la bibliothèque — 1.4.5. Elle souffre d’une vulnérabilité de désérialisation de haute gravité, qui permet l’exécution de code à distance (RCE) — l’une des attaques les plus graves possibles.
Le code ci-dessous créera le fichier /tmp/here sur le conteneur docker :
<sorted-set>
<string>foo</string>
<dynamic-proxy>
<interface>java.lang.Comparable</interface>
<handler class='java.beans.EventHandler'>
<target class='java.lang.ProcessBuilder'>
<command>
<string>touch</string><string>/tmp/here</string>
</command>
</target>
<action>start</action>
</handler>
</dynamic-proxy>
</sorted-set>
Composants malveillants et typosquatting
Il arrive que des développeurs de logiciels utilisent par inadvertance un composant malveillant similaire à un composant légitime. Ce concept est appelé typosquatting — la pratique consistant à délibérément mal orthographier un nom célèbre à des fins malveillantes. C’est une technique répandue que les acteurs malveillants utilisent pour inciter des développeurs peu méfiants à télécharger le composant malveillant.
Les exemples incluent « maratlib », « maratlib1 », « matplatlib-plus », « mllearnlib », « mplatlib » et « learninglib » sur PyPI (mauvaise orthographe du logiciel de traçage Python légitime matplotlib). Les autres composants malveillants utilisaient le package « maratlib » comme dépendance directe. Au total, les packages malveillants ont atteint près de 5 000 téléchargements.
Voici le cas du « learninglib » mentionné ci-dessus :
Les opérateurs malveillants ciblent continuellement les référentiels de code en ligne tels que PyPI (Python), NPM (JavaScript) et RubyGems, représentant une menace majeure pour la cybersécurité, car les développeurs peuvent intégrer le code malveillant dans leurs projets sans le savoir. Avec les techniques de typosquatting, les malfaiteurs peuvent créer des packages convaincants susceptibles de tromper même les développeurs les plus avertis.
Exemples de Vulnérabilités Réelles
Les composants vulnérables et obsolètes ont entraîné de graves conséquences pour les utilisateurs d’applications et de sérieux dommages réputationnels pour les entreprises. Cette vulnérabilité est une porte grande ouverte par laquelle les intrus peuvent facilement pénétrer dans le système et accéder à des données sensibles. Voici des exemples des violations les plus dévastatrices causées par l’OWASP A6 :
Les Panama Papers
Les Panama Papers sont considérés comme la plus grande violation jamais enregistrée en termes de volume de données divulguées. Des hackers ont dérobé des fichiers des systèmes informatiques du cabinet d’avocats panaméen et prestataire de services aux entreprises Mossack Fonseca. En 2016, c’était la quatrième plus grande entreprise mondiale de services financiers offshore.
La fuite de plus de 11 millions de documents confidentiels, dont 2,6 téraoctets d’informations appartenant à des politiciens de haut rang et à des personnalités publiques de plus de 50 pays, a été causée par l’exploitation de versions obsolètes et non corrigées de Drupal CMS et de WordPress.
Forums Ubuntu
En 2016, des auteurs de méfaits ont piraté une base de données du site web Ubuntu Forums. Les malfaiteurs ont exploité la faille d’injection SQL dans le module complémentaire Forum Runner pour vBulletin, qui n’avait pas encore été corrigé. En exploitant cette vulnérabilité, ils ont accédé à la table « user » du forum contenant les noms d’utilisateur, adresses e-mail et adresses IP de 2 millions d’utilisateurs enregistrés. Heureusement, les opérateurs malveillants n’ont pas obtenu les mots de passe valides des utilisateurs.
L’équipe Canonical IT a installé le pare-feu applicatif web (WAF) ModSecurity pour prévenir des cyberattaques similaires et a mis à jour les vulnérabilités des composants vBulletin au dernier niveau de correctif.
Violation de données Equifax
La violation de données Equifax est l’une des attaques de hackers les plus célèbres liées à l’utilisation de composants obsolètes et vulnérables. En 2017, des attaquants ont profité de failles de sécurité dans les systèmes d’Equifax. Ils ont compromis les informations personnelles de 148 millions de consommateurs américains, telles que les prénoms et noms, numéros de téléphone, adresses domiciliaires, dates de naissance, numéros de permis de conduire et numéros de sécurité sociale.
Equifax n’a pas mis à jour son site web public avec la dernière version d’Apache Struts. L’entreprise n’a pas appliqué les correctifs de sécurité appropriés pour éliminer une vulnérabilité largement connue qui a permis la violation.
Détection des Composants Vulnérables et Obsolètes
Pour détecter l’utilisation de composants obsolètes contenant des vulnérabilités potentielles, vous devez identifier les technologies — collecter les noms, versions et autres spécificités des technologies utilisées par le logiciel. Les techniques comprennent :
- Analyse des éléments HTML. En règle générale, le trafic HTTP contient des cookies, des URL de redirection, des valeurs d’en-têtes, des informations de code de statut HTTP, et plus encore. Cependant, vous ne pouvez empêcher les activités non autorisées ou identifier les ressources réseau inutilisées que si vous savez analyser ces informations. Vous pouvez utiliser des extensions de navigateur pour voir les technologies utilisées sur les sites web que vous visitez en fonction des composants et des en-têtes de la page HTML.
- Déclenchement d’erreurs. La pratique consistant à stresser l’application et à déclencher des erreurs détaillées peut vous donner des indications sur les technologies utilisées. Grâce au fuzzing, une technique de test logiciel automatisé, vous pouvez trouver des erreurs de codage et des failles de sécurité en alimentant aléatoirement une application avec des données invalides, inattendues ou aléatoires.
- Navigation forcée. Cette méthode vise à fournir l’accès à des ressources non liées à l’application mais toujours présentes sur le serveur. Elle vous permet de rechercher dans le répertoire du domaine d’anciens fichiers de configuration, des portails de connexion typiques et des fichiers README contenant des informations sur l’archive du logiciel et éventuellement le nom et la version des composants.
- Code source. Si vous êtes autorisé à accéder au code source de l’application, vérifiez la liste des dépendances pour voir les packages utilisés dans le projet.
Prévention et Atténuation
Il est crucial pour les organisations de prendre conscience des risques liés à l’utilisation de composants vulnérables et de suivre les directives pertinentes pour les éliminer. En matière de cybersécurité, la sensibilisation est votre meilleure défense. Explorons quelques-uns des mécanismes préventifs les plus efficaces. Voici !
Activer l’analyse de composition logicielle
L’analyse de composition logicielle (SCA) est un processus automatisé qui analyse en profondeur les packages open-source incorporés dans le logiciel. Avec la SCA, les experts en sécurité peuvent identifier les risques et les vulnérabilités associés à l’utilisation de composants tiers introduits dans un projet.
Les outils SCA fournissent un inventaire complet des actifs logiciels d’un projet : tous les composants, leurs bibliothèques de support, ainsi que les dépendances directes et indirectes. La SCA sensibilise les développeurs aux problèmes de sécurité et aux faiblesses potentielles, leur permettant de créer des plans d’atténuation et de prendre les mesures nécessaires pour prévenir les activités illicites.
Installer des Pare-feu Applicatifs Web
Les pare-feu applicatifs web (WAF) aident à protéger les sites et applications web en plaçant un bouclier protecteur entre le système et Internet qui surveille le trafic HTTP.
Les WAF constituent une défense de sécurité critique contre divers vecteurs d’attaque, notamment l’injection SQL, l’inclusion de fichiers distants (RFI) et le cross-site scripting (XSS). Avec le bon WAF en place, les équipes de développement peuvent inspecter le trafic entrant et bloquer les requêtes HTTP malveillantes avant qu’elles n’atteignent l’application web ou l’utilisateur.
Même si votre application, service ou serveur est vulnérable, la solution WAF ne laissera pas passer les « requêtes malveillantes ».
Mettre en Place un Processus de Gestion des Correctifs
Les professionnels IT doivent formaliser leur approche de la gestion des correctifs pour se tenir au courant des nouveaux correctifs de sécurité publiés et améliorer les performances globales des logiciels. Une gestion appropriée des correctifs comprend l’identification et la priorisation des besoins en correctifs, l’obtention, le test et l’installation des correctifs pour mettre à jour ou réparer le code existant.
Les programmes, applications et systèmes embarqués ont tendance à présenter des problèmes techniques nécessitant des corrections rapides. Les correctifs peuvent être utilisés pour corriger des vulnérabilités, rectifier des erreurs et combler des failles de sécurité.
Le manque de mise à jour des composants en temps voulu représente un risque de sécurité significatif et laisse vos systèmes d’exploitation vulnérables aux attaques malveillantes. De plus, cela complique les mises à jour futures. En fonction du nombre de projets construits sur la même version de composant vulnérable, le temps nécessaire pour exécuter des tests et appliquer des correctifs augmenterait de façon exponentielle.
Effectuer des Tests de Pénétration
Les tests de pénétration sont une attaque planifiée sur un système d’information, où des experts en sécurité adoptent la même approche qu’un attaquant pour trouver des faiblesses et des vulnérabilités critiques. En recherchant proactivement des composants vulnérables, vous pouvez traiter les problèmes de cybersécurité et les corriger avant le déploiement du système.
Les tests de pénétration sont l’un des moyens les plus efficaces de maintenir la sécurité de votre système d’information grâce à une surveillance continue des vulnérabilités de sécurité web. Les testeurs d’intrusion professionnels de QAwerk utilisent des outils avancés pour examiner les applications cibles à la recherche de faiblesses et protéger les organisations contre les tentatives indésirables d’accès à leurs systèmes informatiques.
Comment Lutter contre la Vulnérabilité OWASP #6 ?
Les équipes de développement et les responsables de la sécurité ont besoin de mesures défensives pour entraver les activités malveillantes et s’assurer que leur organisation n’est pas exposée aux menaces de cybersécurité. Les moyens les plus pratiques pour traiter la vulnérabilité basée sur les composants comprennent :
- S’appuyer sur les normes de codage OWASP, SANS/CWE et CERT pour améliorer les performances des logiciels et réduire l’exposition aux vulnérabilités.
- Mettre en place des outils automatisés d’alerte et de correctifs pour garantir un processus de cycle de vie du développement logiciel sécurisé (SDLC) et donner à vos équipes de développement un aperçu des failles potentielles.
- Tenir un inventaire complet de tous les composants utilisés dans l’application pour s’assurer que seuls les éléments approuvés sont en place. Réviser et mettre à jour continuellement la liste.
- Préférer les packages signés pour minimiser le risque d’inclure un composant modifié et nuisible.
- Éliminer les composants, éléments, dossiers, fonctionnalités et dépendances obsolètes ou inutilisés pour réduire la possibilité de failles de sécurité.
- Analyser régulièrement les bibliothèques, composants et leurs dépendances pour détecter les faiblesses.
- N’inclure des composants que de sources officielles via des liens sécurisés et vérifier la conformité avec les normes et réglementations légales.
En Conclusion
Le monde d’aujourd’hui fonctionne grâce à la technologie. Les applications, solutions et plateformes logicielles touchent presque tous les aspects de nos vies. Pourtant, elles s’accompagnent également de risques de sécurité qui créent une opportunité pour les attaquants de causer de graves problèmes aux utilisateurs d’applications et aux organisations, même aux plus grandes et aux plus connues.
Des incidents se produisent, mais si vous êtes bien informé et préparé, vous pouvez faire face beaucoup plus efficacement aux vulnérabilités de sécurité web. C’est pourquoi les équipes de développement doivent concentrer leur attention sur les vulnérabilités hautement exploitables et à fort impact, et suivre des pratiques de développement logiciel sécurisé.
Connaître les vulnérabilités le plus tôt possible aide les praticiens de la sécurité à comprendre le problème et à élaborer la correction la plus sécurisée. Les développeurs de logiciels doivent prendre des mesures proactives pour atténuer les risques, éviter les attaques malveillantes et prévenir les violations contre l’organisation.