Affiliation:
1. Università di Verona, Italy and JuliaSoft Srl, Verona, Italy
2. JuliaSoft Srl, Verona, Italy
3. University of Washington, Seattle, WA, USA
4. Università di Verona, Verona, Italy
Abstract
The most dangerous security-related software errors, according to the OWASP Top Ten 2017 list, affect web applications. They are potential injection attacks that exploit user-provided data to execute undesired operations: database access and updates (
SQL injection
); generation of malicious web pages (
cross-site scripting injection
); redirection to user-specified web pages (
redirect injection
); execution of OS commands and arbitrary scripts (
command injection
); loading of user-specified, possibly heavy or dangerous classes at run time (
reflection injection
); access to arbitrary files on the file system (
path-traversal
); and storing user-provided data into heap regions normally assumed to be shielded from the outside world (
trust boundary violation
). All these attacks exploit the same weakness: unconstrained propagation of data from
sources
that the user of a web application controls into
sinks
whose activation might trigger dangerous operations. Although web applications are written in a variety of languages, Java remains a frequent choice, in particular for banking applications, where security has tangible relevance.
This article defines a unified, sound protection mechanism against such attacks, based on the identification of all possible explicit flows of
tainted
data in Java code. Such flows can be arbitrarily complex, passing through dynamically allocated data structures in the heap. The analysis is based on abstract interpretation and is interprocedural, flow-sensitive, and context-sensitive. Its notion of taint applies to reference (non-primitive) types dynamically allocated in the heap and is object-sensitive and field-sensitive. The analysis works by translating the program into Boolean formulas that model all possible data flows. Its implementation, within the Julia analyzer for Java and Android, found injection security vulnerabilities in the Internet banking service and in the customer relationship management of large Italian banks, as well as in a set of open-source third-party applications. It found the command injection, which is at the origin of the 2017 Equifax data breach, one of the worst data breaches ever. For objective, repeatable results, this article also evaluates the implementation on two open-source security benchmarks: the Juliet Suite and the OWASP Benchmark for the automatic comparison of static analyzers for cybersecurity. We compared this technique against more than 10 other static analyzers, both free and commercial. The result of these experiments is that ours is the only analysis for injection that is sound (up to well-stated limitations such as multithreading and native code) and works on industrial code, and it is also much more precise than other tools.
Publisher
Association for Computing Machinery (ACM)
Reference69 articles.
1. H. R. Andersen. 1999. An introduction to binary decision diagrams. Retrieved from: http://configit.com/configit_wordpress/wp-content/uploads/2013/07/bdd-eap.pdf. H. R. Andersen. 1999. An introduction to binary decision diagrams. Retrieved from: http://configit.com/configit_wordpress/wp-content/uploads/2013/07/bdd-eap.pdf.
2. Automated testing for SQL injection vulnerabilities: an input mutation approach
3. FlowDroid
Cited by
24 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Sound Static Analysis for Microservices: Utopia? A Preliminary Experience with LiSA;Proceedings of the 26th ACM International Workshop on Formal Techniques for Java-like Programs;2024-09-20
2. Design and Implementation of Static Analyses for Tezos Smart Contracts;Distributed Ledger Technologies: Research and Practice;2024-01-29
3. Sound Non-interference Analysis for C/C++;Lecture Notes in Computer Science;2024
4. Teaching Through Practice: Advanced Static Analysis with LiSA;Lecture Notes in Computer Science;2024
5. Sound Abstract Nonexploitability Analysis;Lecture Notes in Computer Science;2023-12-30