5 research outputs found

    Detecting non-secure memory deallocation with CBMC

    Get PDF
    2021 Fall.Includes bibliographical references.Scrubbing sensitive data before releasing memory is a widely recommended but often ignored programming practice for developing secure software. Consequently, sensitive data such as cryptographic keys, passwords, and personal data, can remain in memory indefinitely, thereby increasing the risk of exposure to hackers who can retrieve the data using memory dumps or exploit vulnerabilities such as Heartbleed and Etherleak. We propose an approach for detecting a specific memory safety bug called Improper Clearing of Heap Memory Before Release, referred to as Common Weakness Enumeration 244. The CWE-244 bug in a program allows the leakage of confidential information when a variable is not wiped before heap memory is freed. Our approach uses the CBMC model checker to detect this weakness and is based on instrumenting the program using (1) global variable declarations that track and monitor the state of the program variables relevant for CWE-244, and (2) assertions that help CBMC to detect unscrubbed memory. We develop a tool, SecMD-Checker, implementing our instrumentation based algorithm, and we provide experimental validation on the Juliet Test Suite that the tool is able to detect all the CWE-244 instances present in the test suite. The proposed approach has the potential to work with other model checkers and can be extended for detecting other weaknesses that require variable tracking and monitoring, such as CWE-226, CWE-319, and CWE-1239

    Static Code Analysis Alarms Filtering Reloaded: A New Real-World Dataset and its ML-Based Utilization

    Get PDF

    Analyse statique de code : RĂ©duction des fausses alertes par apprentissage machine

    Get PDF
    Les vulnérabilités de sécurité présentes dans les applications Web sont extrêmement dangereuses, à l’heure où n’importe quel attaquant ayant un minimum de connaissances et d’outils peut exploiter avec succès l’une d’entre elles. Les conséquences d’un tel exploit peuvent être très graves : vol de données sensibles, déni de service du site, etc. Il est donc fondamental pour un développeur de détecter ces failles avant la mise en production. Pour ce faire, de nombreuses méthodes existent, l’analyse statique étant probablement la plus utilisée. Le principe est de parcourir le code sans l’exécuter, afin de trouver des modèles caractéristiques de vulnérabilités : cette méthode, en plus d’être très peu coûteuse en temps et ressources, est très efficace. Cependant, elle génère en général de nombreuses fausses alertes, appelées faux positifs : il en résulte que le développeur, recevant le rapport d’analyse, doit faire manuellement le tri entre ces alertes, ce qui peut être extrêmement coûteux en temps et donc mener à des erreurs. Ce mémoire a pour but de pallier ce problème en ajoutant la notion d’apprentissage machine : automatiser le tri des vulnérabilités permettrait au développeur de gagner un temps considérable, tout en limitant le risque d’erreurs. Notre étude est basée ici sur l’outil Find Security Bugs, un analyseur statique de code Java. Dans un premier temps, nous avons sélectionné des caractéristiques représentant avec précision chaque alerte, afin que l’algorithme d’apprentissage automatique puisse différencier une vraie vulnérabilité d’un faux positif. Par la suite, à partir du rapport d’alertes de l’outil, ainsi que d’une representation graphique des variables en jeu, nous avons pu extraire ces caractéristiques pour chaque vulnérabilité potentielle, et entraîner différents algorithmes afin d’éliminer le maximum de fausses alertes. Notre solution a été testée sur la suite Juliet, contenant de nombreuses vulnérabilités déjà étiquetées. Les résultats ont été très satisfaisants : plus de 85% des fausses alertes ont pu être détectées par l’apprentissage machine. Nous avons également mis en évidence qu’il n’existe pas réellement d’algorithme plus performant que les autres dans notre contexte, mais que ceux-ci peuvent être utilisés conjointement pour optimiser les résultats. Enfin, notre solution est flexible, et s’intègre parfaitement avec Find Security Bugs, sans ajout de complexité : le développeur est libre de l’utiliser comme il l’entend

    Towards modeling the behavior of static code analysis tools

    No full text
    corecore