This project presents an automated, model based test data generation approach for CPS system that have complex input and output structures, such as ARC (Adaptive Resource Control) system, which is dynamically and autonomously utilizes space and ground resources to meet the changing needs of SES customers. We present a customized data modeling approach for these kind of systems, and a tool that automatically generate test data and validates the results after test execution. The approach receives two inputs, field data and a data model, i.e., class diagram annotated with stereotypes and OCL constraints. The data model is used to tailor the implementation of the mutation operators according to the fault model for SUT (system under test). We introduced four kind of test data generation strategies, Random (RND), All Possible Target (APT), Search Based (SB), and Constraint Based (CB). Search based test data generation strategy outperform than Random and APT. We introduced a customized evolutionary algorithm, that guided by the search objectives to ensure the high coverage of classes, mutation operators, input/output constraints, and the output diversity. Our approach is scalable that can handle a huge amount of data to be generated. The size of the model for the ARC system under study includes 65 class diagrams with hundreds of attributes. The proposed approach can also handle different formats (i.e., text, spreadsheet, json) of the field data, and we can generate new test data in the required format for SUT. To generate the test data, we introduced eight new mutation operators that generate diverse data. The test oracles work as a mapping between the input and output by using OCL constraints.
Collaboration with:
@ Software Verification and Validation Lab (SnT), University of Luxembourg
@ SES (Société Européenne des Satellites), Betzdorf Luxembourg (Industrial Partner)
Generating exploits based on patch files is a sensitive and potentially harmful activity if not handled responsibly. It involves reverse-engineering the patches to understand the original vulnerabilities and then creating code that exploits these vulnerabilities. This process should only be conducted in a controlled, ethical, and legal manner, such as for educational purposes, within a legitimate security research context, or with explicit permission from software owners. More
During our research and collaboration with SES, we have discovered a promising direction to pursue for the ARC (Adaptive Resource Control) system. Detecting the major test smells in the context of multi-level testing framework and improving test case definition (at the Gauge level) by removing these test smells. Test smells are mainly some bad development practices that reflects poor software design and implementation choices in software testing. Over the last decade, test smells are heavily studied to measure their prevalence and impacts on test maintainability especially for Unit-Tests. We can come up with an idea to develop a tool for test smell detection to support multi-level BDD based testing frameworks (e.g., Gauge), which can also help ARC testing team to detect suspected test smells in the ARC system.
Collaborated with:
@ Software Verification and Validation Lab (SnT), University of Luxembourg
Regression testing is arguably one of the most important activities in software testing. However, its cost-effectiveness and usefulness can be largely impaired by complex system test cases that are poorly designed (e.g., test cases containing multiple test scenarios combined into a single test case) and that require a large amount of time and resources to run. One way to mitigate this issue is decomposing such system test cases into smaller, separate test cases, each of them with only one test scenario and with its corresponding assertions, so that the execution time of the decomposed test cases is lower than the original test cases, while the test effectiveness of the original test cases is preserved.
Collaborated with:
@ Software Verification and Validation Lab (SnT), University of Luxembourg
In Android applications, if the application is obfuscated, it is hard to retrieve the exact source code after applying reverse engineering techniques on it. In this project, we propose an approach which is based on clone detection technique and it can detect obfuscated code in Android applications very efficiently. We perform two experiments on different types of datasets including obfuscated and non-obfuscated application's source code. We successfully detected the obfuscated code of two types, "identifier-renaming" and "string-encryption" with a high accuracy of 95%. A comparative study with other state-of-the-art tools proves the efficiency of our approach. Experimental results show that our approach is reliable, efficient and can be implemented at a large-scale level.
Collaborated with:
@ Key Laboratory of Information System Security, School of Software, Tsinghua University Beijing, China
In this project, we propose a vulnerability detection technique to detect vulnerabilities in software, as well as shared libraries at source code level. We crawl the vulnerable source code by tracing and locating the patch files from different web sources according to their CVE-numbers and built a fingerprint index of 2931 vulnerable files. Then we developed a vulnerability detection approach based on code clone detection technique and detect hundreds of vulnerabilities in thousands of GitHub open source projects, which are not noticed before as vulnerable. We detected vulnerabilities in some very famous recently available software, including latest version of Linux, HTC-kernel, FindX-8.1-kernel, and in 7-TB of C/C++ source code (152,823 open source projects). Furthermore, we performed an empirical evaluation and verification on these vulnerabilities, including intra project clone vulnerabilities, copied-kernel clone vulnerabilities, and library-used clone vulnerabilities. Our technique is very fast, efficient, reliable, practical, scalable, and can be implemented at industrial level.
Collaborated with:
@ Key Laboratory of Information System Security, School of Software, Tsinghua University Beijing, China
Funded by National Natural Science Foundation of China, Grant/Award Number: 90818021
This project presents VCIPR, a scalable tool for vulnerability detection in unpatched source code. We present a unique way, that uses a fast, token-based approach to detect vulnerabilities at function level granularity. The proposed approach is language independent, which supports multiple programming languages including Java, C/C++, JavaScript. VCIPR also detects most common repair patterns in the patch files for the vulnerability code evaluation. We build fingerprint index of top critical CVE's source code (vulnerable functions), which were retrieved from a reliable source. Then we detect unpatched (vulnerable/non-vulnerable) code fragments in common open source software with high accuracy. A comparison with the state-of-the-art tools proves the effectiveness, efficiency and scalability of our approach.
Collaborated with:
@ Key Laboratory of Information System Security, School of Software, Tsinghua University Beijing, China
Build a Vulnerability Benchmark to Overcome Cyber Security Attacks - 2018 ~~ 2020
The crime rate is growing day by day in every field or department which is directly or indirectly connected to the internet including Government, business or any individual. The main objective of this project was to evaluate the vulnerabilities in different software systems at the source code level by tracing their patch files. In this project we introduced a way to collect the source code of different types of vulnerabilities at a different level of granularities. We proposed different ways to collect or trace the vulnerability code, which can be very helpful for security experts, organisations and software developers to maintain security measures. By following our proposed method, we can build our own vulnerability data-set and can detect vulnerabilities in any system by using suitable code clone detection technique.
Collaborated with:
@ Key Laboratory of Information System Security, School of Software, Tsinghua University Beijing, China
In this project, we propose and design DroidSD, a clone detection tool for Android applications, that helps to detect different types of code clones from APK’s source code. DroidSD detects Type-1, Type-2 and Type-3 (near-miss) clones in Android applications at the source code level. The real time data-set includes 30,500 Android applications including top one, i:e: Chrome, Firefox, Gmail, WhatsApp, GoogleMap, Google-PlayStore.
Collaborated with:
@ Key Laboratory of Information System Security, School of Software, Tsinghua University Beijing, China
This project presents index-based features extraction technique (IBFET) to detect code clones at a very large-scale level to billions of LOC at file level granularity. We performed preprocessing, indexing, and clone detection for more than 324 billion of LOC using a Hadoop distributed environment, which is quite faster and more efficient as compared to existing distributed indexing and clone detection techniques; meanwhile, it detects all three types of clones efficiently. The MapReduce rule of divide and conquer is used for a count and retrieve the similar features between different systems. Our approach is faster, flexible, scalable, and it provides accurate results with high authenticity and can be implemented at a large-scale level.
Collaborated with:
@ Key Laboratory of Information System Security, School of Software, Tsinghua University Beijing, China
Funded by National Natural Science Foundation of China, Grant/Award Number: 9071803