|
ABSTRACT
Executing binaries without interference by an outside adversary has been an ongoing duel between protection methods and attacks. Recently, an efficient kernel-patch attack has been presented against commonly used self-checking code techniques that use checksumming ahead of execution. While methods based on self-modifying code can defend against this attack, such techniques depend on low-level architectural details and may not be practical in the long run. An alternative defense is to use oblivious hashing (OH). Instead of checking code integrity prior to execution, OH can verify untampered runtime behavior continuously. However, earlier OH approaches have some weaknesses, particularly with binary code: Physical instruction bytes cannot be easily checked during execution, and an attacker may be able to detect and remove OH checks, since OH alone does not provide tamper-resistance or obfuscation. In our approach, we deliberately overlap a program's basic blocks so that they share instruction bytes. This increases tamper-resistance implicitly because malicious modifications affect multiple instructions simultaneously. Also, our scheme facilitates explicit anti-tampering checks via injection of OH instructions overlapped with target code, enabling OH that can verify integrity of both runtime state and executing instructions. Thus, our method addresses anti-checksum attacks without resorting to self-modifying code, and also extends OH to verify physical code, not only program state. In addition, overlapping facilitates resistance against disassembly and decompilation. Our approach works on processor architectures and byte-codes that support variable-length instructions. To our knowledge, this is the first technique that blends tamper-resistance into architecture and therefore significantly improves robustness of binaries.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Cloakware. http://www.cloakware.com.
|
| |
2
|
Dotfuscator. http://www.preemptive.com/products/dotfuscator.
|
| |
3
|
Safedisc. http://www.macrovision.com/products/safedisc.
|
| |
4
|
SpecCPU benchmark. http://www.spec.org.
|
| |
5
|
Trusted Computing Platform Alliance. http://www.trustedpc.org.
|
 |
6
|
Martín Abadi , Mihai Budiu , Úlfar Erlingsson , Jay Ligatti, Control-flow integrity, Proceedings of the 12th ACM conference on Computer and communications security, November 07-11, 2005, Alexandria, VA, USA
[doi> 10.1145/1102120.1102165]
|
 |
7
|
|
| |
8
|
|
| |
9
|
Boaz Barak , Oded Goldreich , Russell Impagliazzo , Steven Rudich , Amit Sahai , Salil P. Vadhan , Ke Yang, On the (Im)possibility of Obfuscating Programs, Proceedings of the 21st Annual International Cryptology Conference on Advances in Cryptology, p.1-18, August 19-23, 2001
|
| |
10
|
|
| |
11
|
D. Boneh and R. Lipton. On the importance of checking cryptographic protocols for faults. In Eurocrypt 1997.
|
| |
12
|
M. Cary, M. Jakubowski, and R. Venkatesan. Iterated obfuscation for white-boxing AES-like cipers (unpublished).
|
| |
13
|
|
| |
14
|
Yuqun Chen , Ramarathnam Venkatesan , Matthew Cary , Ruoming Pang , Saurabh Sinha , Mariusz H. Jakubowski, Oblivious Hashing: A Stealthy Software Integrity Verification Primitive, Revised Papers from the 5th International Workshop on Information Hiding, p.400-414, October 07-09, 2002
|
| |
15
|
S. Chow, P. Eisen, H. Johnson, and P. van Oorschot. A white-box DES implementation for DRM applications. In ACM DRM 2002.
|
| |
16
|
|
| |
17
|
|
 |
18
|
Christian Collberg , Clark Thomborson , Douglas Low, Manufacturing cheap, resilient, and stealthy opaque constructs, Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.184-196, January 19-21, 1998, San Diego, California, United States
[doi> 10.1145/268946.268962]
|
 |
19
|
|
| |
20
|
N. Dedic, M. H. Jakubowski, and R. Venkatesan. A graph game model for software tamper protection. In Information Hiding, 2007.
|
| |
21
|
|
| |
22
|
|
 |
23
|
Tal Garfinkel , Ben Pfaff , Jim Chow , Mendel Rosenblum , Dan Boneh, Terra: a virtual machine-based platform for trusted computing, Proceedings of the nineteenth ACM symposium on Operating systems principles, October 19-22, 2003, Bolton Landing, NY, USA
|
| |
24
|
W. H. Gates. Personal communication.
|
| |
25
|
|
| |
26
|
|
| |
27
|
G. Hunt, J. Larus, D. Tarditi, and T. Wobber. Broad new OS research. In HotOS 2005.
|
| |
28
|
M. Jacob, D. Boneh, and E. Felten. Attacking an obfuscated cipher by injecting faults. In ACM DRM 2002.
|
| |
29
|
M. H. Jakubowski and R. Venkatesan. Protecting digital goods using oblivious checking, US Patent No. 7,080,257, filed on Aug. 30, 2000, granted on July 18, 2006.
|
| |
30
|
P. Kocher. Timing attacks on implementations of Diffie-Hellman, RSA, DSS, and other systems. In Crypto 1996.
|
| |
31
|
Christopher Kruegel , William Robertson , Fredrik Valeur , Giovanni Vigna, Static disassembly of obfuscated binaries, Proceedings of the 13th conference on USENIX Security Symposium, p.18-18, August 09-13, 2004, San Diego, CA
|
| |
32
|
J. C. Lagarias, E. Rains, and R. J. Vanderbei. The Kruskal Count. http://xxx.lanl.gov/math.PR/0110143.
|
 |
33
|
|
 |
34
|
David Lie Chandramohan Thekkath , Mark Mitchell , Patrick Lincoln , Dan Boneh , John Mitchell , Mark Horowitz, Architectural support for copy and tamper resistant software, Proceedings of the ninth international conference on Architectural support for programming languages and operating systems, p.168-177, November 2000, Cambridge, Massachusetts, United States
|
| |
35
|
C.-L. Lin, H.-Y. Chen, and T.-W. Hou. Tamper-proofing of Java programs by oblivious hashing. In CTHCP 2005: 11th Workshop on Compiler Techniques for High-Performance Computing.
|
| |
36
|
B. Lynn, M. Prabhakaran, and A. Sahai. Positive results and techniques for obfuscation. In Eurocrypt 2004.
|
 |
37
|
|
| |
38
|
D. A. Osvik, A. Shamir, and E. Tromer. Cache attacks and countermeasures: The case of AES. In CT-RSA 2006.
|
 |
39
|
Arvind Seshadri , Mark Luk , Elaine Shi , Adrian Perrig , Leendert van Doorn , Pradeep Khosla, Pioneer: verifying code integrity and enforcing untampered code execution on legacy systems, Proceedings of the twentieth ACM symposium on Operating systems principles, October 23-26, 2005, Brighton, United Kingdom
|
| |
40
|
|
| |
41
|
|
| |
42
|
A. Srivastava, A. Edwards, and H. Vo. Vulcan - binary transformation in a distributed environment. Technical Report MSR-TR-2001-50, MSR, 2001.
|
 |
43
|
G. Edward Suh , Dwaine Clarke , Blaise Gassend , Marten van Dijk , Srinivas Devadas, AEGIS: architecture for tamper-evident and tamper-resistant processing, Proceedings of the 17th annual international conference on Supercomputing, June 23-26, 2003, San Francisco, CA, USA
[doi> 10.1145/782814.782838]
|
| |
44
|
|
| |
45
|
|
 |
46
|
|
| |
47
|
|
 |
48
|
|
|