10 principaux types de vulnérabilités de sécurité

10 principaux types de vulnérabilités de sécurité
Un défaut involontaire ou accidentel dans le code logiciel ou tout système qui le rend potentiellement exploitable en termes d'accès aux utilisateurs illégitimes, à des comportements malveillants comme les virus, les chevaux de Troie, les vers ou tout autre logiciel malveillant est appelé une vulnérabilité de sécurité. L'utilisation de logiciels qui a déjà été exploités ou l'utilisation de mots de passe faibles et par défaut entraîne également de rendre le système vulnérable au monde extérieur. Ces types de vulnérabilités de sécurité nécessitent des correctifs pour empêcher les pirates d'utiliser à nouveau des exploits précédemment utilisés pour obtenir un accès non autorisé au système. Une vulnérabilité de sécurité également appelée trou de sécurité ou faiblesse est un défaut, un bogue ou un défaut dans l'implémentation du code, de la conception et de l'architecture d'une application Web et des serveurs qui, lorsqu'ils sont laissés non traités, peuvent entraîner un compromis du système et fait le réseau entier vulnérable à l'attaque. Les personnes qui vont être infectées comprennent le propriétaire de l'application, les utilisateurs de l'application et toute autre personne qui s'appuie sur cette application. Examinons les risques de sécurité les plus dangereux et les plus courants pour les applications Web.

Table des matières

  1. Injection de base de données
  2. Authentification cassée
  3. Exposition aux données sensibles
  4. Entités externes XML (XEE)
  5. Contrôle d'accès cassé
  6. Merfection de sécurité
  7. Script inter-sites (XSS)
  8. Désérialisation peu sûre
  9. Utilisation de composants avec des vulnérabilités connues
  10. Journalisation et surveillance insuffisantes

Injection de base de données:

En cas d'envoi de données non fiables à l'interprète dans le cadre de la commande via n'importe quel domaine qui prend l'entrée de l'utilisateur I.E Entrée du formulaire ou toute autre zone de soumission de données, des défauts d'injection se produisent. Les requêtes malveillantes de l'attaquant peuvent inciter l'interprète à exécuter des commandes qui peuvent afficher des données confidentielles que l'utilisateur n'a aucune autorisation de consulter. Par exemple, dans une attaque par injection SQL, lorsque l'entrée de formulaire n'est pas correctement désinfectée, l'attaquant peut entrer la base de données SQL et accéder à son contenu sans autorisation, simplement en entrant le code de base de données SQL malveillant dans une forme qui s'attend à un texte clair. Tout type de champ qui prend l'entrée de l'utilisateur est injectable i.E paramètres, variables d'environnement, tous les services Web, etc.

L'application est vulnérable à l'attaque d'injection lorsque les données fournies par l'utilisateur ne sont pas désinfectées et validées, par l'utilisation de requêtes dynamiques sans échapper au contexte et l'utilisation de données hostiles directement. Les défauts d'injection peuvent facilement être découverts par l'examen du code et par l'utilisation d'outils automatisés comme les scanners et les fuzzers. Pour empêcher les attaques d'injection, il existe une certaine mesure qui peut être prise comme séparer les données des commandes et des requêtes, l'utilisation d'une API sûre qui fournit une interface paramétrée, l'utilisation de la validation d'entrée côté serveur «liste blanc» via des outils comme Snort, Échappement de caractères spéciaux en utilisant une syntaxe d'évasion spécifique, etc.

Une attaque par injection peut entraîner une perte de données massive, une divulgation d'informations confidentielles, un refus d'accès et il peut même conduire à une prise de contrôle complète de l'application. Certains contrôles SQL comme Limit peuvent être utilisés pour contrôler d'énormes quantités de perte de données en cas d'attaque. Certains types d'attaques d'injection sont les attaques SQL, OS, NoSQL, LDAP.

Authentification cassée:

Les attaquants peuvent accéder aux comptes d'utilisateurs et peuvent même compromettre l'ensemble du système hôte via des comptes d'administration, en utilisant les vulnérabilités des systèmes d'authentification. Les défauts d'authentification permettent à l'attaquant de compromettre les mots de passe, les jetons de session, les clés d'authentification et peut être enchaîné avec d'autres attaques qui peuvent conduire à un accès non autorisé à tout autre compte d'utilisateur ou session temporairement et, dans certains cas, en permanence. Disons qu'un utilisateur a une liste de mots ou un dictionnaire de millions de noms d'utilisateurs et de mots de passe valides obtenus lors d'une violation. Il peut les utiliser un par un dans un temps extrêmement moins. Une mauvaise mise en œuvre de la gestion de l'identité et des contrôles d'accès conduit à des vulnérabilités comme l'authentification brisée.

L'application est vulnérable aux attaques d'authentification lorsqu'elle permet d'essayer de différents noms d'utilisateur et mots de passe, permet des attaques de dictionnaire ou des attaques de force brute sans aucune stratégie de défense, utilisez des mots de passe ou des mots de passe par défaut faciles et par défaut qui sont divulgués dans une violation, expose les identifiants de session dans URL, URL URL Schéma de récupération de mot de passe pauvre, utilise un modèle de cookies. L'authentification brisée peut être exploitée facilement à l'aide d'outils simples pour les attaques de forçage brute et de dictionnaire avec un bon dictionnaire. Ces types d'attaques peuvent être empêchés à l'aide de systèmes d'authentification multi-facteurs, en implémentant des vérifications de mot de passe faibles en exécutant un mot de passe via une base de données de mauvais mots de passe, en n'utilisant pas les informations d'identification par défaut, en alignant la stratégie de complexité de mot de passe, en utilisant un bon côté serveur Gestionnaire de session qui génère une nouvelle session aléatoire après la connexion, etc.

La vulnérabilité d'authentification cassée peut entraîner un compromis quelques comptes d'utilisateurs et un compte d'administration, c'est-à-dire qu'un attaquant a besoin pour compromettre un système. Ces types d'attaques conduisent à un vol d'identité, à la fraude à la sécurité sociale, à un blanchiment d'argent et à la divulgation d'informations hautement classifiées. Les attaques incluent les attaques de dictionnaire, les forces brutes, le détournement de session et les attaques de gestion de session.

Exposition aux données sensibles:

Parfois, les applications Web ne protègent pas les données sensibles et les informations comme les mots de passe, les informations d'identification de la base de données, etc. Un attaquant peut facilement voler ou modifier ces informations d'identification faiblement protégées et l'utiliser à des fins illégitimes. Les données sensibles doivent être cryptées au repos ou en transit et avoir une couche de sécurité supplémentaire sinon les attaquants peuvent le voler. Les attaquants peuvent mettre la main sur les données exposées sensibles et voler des utilisateurs de texte hachés ou effacer les utilisateurs et les informations d'identification de la base de données sur le serveur ou un navigateur Web. Par exemple, si une base de données de mots de passe utilise des hachages non salés ou simples pour stocker les mots de passe, une faille de téléchargement de fichiers peut permettre à un attaquant de récupérer la base de données de mots de passe qui entraînera une exposition de tous les mots de passe avec une table arc-en-ciel de hachages pré-calculés.

Le défaut principal n'est pas seulement que les données ne sont pas cryptées, même si elles sont cryptées, mais une génération de clés faible, des algorithmes de hachage faibles, une faible utilisation du chiffre peut également entraîner ces types de l'une des attaques les plus courantes. Pour empêcher ces types d'attaques, tout d'abord, classer quel type de données peut être considéré comme sensible selon les lois sur la confidentialité et appliquer des contrôles selon la classification. Essayez de ne pas stocker de données classifiées dont vous n'avez pas besoin, lavez-la dès que vous l'utilisez. Pour les données en transit, cryptez-les avec des protocoles sécurisés I.E TLS avec des chiffres PFS, etc.

Ces types de vulnérabilités peuvent entraîner l'exposition d'informations très sensibles comme les informations d'identification de carte de crédit, les dossiers de santé, les mots de passe et toute autre données personnelles qui peuvent conduire à un vol d'identité et à une fraude bancaire, etc.

Entités externes XML (XEE):

Processus de processeurs XML mal configurés. Ces entités externes peuvent être utilisées pour récupérer les données des fichiers internes comme / etc / passwd déposer ou effectuer d'autres tâches malveillantes. Les processeurs XML vulnérables peuvent facilement être exploités si un attaquant peut télécharger un document XML ou inclure XML, etc. Ces entités XML vulnérables peuvent être découvertes à l'aide d'outils de Sast et de Dast ou manuellement en inspectant les dépendances et les configurations.

Une application Web est vulnérable à l'attaque XEE pour de nombreuses raisons telles que si l'application accepte l'entrée XML directe de sources non fiables, les définitions de type de documents (DTD) sur l'application sont activées, l'application utilise SAML pour le traitement d'identité car SAML utilise XML pour l'identité insertions, etc. Les attaques XEE peuvent être atténuées en évitant la sérialisation des données sensibles, en utilisant des formats de données moins compliqués I.e json, correction des processeurs XML L'application est en utilisant et même les bibliothèques, désactivant les DTD dans tous les analyseurs XML, validation des fonctionnalités de téléchargement de fichiers XML à l'aide de la vérification XSD, etc.

L'application vulnérable à ces types d'attaques peut entraîner des attaques DOS, l'attaque de Billion Laughs, la numérisation des systèmes internes, la numérisation de port interne, l'exécution d'une commande distante qui se traduit par affecter toutes les données d'application.

Contrôle d'accès cassé:

Le contrôle d'accès donne aux utilisateurs les privilèges pour effectuer des tâches spécifiques. La vulnérabilité du contrôle d'accès cassé a lieu lorsque les utilisateurs ne sont pas correctement limités sur les tâches qu'ils peuvent effectuer. Les attaquants peuvent exploiter cette vulnérabilité qui peut finir par accéder à des fonctionnalités ou des informations non autorisées. Disons qu'une application Web permet à l'utilisateur de modifier le compte qu'il est connecté à partir de simplement en modifiant l'URL vers le compte d'un autre utilisateur sans autre vérification. L'exploitation de la vulnérabilité du contrôle d'accès est une attaque incontournable de tout attaquant, cette vulnérabilité peut être trouvée manuellement ainsi qu'en utilisant des outils SAFT et Daft. Ces vulnérabilités existent en raison d'un manque de tests et de détection automatisée d'applications Web, bien que la meilleure façon de les trouver est de le faire manuellement.

Les vulnérabilités contiennent l'escalade des privilèges I.E agissant en tant qu'utilisateur que vous n'êtes pas ou agir en tant qu'administrateur pendant que vous êtes un utilisateur, en contournant les vérifications du contrôle d'accès simplement en modifiant l'URL ou en modifiant l'état de l'application, la manipulation des métadonnées, en permettant à la clé principale d'être modifiée en tant que clé principale d'un autre utilisateur, etc. Pour éviter ces types d'attaques, les mécanismes de contrôle d'accès doivent être implémentés dans le code côté serveur où les attaquants ne peuvent pas modifier les contrôles d'accès. Application des limites commerciales uniques des applications par les modèles de domaine, désactivation des répertoires de serveurs Listing, alerte admin sur les tentatives de connexion ratées répétées, l'invalidation des jetons JWT après la déconnexion doit être assurée d'atténuer ces types d'attaques.

Les attaquants peuvent agir comme un autre utilisateur ou administrateur en utilisant cette vulnérabilité pour effectuer des tâches malveillantes comme la création, la suppression et la modification des enregistrements, etc. Une perte de données massive peut se produire si les données ne sont pas sécurisées même après une violation.

Merfection de sécurité:

La vulnérabilité la plus courante est la mauvaise configuration de la sécurité. La principale raison de la vulnérabilité est l'utilisation de la configuration par défaut, de la configuration incomplète, des configurations ADHOC, des en-têtes HTTP mal configurés et des messages d'erreur verbeux contenant plus d'informations que l'utilisateur aurait dû réellement savoir. À n'importe quel niveau d'une application Web, les erreurs de sécurité peuvent se produire i.E Base de données E, serveur Web, serveur d'applications, services réseau, etc. Les attaquants peuvent exploiter des systèmes non corrigées ou accéder aux fichiers et répertoires non protégés pour avoir une prise non autorisée sur le système. Par exemple, une application messages d'erreur excessivement verbeux qui aident l'attaquant à connaître les vulnérabilités du système d'application et la façon dont elle fonctionne. Les outils et scanners automatisés peuvent être utilisés pour détecter ces types de défauts de sécurité.

Une application Web contient ce type de vulnérabilité s'il manque les mesures de durcissement de sécurité dans n'importe quelle partie de l'application, les ports inutiles sont ouverts ou il permet des fonctionnalités inutiles, les mots de passe par défaut sont utilisés, la gestion des erreurs révèle des erreurs informatives à l'attaquant, il utilise qu'il utilise logiciel de sécurité non corrigé ou obsolète, etc. Il peut être évité en supprimant les fonctionnalités inutiles du code, i.e une plate-forme minimale sans fonctionnalités, documentation, etc. il est facile de déployer un autre environnement correctement verrouillé.

Ces types de vulnérabilités ou de défauts permettent à l'attaquant d'obtenir un accès non autorisé aux données du système, ce qui entraîne le compromis complet du système.

Scripting inter-sites (XSS):

Les vulnérabilités XSS se produisent au moment où une application Web intègre des données non fiables dans une nouvelle page de site Web sans approbation ou échappement légitime, ou rafraîchisse une page de site actuelle avec des données fournies par le client, en utilisant une API de navigateur qui peut faire du HTML ou du javascript. Les défauts XSS se produisent dans le cas où le site Web permet à un utilisateur d'ajouter du code personnalisé dans un chemin d'URL qui peut être vu par d'autres utilisateurs. Ces défauts sont utilisés pour exécuter un code JavaScript malveillant sur le navigateur de la cible. Disons, un attaquant peut envoyer un lien vers la victime contenant un lien vers le site Web d'une entreprise. Cette connexion pourrait contenir un code JavaScript malveillant intégré, au cas où la page Web de la banque n'est pas correctement sécurisée par rapport aux attaques XSS, en cliquant sur le lien, le code malveillant sera exécuté sur le navigateur de la victime.

Les scripts croisés sont une vulnérabilité de sécurité qui est présente dans presque ⅔ des applications Web. Une application est vulnérable à XSS si l'application stocke une entrée utilisateur non animée qui peut être vue par un autre utilisateur, par l'utilisation de structures JavaScript, d'applications à une page et des API qui incorporent puissamment les informations contrôlables de l'attaquant à une page sont impuissantes contre DOM XSS. Les attaques XSS peuvent être atténuées par l'utilisation de frameworks qui échappent et désinfectent les entrées XSS par nature comme React JS, etc., apprenant les limites des cadres et les couvrir en utilisant ses propres cas, échappant.E Dans les attributs HTML, URI, JavaScript, etc., utilisation du codage sensible au contexte en cas de modification du document sur côté client, etc.

Les attaques basées sur les XSS sont de trois types I.E reflété XSS, DOM XSS et XSS stockés. Tous les types de ces attaques ont une quantité importante d'impact mais dans le cas des XS stockés, l'impact est encore plus important i.E volant des informations d'identification, envoi de logiciels malveillants à la victime, etc.

Désérialisation peu sûre:

La sérialisation des données signifie prendre des objets et les convertir en n'importe quel format afin que ces données puissent être utilisées à d'autres fins plus tard, tandis que la désérialisation des données signifie l'opposé de cela. La désérialisation déballait ces données sérialisées pour l'utilisation des applications. La désérialisation en insécurité signifie la température des données qui ont été sérialisées juste avant cela est sur le point d'être déballé ou désérialisé. La désérialisation en insécurité conduit à l'exécution du code distant et il est utilisé pour effectuer d'autres tâches à des fins malveillantes comme l'escalade des privilèges, les attaques d'injection, les attaques de relecture, etc. Il existe des outils disponibles pour découvrir ces types de défauts, mais l'aide humaine est fréquemment nécessaire pour valider le problème. Exploiter la désérialisation est un peu difficile car les exploits ne fonctionneront pas sans certains changements manuels.

Lorsque l'application désérialise les objets malveillants fournis par l'entité attaquante. Cela peut conduire à deux types d'attaques I.E Attaques liées à la structure des données et aux objets dans lesquels l'attaquant modifie la logique d'application ou exécute le code distant et les attaques de falsification des données typiques dans lesquelles les structures de données existantes sont utilisées avec un contenu modifié, par exemple les attaques liées au contrôle d'accès. La sérialisation peut être utilisée dans la communication de processus à distance (RPC) ou une communication inter-processus (IPC), la mise en cache des données, les services Web, le serveur de cache de bases de données, les systèmes de fichiers, les jetons d'authentification API, les cookies HTML, les paramètres de formulaire HTML, etc. Les attaques de désérialisation peuvent être atténuées en n'utilisant pas d'objets sérialisés à partir de sources non fiables, en mettant en œuvre des vérifications d'intégrité, en isolant le code exécuté dans un environnement privilégié faible, en surveillant les connexions réseau entrantes et sortantes à partir de serveurs qui désérialisent fréquemment fréquemment.

Utilisation de composants avec des vulnérabilités connues:

Différents composants comme les bibliothèques, les cadres et les modules logiciels sont utilisés par la plupart des développeurs de l'application Web. Ces bibliothèques aident le développeur à éviter un travail inutile et à fournir la fonctionnalité nécessaire. Les attaquants recherchent des défauts et des vulnérabilités dans ces composants pour coordonner une attaque. En cas de recherche d'une faille de sécurité dans un composant, peut faire de tous les sites en utilisant le même composant, vulnérable. Les exploits de ces vulnérabilités sont déjà disponibles lors de l'écriture d'un exploit personnalisé à partir de zéro demande beaucoup d'efforts. Il s'agit d'un problème très courant et répandu, l'utilisation de grandes quantités de composants dans le développement d'une application Web peut conduire à ne pas savoir et à comprendre tous les composants utilisés, le correctif et la mise à jour de tous les composants est un long coup.

Une application est vulnérable si le développeur ne connaît pas la version d'un composant utilisé, le logiciel est obsolète i.e Le système d'exploitation, le SGBDS, l'exécution des logiciels, les environnements d'exécution et les bibliothèques, la numérisation de la vulnérabilité ne se fait pas régulièrement, la compatibilité des logiciels correctifs n'est pas testé par les développeurs. Il peut être évité en supprimant régulièrement les dépendances, les fichiers, la documentation et pour mettre à jour et corriger régulièrement les composants vulnérables.

Ces vulnérabilités entraînent des impacts mineurs mais peuvent également entraîner une compromisation du serveur et du système. De nombreuses violations importantes reposaient sur des vulnérabilités connues des composants. L'utilisation de composants vulnérables sape les défenses des applications et peut être un point de départ pour une grande attaque.

Journalisation et surveillance insuffisantes:

La plupart des systèmes ne prennent pas suffisamment de mesures et de mesures pour détecter les violations de données. Le temps de réponse moyen d'un incident est de 200 jours après son arrivée, c'est beaucoup de temps pour faire toutes les choses désagréables pour une entité attaquante. L'enregistrement et la surveillance insuffisants permettent à l'attaquant d'attaquer davantage le système, de maintenir sa prise sur le système, d'altérer, de maintenir et d'extraire les données selon le besoin. Les attaquants utilisent le manque de surveillance et de réponse en leur faveur pour attaquer l'application Web.
L'enregistrement et la surveillance insuffisants se produisent à tout moment je.E Les journaux des applications n'étant pas surveillés pour des activités inhabituelles, des événements vérifiables tels que les tentatives de connexion ratés et les valeurs élevées de transaction ne sont pas correctement enregistrées, les avertissements et les erreurs génèrent des messages d'erreur peu clairs, aucune alerte de déclenchement en cas de pentistage à l'aide d'outils de DAST automatisés, étant incapables de détecter ou alerter rapidement les attaques actives, etc. Ceux-ci peuvent être atténués en s'assurant que toutes les échecs de connexion, le contrôle d'accès et la validation des entrées côté serveur peuvent être enregistrés pour identifier le compte d'utilisateur malveillant et détenu pendant suffisamment de temps pour une enquête médico-légale retardée, en s'assurant que les journaux générés sont dans un format Compatible avec les solutions de gestion des journaux centralisés, en assurant des vérifications d'intégrité lors de transactions de grande valeur, en établissant un système pour des alertes opportunes d'activités suspectes, etc.

La plupart des attaques réussies commencent par vérifier et sonder des vulnérabilités dans un système, ce qui permet à ces sondages de vulnérabilité puisse entraîner un compromis tout le système.

Conclusion:

Les vulnérabilités de sécurité dans une application Web affectent toutes les entités liées à cette application. Ces vulnérabilités doivent être prises en charge pour fournir un environnement sûr et sécurisé aux utilisateurs. Les attaquants peuvent utiliser ces vulnérabilités pour compromettre un système, la saisir et augmenter les privilèges. L'impact d'une application Web compromise peut être visualisé à partir des informations d'identification de carte de crédit volées et de vol d'identité à la fuite d'informations hautement confidentielles, etc. Selon les besoins et les vecteurs d'attaque des entités malveillantes.