@article {704, title = {Randomized instruction set emulation}, journal = {ACM Transactions on Information and System Security (TISSEC)}, volume = {8}, year = {2005}, month = {02/2005}, pages = {3{\textendash}40}, abstract = {

Injecting binary code into a running program is a common form of attack. Most defenses employ a {\textquotedblleft}guard the doors{\textquotedblright} approach, blocking known mechanisms of code injection. Randomized instruction set emulation (RISE) is a complementary method of defense, one that performs a hidden randomization of an application{\textquoteright}s machine code. If foreign binary code is injected into a program running under RISE, it will not be executable because it will not know the proper randomization. The paper describes and analyzes RISE, describing a proof-of-concept implementation built on the open-source Valgrind IA32-to-IA32 translator. The prototype effectively disrupts binary code injection attacks, without requiring recompilation, linking, or access to application source code. Under RISE, injected code (attacks) essentially executes random code sequences. Empirical studies and a theoretical model are reported which treat the effects of executing random code on two different architectures (IA32 and PowerPC). The paper discusses possible extensions and applications of the RISE technique in other contexts.

}, keywords = {Automated Diversity, randomized instruction sets, software diversity}, doi = {10.1145/1053283.1053286}, url = {https://dl.acm.org/citation.cfm?id=1053286}, author = {Barrantes, Elena Gabriela and Ackley, David H and Forrest, Stephanie and Stefanovic, Darko} } @conference {702, title = {Randomized instruction set emulation to disrupt binary code injection attacks}, booktitle = {Proceedings of the 10th ACM conference on Computer and communications security}, year = {2003}, month = {10/2003}, publisher = {ACM}, organization = {ACM}, address = {Washington D.C., USA}, abstract = {

Binary code injection into an executing program is a common form of attack. Most current defenses against this form of attack use a {\textquoteright}guard all doors{\textquoteright} strategy, trying to block the avenues by which execution can be diverted. We describe a complementary method of protection, which disrupts foreign code execution regardless of how the code is injected. A unique and private machine instruction set for each executing program would make it difficult for an outsider to design binary attack code against that program and impossible to use the same binary attack code against multiple machines. As a proof of concept, we describe a randomized instruction set emulator (RISE), based on the open-source Valgrind x86-to-x86 binary translator. The prototype disrupts binary code injection attacks against a program without requiring its recompilation, linking, or access to source code. The paper describes the RISE implementation and its limitations, gives evidence demonstrating that RISE defeats common attacks, considers how the dense x86 instruction set affects the method, and discusses potential extensions of the idea.

}, keywords = {Automated Diversity, Emulation, Information Hiding, Language Randomiza- tion, Obfuscation, Security}, isbn = {ISBN:1-58113-738-9 }, doi = {10.1145/948109.948147}, url = {https://dl.acm.org/citation.cfm?id=948147}, author = {Barrantes, Elena Gabriela and Ackley, David H and Palmer, Trek S and Stefanovic, Darko and Zovi, Dino Dai} }