VLDB 2026 Research / reviewers in the wild / expert
Fausto Spoto
dblp:21/1969
· DBLP profile ↗
42ranked-venue papers
10as first author
6since 2021 · last 2025
0000-0003-2973-0384ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 31 · 8 first-author · 5 since 2021Theory of computation · 10 · 2 first-authorArtificial intelligence and machine learning · 2Systems, architecture and hardware · 1Security and privacy · 1 · 1 since 2021Applied, interdisciplinary, general and emerging computing · 1 · 1 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Adaptive Multi-Factor Scoring in Shared Blob for Improving Data Availability in Layer 2 Blockchains
Muhammad Bin Saif, Sara Migliorini 0001, Fausto Spoto |
ICBC | 3 |
| 2025 | Design and Implementation of Static Analyses for Tezos Smart ContractsabstractOnce deployed in blockchain, smart contracts become immutable: Attackers can exploit bugs and vulnerabilities in their code that cannot be replaced with a bug-free version. For this reason, the verification of smart contracts before they are deployed in blockchain is important. However, the development of verification tools is not easy, especially if one wants to obtain guarantees by using formal methods. This article describes the development, from scratch, of a static analyzer based on abstract interpretation for the verification of real-world Tezos smart contracts. The analyzer is generic with respect to the property under analysis. This article shows taint analysis as a concrete instantiation of the analyzer, at different levels of precision, to detect untrusted cross-contract invocations. Luca Olivieri, Luca Negrini 0001, Vincenzo Arceri, Thomas P. Jensen, Fausto Spoto |
Distributed Ledger Technol. Res. Pract. | 5 |
| 2024 | Software verification challenges in the blockchain ecosystemabstractAbstract Blockchain technology has created a new software development context, with its own peculiarities, mainly due to the guarantees that the technology must satisfy, that is, immutability, distributability, and decentralization of data. Its rapid evolution over the last decade implied a lack of adequate verification tools, exposing developers and users to critical vulnerabilities and bugs. This paper clarifies the extent of block chain-oriented software (BoS), that goes well beyond smart contracts. Moreover, it provides an overview of the challenges related to software verification in the blockchain context, encompassing smart contracts, blockchain layers, cross-chain applications, and, more generally, BoS. This study aims to highlight the shortcomings of the state-of-art and of the state-of-practice of software verification in that context and identify, at the same time, new research directions. Luca Olivieri, Fausto Spoto |
Int. J. Softw. Tools Technol. Transf. | 2 |
| 2023 | Information Flow Analysis for Detecting Non-Determinism in Blockchain
Luca Olivieri, Luca Negrini 0001, Vincenzo Arceri, Fabio Tagliaferro, Pietro Ferrara 0001, Agostino Cortesi, Fausto Spoto |
ECOOP | 7 |
| 2021 | Static Privacy Analysis by Flow Reconstruction of Tainted DataabstractSoftware security vulnerabilities and leakages of private information are two of the main issues in modern software systems. Several different approaches, ranging from design techniques to run-time monitoring, have been applied to prevent, detect and isolate such vulnerabilities. Static taint analysis has been particularly successful in detecting injection vulnerabilities at compile time. However, its extension to detect leakages of sensitive data has been only partially investigated. In this paper, we introduce BackFlow, a backward flow reconstructor that, starting from the results of a generic taint analysis engine, reconstructs the flow of tainted data. If successful, BackFlow provides full information about the flow that such data (e.g. private information or user input) traversed inside the program before reaching a sensitive point (e.g. Internet communication or execution of an SQL query). Such information is needed to extend taint analysis to privacy analyses, since in such a scenario it is important to know which exact type of sensitive data flows to what type of communication channels. BackFlow has been implemented in Julia (an industrial static analyzer for Java, Android and .NET programs), and applied to WebGoat and different benchmarks to detect both injections and privacy issues. The experimental results prove that BackFlow is able to reconstruct the flow of tainted data for most of the true positives, it scales up to industrial applications, and it can be effectively applied to privacy analysis, such as the detection of sensitive data leaks or compliance with a data regulation. Pietro Ferrara 0001, Luca Olivieri, Fausto Spoto |
Int. J. Softw. Eng. Knowl. Eng. | 3 |
| 2021 | Static analysis for discovering IoT vulnerabilitiesabstractAbstract The Open Web Application Security Project (OWASP), released the “OWASP Top 10 Internet of Things 2018” list of the high-priority security vulnerabilities for IoT systems. The diversity of these vulnerabilities poses a great challenge toward development of a robust solution for their detection and mitigation. In this paper, we discuss the relationship between these vulnerabilities and the ones listed by OWASP Top 10 (focused on Web applications rather than IoT systems), how these vulnerabilities can actually be exploited, and in which cases static analysis can help in preventing them. Then, we present an extension of an industrial analyzer (Julia) that already covers five out of the top seven vulnerabilities of OWASP Top 10, and we discuss which IoT Top 10 vulnerabilities might be detected by the existing analyses or their extension. The experimental results present the application of some existing Julia’s analyses and their extension to IoT systems, showing its effectiveness of the analysis of some representative case studies. Pietro Ferrara 0001, Amit Kr Mandal 0001, Agostino Cortesi, Fausto Spoto |
Int. J. Softw. Tools Technol. Transf. | 4 |
| 2020 | BackFlow: Backward Context-Sensitive Flow Reconstruction of Taint Analysis Results
Pietro Ferrara 0001, Luca Olivieri, Fausto Spoto |
VMCAI | 3 |
| 2020 | From CIL to Java bytecode: Semantics-based translation for static analysis leveragingabstractA formal translation of CIL (i.e., .Net) bytecode into Java bytecode is introduced and proved sound with respect to the language semantics. The resulting code is then analyzed with Julia, an industrial static analyzer of Java bytecode. The overall process of translation and analysis is fast, scales to industrial programs, and introduces a negligible number of false alarms. The main contribution of this work is to leverage existing, mature, and sound analyzers for Java bytecode by applying them also to the wide range of .Net software systems. Experimental results show the actual effectiveness of this approach when applied to all the system libraries of the Microsoft .Net framework version 4.0.30319 (about 5 MLOCs). Pietro Ferrara 0001, Agostino Cortesi, Fausto Spoto |
Sci. Comput. Program. | 3 |
| 2019 | Static analysis of Android Auto infotainment and on-board diagnostics II appsabstractSummary Smartphone and automotive technologies are rapidly converging, letting drivers enjoy communication and infotainment facilities and monitor in‐vehicle functionalities, via on‐board diagnostics (OBD) technology. Among the various automotive apps available in playstores, Android Auto infotainment and OBD‐II apps are widely used and are the most popular choice for smartphone to car interaction. Automotive apps have the potential of turning cars into smartphones on wheels but can be also the gateway of attacks. This paper defines a static analysis that identifies potential security risks in Android infotainment and OBD‐II apps. It identifies a set of potential security threats and presents an actual static analyzer for such apps. It has been applied to most of the highly rated infotainment apps available in the Google Play store, as well as on the available open‐source OBD‐II apps, against a set of possible exposure scenarios. Results show that almost 60% of such apps are potentially vulnerable and that 25% pose security threats related to the execution of JavaScript. The analysis of the OBD‐II apps shows possibilities of severe controller area network injections and privacy violations, because of leaks of sensitive information. Amit Kr Mandal 0001, Federica Panarotto, Agostino Cortesi, Pietro Ferrara 0001, Fausto Spoto |
Softw. Pract. Exp. | 5 |
| 2019 | Static Identification of Injection Attacks in JavaabstractThe 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. Fausto Spoto, Elisa Burato, Michael D. Ernst, Pietro Ferrara 0001, Alberto Lovato, Damiano Macedonio, Ciprian Spiridon |
ACM Trans. Program. Lang. Syst. | 1 |
| 2018 | Vulnerability analysis of Android auto infotainment appsabstractWith over 2 billion active mobile users and a large array of features, Android is the most popular operating system for mobile devices. Android Auto allows such devices to connect with an in-car compatible infotainment system, and it became a popular choice as well. However, as the trend for connecting car dashboard to the Internet or other devices grows, so does the potential for security threats. In this paper, a set of potential security threats are identified, and a static analyzer for the Android Auto infotainment system is presented. All the infotainment apps available in Google Play Store have been checked against that list of possible exposure scenarios. Results show that almost 80% of the apps are potentially vulnerable, out of which 25% poses security threats related to execution of JavaScript. Amit Kr Mandal 0001, Agostino Cortesi, Pietro Ferrara 0001, Federica Panarotto, Fausto Spoto |
CF | 5 |
| 2016 | Locking discipline inference and checkingabstractConcurrency is a requirement for much modern software, but the implementation of multithreaded algorithms comes at the risk of errors such as data races. Programmers can prevent data races by documenting and obeying a locking discipline, which indicates which locks must be held in order to access which data. Michael D. Ernst, Alberto Lovato, Damiano Macedonio, Fausto Spoto, Javier Thaine |
ICSE | 4 |
| 2016 | The Julia Static Analyzer for Java
Fausto Spoto |
SAS | 1 |
| 2015 | Boolean Formulas for the Static Identification of Injection Attacks in Java
Michael D. Ernst, Alberto Lovato, Damiano Macedonio, Ciprian Spiridon, Fausto Spoto |
LPAR | 5 |
| 2014 | An operational semantics for android activitiesabstractWe define an operational semantics for a large part of the Android platform, encompassing the Dalvik bytecode but also, and more importantly, the inter-component communication mechanism used inside Android applications. This semantics is intended to provide a formal basis for the development of static analyses that consider the complex flow of information exposed by the cooperating components of Android applications. Étienne Payet, Fausto Spoto |
PEPM | 2 |
| 2014 | A Thread-Safe Library for Binary Decision Diagrams
Alberto Lovato, Damiano Macedonio, Fausto Spoto |
SEFM | 3 |
| 2014 | Field-sensitive unreachability and non-cyclicity analysis
Enrico Scapin, Fausto Spoto |
Sci. Comput. Program. | 2 |
| 2013 | Inferring complete initialization of arrays
Durica Nikolic, Fausto Spoto |
Theor. Comput. Sci. | 2 |
| 2013 | Reachability analysis of program variablesabstractReachability from a program variable v to a program variable w states that from v , it is possible to follow a path of memory locations that leads to the object bound to w . We present a new abstract domain for the static analysis of possible reachability between program variables or, equivalently, definite unreachability between them. This information is important for improving the precision of other static analyses, such as side-effects, field initialization, cyclicity and path-length analysis, as well as more complex analyses built upon them, such as nullness and termination analysis. We define and prove correct our reachability analysis for Java bytecode, defined as a constraint-based analysis, where the constraint is a graph whose nodes are the program points and whose arcs propagate reachability information in accordance to the abstract semantics of each bytecode instruction. For each program point p , our reachability analysis produces an overapproximation of the ordered pairs of variables 〈 v , w 〉 such that v might reach w at p . Seen the other way around, if a pair 〈 v , w 〉 is not present in the overapproximation at p , then v definitely does not reach w at p . We have implemented the analysis inside the Julia static analyzer. Our experiments of analysis of nontrivial Java and Android programs show the improvement of precision due to the presence of reachability information. Moreover, reachability analysis actually reduces the overall cost of nullness and termination analysis. Durica Nikolic, Fausto Spoto |
ACM Trans. Program. Lang. Syst. | 2 |
| 2012 | Definite Expression Aliasing Analysis for Java Bytecode
Durica Nikolic, Fausto Spoto |
ICTAC | 2 |
| 2012 | Automaton-Based Array Initialization Analysis
Durica Nikolic, Fausto Spoto |
LATA | 2 |
| 2012 | Static analysis of Android programs
Étienne Payet, Fausto Spoto |
Inf. Softw. Technol. | 2 |
| 2011 | Static Analysis of Android Programs
Étienne Payet, Fausto Spoto |
CADE | 2 |
| 2011 | Inference of field initializationabstractA raw object is partially initialized, with only some fields set to legal values. It may violate its object invariants, such as that a given field is non-null. Programs often manipulate partially-initialized objects, but they must do so with care. Furthermore, analyses must be aware of field initialization. For instance, proving the absence of null pointer dereferences or of division by zero, or proving that object invariants are satisfied, requires information about initialization. Fausto Spoto, Michael D. Ernst |
ICSE | 1 |
| 2011 | Precise null-pointer analysis
Fausto Spoto |
Softw. Syst. Model. | 1 |
| 2010 | A termination analyzer for Java bytecode based on path-lengthabstractIt is important to prove that supposedly terminating programs actually terminate, particularly if those programs must be run on critical systems or downloaded into a client such as a mobile phone. Although termination of computer programs is generally undecidable, it is possible and useful to prove termination of a large, nontrivial subset of the terminating programs. In this article, we present our termination analyzer for sequential Java bytecode, based on a program property called path-length . We describe the analyses which are needed before the path-length can be computed such as sharing, cyclicity, and aliasing. Then we formally define the path-length analysis and prove it correct with respect to a reference denotational semantics of the bytecode. We show that a constraint logic program P CLP can be built from the result of the path-length analysis of a Java bytecode program P and formally prove that if P CLP terminates, then P also terminates. Hence a termination prover for constraint logic programs can be applied to prove the termination of P . We conclude with some discussion of the possibilities and limitations of our approach. Ours is the first existing termination analyzer for Java bytecode dealing with any kind of data structures dynamically allocated on the heap and which does not require any help or annotation on the part of the user. Fausto Spoto, Frédéric Mesnard, Étienne Payet |
ACM Trans. Program. Lang. Syst. | 1 |
| 2008 | Nullness Analysis in Boolean FormabstractAttempts to dereference null result in an exception or a segmentation fault. Hence it is important to know those program points where this might occur and prove the others (or the entire program) safe. Nullness analysis of computer programs checks or infers non-null annotations for variables and object fields. Most nullness analyses currently use run-time checks or are incorrect or only verify manual annotations. We use here abstract interpretation to build and prove correct a static nullness analysis for Java byte code which infers non-null annotations. It is based on Boolean formulas, implemented with binary decision diagrams. Our experiments show it faster and more precise than the correct nullness analysis by Hubert, Jensen and Pichardie. We deal with static fields and exceptions, which is not the case of most other analyses. We claim that the result is theoretically clean and the implementation strong and scalable. Fausto Spoto |
SEFM | 1 |
| 2007 | Magic-Sets Transformation for the Analysis of Java Bytecode
Étienne Payet, Fausto Spoto |
SAS | 2 |
| 2007 | Optimality and condensing of information flow through linear refinement
Fausto Spoto |
Theor. Comput. Sci. | 1 |
| 2006 | Detecting Non-cyclicity by Abstract Compilation into Boolean Functions
Stefano Rossignoli, Fausto Spoto |
VMCAI | 2 |
| 2005 | Information Flow Is Linear Refinement of Constancy
Fausto Spoto |
ICTAC | 1 |
| 2005 | Pair-Sharing Analysis of Object-Oriented Programs
Stefano Secci, Fausto Spoto |
SAS | 2 |
| 2005 | Information Flow Analysis for Java Bytecode
Samir Genaim, Fausto Spoto |
VMCAI | 2 |
| 2003 | Logic Programs as Compact Denotations
Patricia M. Hill, Fausto Spoto |
PADL | 2 |
| 2003 | Logic programs as compact denotations
Patricia M. Hill, Fausto Spoto |
Comput. Lang. Syst. Struct. | 2 |
| 2003 | Pair-independence and freeness analysis through linear refinement
Giorgio Levi, Fausto Spoto |
Inf. Comput. | 2 |
| 2003 | Class analyses as abstract interpretations of trace semanticsabstractWe use abstract interpretation to abstract a compositional trace semantics for a simple imperative object-oriented language into its projection over a set of program points called watchpoints . We say that the resulting watchpoint semantics is focused on the watchpoints. Every abstraction of the computational domain of this semantics induces an abstract, still compositional, and focused watchpoint semantics. This establishes a basis for developing static analyses obtaining information pertaining only to the watchpoints. As an example, we consider three domains for class analysis of object-oriented programs derived from three techniques present in the literature, namely, rapid type analysis, a simple dataflow analysis, and a constraint-based analysis. We obtain three static analyses which are provably correct and whose abstract operations are provably optimal. Moreover, we prove that our formalization of the constraint-based analysis is more precise than that of the other two analyses. We have implemented our watchpoint semantics and our three domains for class analysis. This implementation shows that the time and space costs of the analysis are actually proportional to the number of watchpoints, as a consequence of the focused nature of the watchpoint semantics. Fausto Spoto, Thomas P. Jensen |
ACM Trans. Program. Lang. Syst. | 1 |
| 2002 | Generalizing Def and Pos to Type AnalysisabstractThis paper is concerned with the type analysis of logic programs where, by type, we mean a property closed under instantiation. We define a chain of abstractions from Herbrand constraints to logical formulas via the set of their solutions. Every step of the chain is an instance of abstract interpretation. The use of logical formulas for type analysis is a generalization of the traditional Boolean domains Def and Pos for groundness analysis. In this context, implication is the logical counterpart of the use of linear refinement. While logical formulas can sometime be used for an actual implementation of our domains, in the general case they are infinite objects. Therefore, we apply a final abstraction from possibly infinite logical formulas to (finite) logic programs. Thus, logic programs are themselves used for the type analysis of logic programs. The advantage of our technique with respect to the many frameworks for type analysis present in the literature is that we have developed our domains by using the formal techniques of abstract interpretation and linear refinement. Therefore, their construction is guided by the underlying theory, from which their properties are derived. Patricia M. Hill, Fausto Spoto |
J. Log. Comput. | 2 |
| 2001 | Class Analysis of Object-Oriented Programs through Abstract Interpretation
Thomas P. Jensen, Fausto Spoto |
FoSSaCS | 2 |
| 2001 | Watchpoint Semantics: A Tool for Compositional and Focussed Static Analyses
Fausto Spoto |
SAS | 1 |
| 2000 | Non Pair-Sharing and Freeness Analysis Through Linear RefinementabstractLinear refinement is a technique for systematically constructing abstract domains for program analysis directly from a basic domain representing just the property of interest. This paper uses linear refinement to construct a domain for non pair-sharing and freeness analysis. The resulting domain is strictly more precise than the domain for sharing and freeness analysis defined by Jacobs and Langen. Moreover, it can be used for abstract compilation, while Jacobs and Langen's domain can only be used for abstract interpretation. We provide a representation of the domain, together with algorithms for the abstract operations. Giorgio Levi, Fausto Spoto |
PEPM | 2 |
| 1999 | Freeness Analysis Through Linear Refinement
Patricia M. Hill, Fausto Spoto |
SAS | 2 |