TY - GEN
T1 - Automated source code instrumentation for verifying potential vulnerabilities
AU - Li, Hongzhe
AU - Oh, Jaesang
AU - Oh, Hakjoo
AU - Lee, Heejo
PY - 2016
Y1 - 2016
N2 - With a rapid yearly growth rate, software vulnerabilities are making great threats to the system safety. In theory, detecting and removing vulnerabilities before the code gets ever deployed can greatly ensure the quality of software released. However, due to the enormous amount of code being developed as well as the lack of human resource and expertise, severe vulnerabilities still remain concealed or cannot be revealed effectively. Current source code auditing tools for vulnerability discovery either generate too many false positives or require overwhelming manual efforts to report actual software flaws. In this paper, we propose an automatic verification mechanism to discover and verify vulnerabilities by using program source instrumentation and concolic testing. In the beginning, we leverage CIL to statically analyze the source code including extracting the program CFG, locating the security sinks and backward tracing the sensitive variables. Subsequently, we perform automated program instrumentation to insert security probes ready for the vulnerability verification. Finally, the instrumented program source is passed to the concolic testing engine to verify and report the existence of an actual vulnerability. We demonstrate the efficacy and efficiency of our mechanism by implementing a prototype system and perform experiments with nearly 4000 test cases from Juliet Test Suite. The results show that our system can verify over 90% of test cases and it reports buffer overflow flaws with Precision = 100% (0 FP) and Recall = 94.91 %. In order to prove the practicability of our system working in real world programs, we also apply our system on 2 popular Linux utilities, Bash and Cpio. As a result, our system finds and verifies vulnerabilities in a fully automatic way with no false positives.
AB - With a rapid yearly growth rate, software vulnerabilities are making great threats to the system safety. In theory, detecting and removing vulnerabilities before the code gets ever deployed can greatly ensure the quality of software released. However, due to the enormous amount of code being developed as well as the lack of human resource and expertise, severe vulnerabilities still remain concealed or cannot be revealed effectively. Current source code auditing tools for vulnerability discovery either generate too many false positives or require overwhelming manual efforts to report actual software flaws. In this paper, we propose an automatic verification mechanism to discover and verify vulnerabilities by using program source instrumentation and concolic testing. In the beginning, we leverage CIL to statically analyze the source code including extracting the program CFG, locating the security sinks and backward tracing the sensitive variables. Subsequently, we perform automated program instrumentation to insert security probes ready for the vulnerability verification. Finally, the instrumented program source is passed to the concolic testing engine to verify and report the existence of an actual vulnerability. We demonstrate the efficacy and efficiency of our mechanism by implementing a prototype system and perform experiments with nearly 4000 test cases from Juliet Test Suite. The results show that our system can verify over 90% of test cases and it reports buffer overflow flaws with Precision = 100% (0 FP) and Recall = 94.91 %. In order to prove the practicability of our system working in real world programs, we also apply our system on 2 popular Linux utilities, Bash and Cpio. As a result, our system finds and verifies vulnerabilities in a fully automatic way with no false positives.
KW - Automatic instrumentation
KW - Security constraints
KW - Security sinks
KW - Vulnerability verification
UR - http://www.scopus.com/inward/record.url?scp=84970021857&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84970021857&partnerID=8YFLogxK
U2 - 10.1007/978-3-319-33630-5_15
DO - 10.1007/978-3-319-33630-5_15
M3 - Conference contribution
AN - SCOPUS:84970021857
SN - 9783319336299
VL - 471
T3 - IFIP Advances in Information and Communication Technology
SP - 211
EP - 226
BT - IFIP Advances in Information and Communication Technology
PB - Springer New York LLC
T2 - 31st IFIP TC 11 International Conference on Systems Security and Privacy Protection, SEC 2016
Y2 - 30 May 2016 through 1 June 2016
ER -