Proceedings Article10.1145/349299.349313
Safety checking of machine code
Zhichen Xu,Barton P. Miller,Thomas Reps +2 more
- 01 May 2000
- Vol. 35, Iss: 5, pp 70-82
TL;DR: The safety checker was able to either prove that an example met the necessary safety conditions, or identify the places where the safety conditions were violated, and the checking times ranged from less than a second to 14 seconds on an UltraSPARC machine.
read more
Abstract: We show how to determine statically whether it is safe for untrusted machine code to be loaded into a trusted host system.Our safety-checking technique operates directly on the untrusted machine-code program, requiring only that the initial inputs to the untrusted program be annotated with typestate information and linear constraints. This approach opens up the possibility of being able to certify code produced by any compiler from any source language, which gives the code producers more freedom in choosing the language in which they write their programs. It eliminates the dependence of safety on the correctness of the compiler because the final product of the compiler is checked. It leads to the decoupling of the safety policy from the language in which the untrusted code is written, and consequently, makes it possible for safety checking to be performed with respect to an extensible set of safety properties that are specified on the host side.We have implemented a prototype safety checker for SPARC machine-language programs, and applied the safety checker to several examples. The safety checker was able to either prove that an example met the necessary safety conditions, or identify the places where the safety conditions were violated. The checking times ranged from less than a second to 14 seconds on an UltraSPARC machine.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Automatic predicate abstraction of C programs
Thomas Ball,Rupak Majumdar,Todd Millstein,Sriram K. Rajamani +3 more
- 01 May 2001
TL;DR: This work presents the first algorithm to automatically construct a predicate abstraction of programs written in am industrial programming language such as C, and its implementation in a tool -- C2BP, part of the SLAM toolkit.
Static analysis of executables to detect malicious patterns
Mihai Christodorescu,Somesh Jha +1 more
- 04 Aug 2003
TL;DR: An architecture for detecting malicious patterns in executables that is resilient to common obfuscation transformations is presented, and experimental results demonstrate the efficacy of the prototype tool, SAFE (a static analyzer for executables).
Analyzing Memory Accesses in x86 Executables
Gogul Balakrishnan,Thomas Reps +1 more
- 01 Jan 2006
TL;DR: The aim of the work is to recover intermediate representations that are similar to those that can be created for a program written in a high-level language by static-analysis algorithms for analyzing x86 executables.
ABCD: eliminating array bounds checks on demand
Rastislav Bodik,Rajiv Gupta,Vivek Sarkar +2 more
- 01 May 2000
TL;DR: ABCD is a light-weight algorithm for elimination of Array Bounds Checks on Demand that can be applied to a set of frequently executed (hot) bounds checks, which makes it suitable for the dynamic-compilation setting, in which compile-time cost is constrained but hot statements are known.
Automatically validating temporal safety properties of interfaces
Thomas Ball,Sriram K. Rajamani +1 more
TL;DR: Automatically validating temporal safety properties of interfaces automatically creates abstractions of C code based on user-stated properties and converges on a set of powerful predicates in few iterations.
240
References
•Proceedings Article
The MD5 Message-Digest Algorithm
Ronald L. Rivest
- 01 Apr 1992
TL;DR: This document describes the MD5 message-digest algorithm, which takes as input a message of arbitrary length and produces as output a 128-bit "fingerprint" or "message digest" of the input.
•Book
An axiomatic basis for computer programming
C. A. R. Hoare
- 01 Jan 2002
TL;DR: In this article, the logical foundations of computer programming are explored by using techniques first applied in the study of geometry and later extended to other branches of mathematics, and a formal proof of a simple theorem is displayed.
3.3K
•Book
The Java Virtual Machine Specification
Tim Lindholm,Frank Yellin +1 more
- 19 Sep 1996
TL;DR: In this article, the authors present a detailed overview of the Java Virtual Machine, including the internal structure of the class file format, the internal form of Fully Qualified Class and Interface names, and the implementation of new class instances.
Related Papers (5)
Norihisa Suzuki,Kiyoshi Ishihata +1 more
- 01 Jan 1977
Patrick Cousot,Nicolas Halbwachs +1 more
- 01 Jan 1978
[...]
George C. Necula
- 01 Jan 1997
Rastislav Bodik,Rajiv Gupta,Vivek Sarkar +2 more
- 01 May 2000