Demo Data from EDBT 2026 / reviewers in the wild / expert
Lorenzo Martignoni
dblp:20/4252
· DBLP profile ↗
17ranked-venue papers
9as first author
0since 2021 · last 2013
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Security and privacy · 9 · 4 first-authorSoftware engineering, systems software and programming languages · 7 · 4 first-authorSystems, architecture and hardware · 2 · 2 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
8 papers |
Software testing · 72% Program analysis · 17% Operating systems · 7% | |
| Computer architecture, parallel and distributed computing, and storage systems
4 papers |
Cloud and datacenter computing · 66% Performance modeling and evaluation · 34% | |
| Network and information security
3 papers |
Systems and software security · 71% Malware analysis · 29% |
Topics — the 15 heaviest of 21, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software testing
fuzzing |
0.4 | 3 | 2013 | A methodology for testing CPU emulators · ACM Trans. Softw. Eng. Methodol. 2013 Testing system virtual machines · ISSTA 2010 Testing CPU emulators · ISSTA 2009 |
Software testing
differential testing |
0.3 | 3 | 2010 | N-version disassembly: differential testing of x86 disassemblers · ISSTA 2010 Testing system virtual machines · ISSTA 2010 Testing CPU emulators · ISSTA 2009 |
Software testing › system software testing
emulator testing |
0.1 | 1 | 2012 | Path-exploration lifting: hi-fi tests for lo-fi emulators · ASPLOS 2012 |
Program analysis
symbolic execution |
0.1 | 1 | 2012 | Path-exploration lifting: hi-fi tests for lo-fi emulators · ASPLOS 2012 |
Software testing
test generation |
0.1 | 1 | 2012 | Path-exploration lifting: hi-fi tests for lo-fi emulators · ASPLOS 2012 |
Cloud and datacenter computing
virtualization |
0.1 | 2 | 2010 | Dynamic and transparent analysis of commodity production systems · ASE 2010 Testing system virtual machines · ISSTA 2010 |
Systems and software security
vulnerability discovery |
0.1 | 1 | 2011 | Statically-directed dynamic automated test generation · ISSTA 2011 |
Software testing › test generation
automated test generation |
0.1 | 1 | 2011 | Statically-directed dynamic automated test generation · ISSTA 2011 |
Operating systems › kernel › kernel development
kernel debugging |
0.1 | 1 | 2010 | Dynamic and transparent analysis of commodity production systems · ASE 2010 |
Cloud and datacenter computing › virtualization
virtual machine monitor |
0.1 | 1 | 2010 | Dynamic and transparent analysis of commodity production systems · ASE 2010 |
Program analysis
control flow analysis |
0.0 | 1 | 2011 | Statically-directed dynamic automated test generation · ISSTA 2011 |
Program analysis
static analysis |
0.0 | 1 | 2011 | Statically-directed dynamic automated test generation · ISSTA 2011 |
Debugging and program repair
automated program repair |
0.0 | 1 | 2010 | Automatic Generation of Remediation Procedures for Malware Infections · USENIX Security Symposium 2010 |
Program analysis
binary analysis |
0.0 | 1 | 2010 | N-version disassembly: differential testing of x86 disassemblers · ISSTA 2010 |
Cloud and datacenter computing › virtualization
virtual machine |
0.0 | 1 | 2010 | Testing system virtual machines · ISSTA 2010 |
Methods — techniques the papers use, named apart from their topics
fuzzing · 0.4differential analysis · 0.4symbolic execution · 0.4differential execution comparison · 0.3secure access · 0.3visibly pushdown automaton · 0.2static analysis · 0.2dynamic analysis · 0.2protocol-specific fuzzing · 0.2hardware virtualization · 0.2virtual machine migration · 0.1planning · 0.1CPU-based decoding · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2013 | A methodology for testing CPU emulatorsabstractA CPU emulator is a software system that simulates a hardware CPU. Emulators are widely used by computer scientists for various kind of activities (e.g., debugging, profiling, and malware analysis). Although no theoretical limitation prevents developing an emulator that faithfully emulates a physical CPU, writing a fully featured emulator is a very challenging and error prone task. Modern CISC architectures have a very rich instruction set, some instructions lack proper specifications, and others may have undefined effects in corner cases. This article presents a testing methodology specific for CPU emulators, based on fuzzing. The emulator is “stressed” with specially crafted test cases, to verify whether the CPU is properly emulated or not. Improper behaviors of the emulator are detected by running the same test case concurrently on the emulated and on the physical CPUs and by comparing the state of the two after the execution. Differences in the final state testify defects in the code of the emulator. We implemented this methodology in a prototype (named as EmuFuzzer), analyzed five state-of-the-art IA-32 emulators (QEMU, Valgrind, Pin, BOCHS, and JPC), and found several defects in each of them, some of which can prevent proper execution of programs. Lorenzo Martignoni, Roberto Paleari, Alessandro Reina, Giampaolo Fresi Roglia, Danilo Bruschi |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 2012 | Path-exploration lifting: hi-fi tests for lo-fi emulatorsabstractProcessor emulators are widely used to provide isolation and instrumentation of binary software. However they have proved difficult to implement correctly: processor specifications have many corner cases that are not exercised by common workloads. It is untenable to base other system security properties on the correctness of emulators that have received only ad-hoc testing. To obtain emulators that are worthy of the required trust, we propose a technique to explore a high-fidelity emulator with symbolic execution, and then lift those test cases to test a lower-fidelity emulator. The high-fidelity emulator serves as a proxy for the hardware specification, but we can also further validate by running the tests on real hardware. We implement our approach and apply it to generate about 610,000 test cases; for about 95% of the instructions we achieve complete path coverage. The tests reveal thousands of individual differences; we analyze those differences to shed light on a number of root causes, such as atomicity violations and missing security features. Lorenzo Martignoni, Stephen McCamant, Pongsin Poosankam, Dawn Song, Petros Maniatis |
ASPLOS | 1 |
| 2012 | Cloud Terminal: Secure Access to Sensitive Applications from Untrusted Systems
Lorenzo Martignoni, Pongsin Poosankam, Matei Zaharia, Jun Han 0001, Stephen McCamant, Dawn Song, Vern Paxson, Adrian Perrig, Scott Shenker, Ion Stoica |
USENIX ATC | 1 |
| 2011 | Statically-directed dynamic automated test generationabstractWe present a new technique for exploiting static analysis to guide dynamic automated test generation for binary programs, prioritizing the paths to be explored. Our technique is a three-stage process, which alternates dynamic and static analysis. In the first stage, we run dynamic analysis with a small number of seed tests to resolve indirect jumps in the binary code and build a visibly pushdown automaton (VPA) reflecting the global control-flow of the program. Further, we augment the computed VPA with statically computable jumps not executed by the seed tests. In the second stage, we apply static analysis to the inferred automaton to find potential vulnerabilities, i.e., targets for the dynamic analysis. In the third stage, we use the results of the prior phases to assign weights to VPA edges. Our symbolic-execution based automated test generation tool then uses the weighted shortest-path lengths in the VPA to direct its exploration to the target potential vulnerabilities. Preliminary experiments on a suite of benchmarks extracted from real applications show that static analysis allows exploration to reach vulnerabilities it otherwise would not, and the generated test inputs prove that the static warnings indicate true positives. Domagoj Babic, Lorenzo Martignoni, Stephen McCamant, Dawn Song |
ISSTA | 2 |
| 2010 | Conqueror: Tamper-Proof Code Execution on Legacy Systems
Lorenzo Martignoni, Roberto Paleari, Danilo Bruschi |
DIMVA | 1 |
| 2010 | Testing system virtual machinesabstractVirtual machines offer the ability to partition the resources of a physical system and to create isolated execution environments. The development of virtual machines is a very challenging task. This is particularly true for system virtual machines, since they run an operating system and must replicate in every detail the incredibly complex environment it requires. Nowadays, system virtual machines are the key component of many critical architectures. However, only little effort has been invested to test if the environment they provide is semantically equivalent to the environment found on real machines. In this paper we present a methodology specific for testing system virtual machines. This methodology is based on protocol-specific fuzzing and differential analysis, and consists in forcing a virtual machine and the corresponding physical machine to execute specially crafted snippets of user- and system-mode code and in comparing their behaviors. We have developed a prototype, codenamed KEmuFuzzer, that implements our methodology for the Intel x86 architecture and used it to test four state-of-the-art virtual machines: BOCHS, QEMU, VirtualBox and VMware. We discovered defects in all of them. Lorenzo Martignoni, Roberto Paleari, Giampaolo Fresi Roglia, Danilo Bruschi |
ISSTA | 1 |
| 2010 | N-version disassembly: differential testing of x86 disassemblersabstractThe output of a disassembler is used for many different purposes (e.g., debugging and reverse engineering). Therefore, disassemblers represent the first link of a long chain of stages on which any high-level analysis of machine code depends upon. In this paper we demonstrate that many disassemblers fail to decode certain instructions and thus that the first link of the chain is very weak. We present a methodology, called N-version disassembly, to verify the correctness of disassemblers, based on differential analysis. Given a set of n - 1 disassemblers, we use them to decode fragments of machine code and we compare their output against each other. To further corroborate the output of these disassemblers, we developed a special instruction decoder, the nth, that delegates the decoding to the CPU, the ideal decoder. We tested eight of the most popular disassemblers for Intel x86, and found bugs in each of them. Roberto Paleari, Lorenzo Martignoni, Giampaolo Fresi Roglia, Danilo Bruschi |
ISSTA | 2 |
| 2010 | Dynamic and transparent analysis of commodity production systemsabstractWe propose a framework that provides a programming interface to perform complex dynamic system-level analyses of deployed production systems. By leveraging hardware support for virtualization available nowadays on all commodity machines, our framework is completely transparent to the system under analysis and it guarantees isolation of the analysis tools running on top of it. Thus, the internals of the kernel of the running system needs not to be modified and the whole platform runs unaware of the framework. Moreover, errors in the analysis tools do not affect the running system and the framework. This is accomplished by installing a minimalistic virtual machine monitor and migrating the system, as it runs, into a virtual machine. In order to demonstrate the potentials of our framework we developed an interactive kernel debugger, named HyperDbg. HyperDbg can be used to debug any critical kernel component, and even to single step the execution of exception and interrupt handlers. Aristide Fattori, Roberto Paleari, Lorenzo Martignoni, Mattia Monga |
ASE | 3 |
| 2010 | Live and Trustworthy Forensic Analysis of Commodity Production Systems
Lorenzo Martignoni, Aristide Fattori, Roberto Paleari, Lorenzo Cavallaro |
RAID | 1 |
| 2010 | Automatic Generation of Remediation Procedures for Malware Infections
Roberto Paleari, Lorenzo Martignoni, Emanuele Passerini, Drew Davidson, Matt Fredrikson, Jonathon T. Giffin, Somesh Jha |
USENIX Security Symposium | 2 |
| 2009 | Surgically Returning to Randomized lib(c)abstractTo strengthen systems against code injection attacks, the write or execute only policy (W¿X) and address space layout randomization (ASLR) are typically used in combination. The former separates data and code, while the latter randomizes the layout of a process. In this paper we present a new attack to bypass W¿X and ASLR. The state-of-the-art attack against this combination of protections is based on brute-force, while ours is based on the leakage of sensitive information about the memory layout of the process. Using our attack an attacker can exploit the majority of programs vulnerable to stack-based buffer overflows surgically, i.e., in a single attempt. We have estimated that our attack is feasible on 95.6% and 61.8% executables (of medium size) for Intel x86 and x86-64 architectures, respectively. We also analyze the effectiveness of other existing protections at preventing our attack. We conclude that position independent executables (PIE) are essential to complement ASLR and to prevent our attack. However, PIE requires recompilation, it is often not adopted even when supported, and it is not available on all ASLR-capable operating systems. To overcome these limitations, we propose a new protection that is as effective as PIE, does not require recompilation, and introduces only a minimal overhead. Giampaolo Fresi Roglia, Lorenzo Martignoni, Roberto Paleari, Danilo Bruschi |
ACSAC | 2 |
| 2009 | How Good Are Malware Detectors at Remediating Infected Systems?
Emanuele Passerini, Roberto Paleari, Lorenzo Martignoni |
DIMVA | 3 |
| 2009 | Testing CPU emulatorsabstractA CPU emulator is a software that simulates a hardware CPU. Emulators are widely used by computer scientists for various kind of activities (e.g., debugging, profiling, and malware analysis). Although no theoretical limitation prevents to develop an emulator that faithfully emulates a physical CPU, writing a fully featured emulator is a very challenging and error-prone task. Modern CISC architectures have a very rich instruction set, some instructions lack proper specifications, and others may have undefined effects in corner-cases. This paper presents a testing methodology specific for CPU emulators, based on fuzzing. The emulator is "stressed" with specially crafted test-cases, to verify whether the CPU is properly emulated or not. Improper behaviours of the emulator are detected by running the same test-case concurrently on the emulated and on the physical CPUs and by comparing the state of the two after the execution. Differences in the final state testify defects in the code of the emulator. We implemented this methodology in a prototype (codenamed EmuFuzzer), analysed four state-of-the-art IA-32 emulators (QEMU, Valgrind, Pin and BOCHS), and found several defects in each of them, some of which can prevent the proper execution of programs. Lorenzo Martignoni, Roberto Paleari, Giampaolo Fresi Roglia, Danilo Bruschi |
ISSTA | 1 |
| 2008 | FluXOR: Detecting and Monitoring Fast-Flux Service Networks
Emanuele Passerini, Roberto Paleari, Lorenzo Martignoni, Danilo Bruschi |
DIMVA | 3 |
| 2008 | A Layered Architecture for Detecting Malicious Behaviors
Lorenzo Martignoni, Elizabeth Stinson, Matt Fredrikson, Somesh Jha, John C. Mitchell |
RAID | 1 |
| 2007 | OmniUnpack: Fast, Generic, and Safe Unpacking of MalwareabstractMalicious software (or malware) has become a growing threat as malware writers have learned that signature- based detectors can be easily evaded by "packing" the malicious payload in layers of compression or encryption. State-of-the-art malware detectors have adopted both static and dynamic techniques to recover the pay- load of packed malware, but unfortunately such techniques are highly ineffective. In this paper we propose a new technique, called OmniUnpack, to monitor the execution of a program in real-time and to detect when the program has removed the various layers of packing. OmniUnpack aids malware detection by directly providing to the detector the unpacked malicious payload. Experimental results demonstrate the effectiveness of our approach. OmniUnpack is able to deal with both known and unknown packing algorithms and introduces a low overhead (at most 11% for packed benign programs). Lorenzo Martignoni, Mihai Christodorescu, Somesh Jha |
ACSAC | 1 |
| 2006 | Detecting Self-mutating Malware Using Control-Flow Graph Matching
Danilo Bruschi, Lorenzo Martignoni, Mattia Monga |
DIMVA | 2 |