Test Case Generation for Verifying Security Vulnerabilities in Java Web Applications
碩士 === 國立政治大學 === 資訊科學學系 === 99 === Due to the rapid development of the internet in recent years, web applications have become very popular and ubiquitous. However, developers may neglect the issues of security while designing a program so that web applications become the targets of attackers. Hence...
Main Authors: | , |
---|---|
Other Authors: | |
Format: | Others |
Language: | zh-TW |
Published: |
2011
|
Online Access: | http://ndltd.ncl.edu.tw/handle/77475124825794490348 |
id |
ndltd-TW-099NCCU5394020 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-TW-099NCCU53940202015-10-26T04:03:57Z http://ndltd.ncl.edu.tw/handle/77475124825794490348 Test Case Generation for Verifying Security Vulnerabilities in Java Web Applications Java網頁程式安全弱點驗證之測試案例產生工具 Huang, Yu Yu 黃于育 碩士 國立政治大學 資訊科學學系 99 Due to the rapid development of the internet in recent years, web applications have become very popular and ubiquitous. However, developers may neglect the issues of security while designing a program so that web applications become the targets of attackers. Hence, the issue of web application vulnerabilities has become very crucial. There have been many research results of web application security vulnerabilities and many of them exploit the technique of program analysis to detect vulnerabilities. These analysis approaches can be can basically be categorized into dynamic analysis and static analysis. However, both of them still have their own problems to be improved. Specifically static analysis supports high coverage of vulnerabilities, but causes too many false positives. As for the dynamic analysis, although it produces high confident results, yet it may cause false negatives without complete test cases. In this thesis, we integrate both static analysis and dynamic analysis to achieve the objectives that no false negatives are produced and reduce false positives. We develop a test case generation tool by the static analysis approach and a program execution tool that dynamically track the execution of the target program with those test data to detect its vulnerabilities. Our test case generation tool first employs both intra- and inter-procedural analysis to cover all vulnerable paths in a program, and then apply the symbolic execution technique to collect all path constraints. With these collected constraints, we use a constraint solver to solve them and finally generate the test cases. As to the execution tool, it utilizes the instrumentation mechanism provided by the aspect-oriented programming language AspectJ to implement a dynamic taint analysis that tracks the flow of tainted data derived from those generated test cases. As a result, all vulnerable program paths will be detected by our tools. Chen, Kung 陳恭 2011 學位論文 ; thesis 108 zh-TW |
collection |
NDLTD |
language |
zh-TW |
format |
Others
|
sources |
NDLTD |
description |
碩士 === 國立政治大學 === 資訊科學學系 === 99 === Due to the rapid development of the internet in recent years, web applications have become very popular and ubiquitous. However, developers may neglect the issues of security while designing a program so that web applications become the targets of attackers. Hence, the issue of web application vulnerabilities has become very crucial. There have been many research results of web application security vulnerabilities and many of them exploit the technique of program analysis to detect vulnerabilities. These analysis approaches can be can basically be categorized into dynamic analysis and static analysis. However, both of them still have their own problems to be improved. Specifically static analysis supports high coverage of vulnerabilities, but causes too many false positives. As for the dynamic analysis, although it produces high confident results, yet it may cause false negatives without complete test cases.
In this thesis, we integrate both static analysis and dynamic analysis to achieve the objectives that no false negatives are produced and reduce false positives. We develop a test case generation tool by the static analysis approach and a program execution tool that dynamically track the execution of the target program with those test data to detect its vulnerabilities. Our test case generation tool first employs both intra- and inter-procedural analysis to cover all vulnerable paths in a program, and then apply the symbolic execution technique to collect all path constraints. With these collected constraints, we use a constraint solver to solve them and finally generate the test cases. As to the execution tool, it utilizes the instrumentation mechanism provided by the aspect-oriented programming language AspectJ to implement a dynamic taint analysis that tracks the flow of tainted data derived from those generated test cases. As a result, all vulnerable program paths will be detected by our tools.
|
author2 |
Chen, Kung |
author_facet |
Chen, Kung Huang, Yu Yu 黃于育 |
author |
Huang, Yu Yu 黃于育 |
spellingShingle |
Huang, Yu Yu 黃于育 Test Case Generation for Verifying Security Vulnerabilities in Java Web Applications |
author_sort |
Huang, Yu Yu |
title |
Test Case Generation for Verifying Security Vulnerabilities in Java Web Applications |
title_short |
Test Case Generation for Verifying Security Vulnerabilities in Java Web Applications |
title_full |
Test Case Generation for Verifying Security Vulnerabilities in Java Web Applications |
title_fullStr |
Test Case Generation for Verifying Security Vulnerabilities in Java Web Applications |
title_full_unstemmed |
Test Case Generation for Verifying Security Vulnerabilities in Java Web Applications |
title_sort |
test case generation for verifying security vulnerabilities in java web applications |
publishDate |
2011 |
url |
http://ndltd.ncl.edu.tw/handle/77475124825794490348 |
work_keys_str_mv |
AT huangyuyu testcasegenerationforverifyingsecurityvulnerabilitiesinjavawebapplications AT huángyúyù testcasegenerationforverifyingsecurityvulnerabilitiesinjavawebapplications AT huangyuyu javawǎngyèchéngshìānquánruòdiǎnyànzhèngzhīcèshìànlìchǎnshēnggōngjù AT huángyúyù javawǎngyèchéngshìānquánruòdiǎnyànzhèngzhīcèshìànlìchǎnshēnggōngjù |
_version_ |
1718111077031477248 |