Simple Science

La science de pointe expliquée simplement

# Informatique# Cryptographie et sécurité

Améliorer la détection des vulnérabilités dans les logiciels

Une nouvelle méthode améliore la précision pour identifier les vulnérabilités des logiciels.

― 7 min lire


Améliorer la précision deAméliorer la précision dela sécurité des logicielslogiciels.détection des vulnérabilités dans lesUne nouvelle méthode améliore la
Table des matières

Trouver des failles ou des faiblesses dans les logiciels est super important pour maintenir leur qualité et leur sécurité. Ces failles peuvent causer des soucis de sécurité, car elles peuvent être exploitées par des attaquants. Beaucoup de ces failles apparaissent à cause de la réutilisation de code dans différents produits logiciels, surtout quand des bibliothèques tierces sont largement utilisées.

Les Vulnérabilités réapparaissent souvent dans les nouvelles versions des logiciels parce que les développeurs ne corrigent pas toutes les failles de manière efficace. Les experts en cybersécurité ont besoin de moyens pour identifier ces vulnérabilités répétées, en particulier celles qui sont bien connues, souvent appelées vulnérabilités à 1 jour ou N jours. Détecter ces problèmes devient essentiel pour garder le logiciel sécurisé.

Malheureusement, les méthodes existantes pour détecter les vulnérabilités ne fonctionnent pas toujours bien. Beaucoup de méthodes se basent sur le fait de vérifier si un correctif existe pour une vulnérabilité plutôt que de confirmer si une vulnérabilité est vraiment présente. De plus, elles déduisent souvent les signatures de vulnérabilité directement à partir du code binaire, ce qui peut mener à des inexactitudes. Cet article explique une nouvelle approche pour extraire et identifier les vulnérabilités en utilisant ces signatures binaires de manière plus précise.

Les Défis de la Détection des Vulnérabilités

Les experts humains peuvent analyser de nombreuses vulnérabilités existantes et apprendre à identifier des failles similaires dans le code. Cependant, avec la quantité énorme de code disponible, il est difficile pour un humain de tout passer en revue manuellement. Ça crée une demande pour des solutions automatisées qui peuvent repérer les vulnérabilités potentielles directement ou réduire le code pour une révision humaine.

Un défi majeur est que le code binaire, qui est le code au niveau machine que les ordinateurs exécutent, est super compliqué à comprendre pour les humains. Il est essentiel de s'appuyer sur des méthodes automatisées pour effectuer cette tâche afin de réduire les erreurs humaines et d'améliorer l'efficacité.

Il y a généralement trois types de recherche principaux dans ce domaine :

  1. Détection de Similarité de Code Binaire : Cela consiste à comparer des échantillons binaires pour trouver les morceaux de code les plus similaires dans une base de données de vulnérabilités connues. Cependant, cette méthode est souvent limitée car elle peut produire beaucoup de faux positifs et ne pointe pas des Instructions spécifiques liées aux vulnérabilités.

  2. Détection de l'Existence de Correctifs : Cette approche vérifie si un correctif a été appliqué à un morceau de code. Cependant, juste parce qu'il n'y a pas de correctif ne veut pas dire qu'il n'y a pas de vulnérabilité présente. De nombreux codes vulnérables peuvent exister dans des versions antérieures qui n'ont pas encore été corrigées.

  3. Détection de Signatures de Vulnérabilités : Cette méthode identifie des signatures spécifiques dans le code binaire qui correspondent à des vulnérabilités connues. Cependant, comparer directement des versions binaires peut mener à des instructions non pertinentes considérées comme partie de la signature de vulnérabilité.

Pour améliorer l'exactitude de ces méthodes, de nouvelles approches sont nécessaires pour détecter efficacement l'existence de vulnérabilités basées sur des signatures plus précises.

Une Nouvelle Approche pour la Détection des Vulnérabilités

L'approche proposée vise à générer des signatures de vulnérabilité précises et détaillées. Cette nouvelle méthode se concentre sur l'extraction d'instructions binaires spécifiques liées aux vulnérabilités pour créer des signatures de vulnérabilité définitives.

Étape 1 : Rassembler des Données

La première étape consiste à rassembler des données sur les vulnérabilités connues, y compris des infos sur les fichiers source correspondants. Ces informations comprennent les fonctions affectées par les vulnérabilités, quelles versions ont été impactées, et quelles versions ont eu des correctifs.

Étape 2 : Localiser les Instructions Binaires Liées

Pour améliorer la précision, l'approche extrait des instructions du code source liées aux vulnérabilités et les associe avec les instructions binaires correspondantes. Cette étape aide à identifier quelles instructions binaires concernent les vulnérabilités sans inclure de code non pertinent.

Étape 3 : Construire des Signatures Contextuellement Sensibles

Une fois les instructions binaires pertinentes identifiées, l'approche crée des signatures qui tiennent compte du contexte dans lequel elles se trouvent. Ces signatures capturent non seulement les instructions vulnérables mais aussi leur contexte environnant, ce qui aide à réduire les faux positifs lors des correspondances plus tard.

Étape 4 : Correspondre les Signatures

La dernière étape consiste à vérifier un binaire donné pour l’existence des signatures générées. Cette méthode ne cherche pas seulement des correspondances exactes mais évalue aussi le contexte autour des instructions pour identifier précisément les vulnérabilités.

Évaluer la Méthode

L'efficacité de cette nouvelle approche a été testée sur divers projets open-source, avec des résultats convaincants par rapport aux outils existants. La méthode a montré une meilleure précision dans l'identification des vulnérabilités dans du code connu et réel.

Comparaison avec les Outils Existants

Lorsqu'elle a été testée par rapport à des outils populaires, cette nouvelle approche les a surpassés en fournissant une détection de vulnérabilités plus précise tout en réduisant les faux positifs. Les utilisateurs de la méthode ont reçu des explications sur les correspondances effectuées, ce qui est utile pour comprendre pourquoi un morceau de code a été signalé comme potentiellement vulnérable.

Tests dans le Monde Réel

La méthode a été validée en utilisant des firmwares réels provenant d'appareils IoT. Ces dispositifs contiennent souvent des vulnérabilités connues à cause de la réutilisation de composants logiciels. Les résultats ont montré que cette méthode pouvait identifier avec succès des vulnérabilités dans des situations pratiques.

Les Types de Vulnérabilités Détectées

L'analyse a révélé divers types de vulnérabilités basées sur le Common Weakness Enumeration (CWE). Cette classification aide à comprendre les différents types de vulnérabilités qui sont apparues dans le logiciel testé.

Les principaux types de vulnérabilités détectées incluent :

  • Restrictions Incorrectes sur les Opérations de Buffer : Une vulnérabilité courante où les opérations sur les buffers mémoire ne sont pas correctement contrôlées.
  • Utilisation Après Libération : Une faille qui se produit lorsqu'un programme continue d'utiliser de la mémoire après qu'elle ait été libérée, ce qui peut entraîner un comportement imprévisible.

Conclusion

Détecter des vulnérabilités dans les logiciels reste une tâche cruciale pour assurer la sécurité et la qualité. Avec la dépendance accrue au code et aux bibliothèques tierces, les chances que ces vulnérabilités apparaissent de nouveau dans différentes versions de logiciels augmentent.

La nouvelle approche discutée ici offre une solution prometteuse, générant des signatures binaires précises pour des vulnérabilités connues. En se concentrant sur des instructions spécifiques et leur contexte, cette méthode améliore non seulement la précision mais aide aussi à comprendre les raisons derrière la détection des vulnérabilités.

Un travail futur pourrait consister à affiner ces méthodes encore plus et à étendre leur applicabilité à travers différents paradigmes de programmation et architectures matérielles. Ce faisant, nous pouvons améliorer la sécurité des logiciels dans l'ensemble, les rendant plus sûrs pour les utilisateurs et les organisations.

Source originale

Titre: VulMatch: Binary-level Vulnerability Detection Through Signature

Résumé: Similar vulnerability repeats in real-world software products because of code reuse, especially in wildly reused third-party code and libraries. Detecting repeating vulnerabilities like 1-day and N-day vulnerabilities is an important cyber security task. Unfortunately, the state-of-the-art methods suffer from poor performance because they detect patch existence instead of vulnerability existence and infer the vulnerability signature directly from binary code. In this paper, we propose VulMatch to extract precise vulnerability-related binary instructions to generate the vulnerability-related signature. VulMatch detects vulnerability existence based on binary signatures. Unlike previous approaches, VulMatch accurately locates vulnerability-related instructions by utilizing source and binary codes. Our experiments were conducted using over 1000 vulnerable instances across seven open-source projects. VulMatch significantly outperformed the baseline tools Asm2vec and Palmtree. Besides the performance advantages over the baseline tools, VulMatch offers a better feature by providing explainable reasons during vulnerability detection. Our empirical studies demonstrate that VulMatch detects fine-grained vulnerability that the state-of-the-art tools struggle with. Our experiment on commercial firmware demonstrates VulMatch is able to find vulnerabilities in real-world scenario.

Auteurs: Zian Liu, Lei Pan, Chao Chen, Ejaz Ahmed, Shigang Liu, Jun Zhang, Dongxi Liu

Dernière mise à jour: 2024-01-17 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2308.00288

Source PDF: https://arxiv.org/pdf/2308.00288

Licence: https://creativecommons.org/licenses/by/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires