290 likes | 446 Views
Platform-Independent Programs. Sang Kil Cha, Brian Pak, David Brumley Carnegie Mellon University Richard J. Lipton Georgia Institute of Technology. 17 th ACM CCS (October, 2010). Outline. Introduction Problem Statement Approach RG Design Implementation Related Work. Introduction.
E N D
Platform-Independent Programs Sang Kil Cha, Brian Pak, David Brumley Carnegie Mellon University Richard J. Lipton Georgia Institute of Technology 17th ACM CCS (October, 2010)
Outline • Introduction • Problem Statement • Approach • RG Design • Implementation • Related Work A Seminar at Advanced Defense Lab
Introduction x86 A Seminar at Advanced Defense Lab
Platform-Independent Program? • A typical and often implicit security assumption is that a program is only semantically meaningful on one platform • Radically different instruction sets • Different program encodings • But, is it true? A Seminar at Advanced Defense Lab
In this paper • Automatically generate a single binary string that • is a valid program on some architectures • can have completely different desired runtime behaviors A Seminar at Advanced Defense Lab
Security-Critical Implications • Steganography. • m1(b) = normal program • m2(b) = secret information • Rogue Updates • m1(b) = normal program • mupdate(b) = malware • Security measures, such as digitally signing the code, are insufficient since they only verify the code itself has not been tampered with, not the execution environment A Seminar at Advanced Defense Lab
Security-Critical Implications • Exfiltration Protection • m1(b) = important program • m2(b) = delete itself • Viruses and Shellcode • New Architecture • A company switches from architecture A to B A Seminar at Advanced Defense Lab
Problem Statement • Notation • ∑ = {0, 1} • Bit string • mj(bi) • The execution of program bi on machine mj • (bi, mj) • bi is compiled for mj • bi is not a valid string on mj A Seminar at Advanced Defense Lab
Problem Definition • Platform-Independent Program • PIP generation challenge • Given (bi, mj) list A Seminar at Advanced Defense Lab
Approach b1 b2 b3 bpip A Seminar at Advanced Defense Lab
Gadgets b1 b2 b3 A Gadget A Seminar at Advanced Defense Lab
Gadget Header Example A Seminar at Advanced Defense Lab
Connecting Gadgets A Seminar at Advanced Defense Lab
Generation Algorithm A Seminar at Advanced Defense Lab
RG Design • Header-Init: Finding Gadget Headers • (nop)* (jmp) (.)* • Header generation algorithm • Enumeration all possible string X • several days for 4-byte header • Make header templates • Computing the intersection of templates A Seminar at Advanced Defense Lab
RG Design • Disassemble, Gadget-Gen, and Merge A Seminar at Advanced Defense Lab
RG Design – PI Translation A Seminar at Advanced Defense Lab
PI Translation A Seminar at Advanced Defense Lab
Implementation • RG is currently implemented in about 5,000 lines of a mixture of C++ and Ruby. • The gadget finder program finds all the possible 4-byte, 8-byte, and 12-byte gadget headers A Seminar at Advanced Defense Lab
Instruction Validity • 32-bit long • 90.12% for ARM • 68.46% for MIPS • 32.69% for x86 12.31% A Seminar at Advanced Defense Lab
Gadget Header • Atomic NOPs • 326 for x86 • 241 for ARM • 14,709,948 for MIPS • Three-architecture gadget headers • 4×1014 for 12-byte long • 0.07 sec for 4-byte, 16 secs for 8-byte, 7 hours for 12-byte A Seminar at Advanced Defense Lab
Gadget Header A Seminar at Advanced Defense Lab
Evaluation • Hello world • Prime Checker • Shellcode • Vulnerabilities • Snort 2.4 • iPhone’scoreaudio library A Seminar at Advanced Defense Lab
Evaluation Using PI Translation A Seminar at Advanced Defense Lab
Evaluation A Seminar at Advanced Defense Lab
Related Work • Muti-Platform Execution • Fat binary • two independent program images are combined with special meta-data that is used at run-time to select the appropriate image • Drew Dean in 2003 • Nemo in 2005 [link] A Seminar at Advanced Defense Lab
Related Work(cont.) • Steganography • Simmons in 1984 • The prisoner’s problem A Seminar at Advanced Defense Lab
Discussion • PIP length • More Gadget Headers • Large Input Programs • Indirect Jumps and Self-Modifying Code • Generating Platform • m(b) = normal program • generate m’ • m’(b) = malware A Seminar at Advanced Defense Lab
Thank You A Seminar at Advanced Defense Lab