• DocumentCode
    153577
  • Title

    Modeling and Discovering Vulnerabilities with Code Property Graphs

  • Author

    Yamaguchi, Fabian ; Golde, Nico ; Arp, Daniel ; Rieck, Konrad

  • Author_Institution
    Univ. of Gottingen, Göttingen, Germany
  • fYear
    2014
  • fDate
    18-21 May 2014
  • Firstpage
    590
  • Lastpage
    604
  • Abstract
    The vast majority of security breaches encountered today are a direct result of insecure code. Consequently, the protection of computer systems critically depends on the rigorous identification of vulnerabilities in software, a tedious and error-prone process requiring significant expertise. Unfortunately, a single flaw suffices to undermine the security of a system and thus the sheer amount of code to audit plays into the attacker´s cards. In this paper, we present a method to effectively mine large amounts of source code for vulnerabilities. To this end, we introduce a novel representation of source code called a code property graph that merges concepts of classic program analysis, namely abstract syntax trees, control flow graphs and program dependence graphs, into a joint data structure. This comprehensive representation enables us to elegantly model templates for common vulnerabilities with graph traversals that, for instance, can identify buffer overflows, integer overflows, format string vulnerabilities, or memory disclosures. We implement our approach using a popular graph database and demonstrate its efficacy by identifying 18 previously unknown vulnerabilities in the source code of the Linux kernel.
  • Keywords
    computational linguistics; graphs; source code (software); trees (mathematics); Linux kernel; abstract syntax trees; buffer overflows; classic program analysis; code property graphs; computer systems; control flow graphs; data structure; discovering vulnerabilities; error-prone process; format string vulnerabilities; graph traversals; insecure code; integer overflows; memory disclosures; modeling; popular graph database; program dependence graphs; rigorous identification; security breaches; single flaw suffices; source code; Abstracts; Databases; Joints; Kernel; Security; Syntactics; Graph Databases; Static Analysis; Vulnerabilities;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Security and Privacy (SP), 2014 IEEE Symposium on
  • Conference_Location
    San Jose, CA
  • ISSN
    1081-6011
  • Type

    conf

  • DOI
    10.1109/SP.2014.44
  • Filename
    6956589