| 
 
Instruction-set randomization (ISR) is a technique based on
randomizing the "language" understood by a system to protect it from 
code-injection attacks. Such attacks were used
by many computer worms in the past, but still pose a threat
as it was confirmed by the recent Conficker worm outbreak,
and the latest exploits targeting some of Adobe's most popular products. 
We created a tool that offers a fast and practical implementation 
of ISR that can be applied on currently deployed
software. It builds on Intel's Pin 
binary instrumentation
tool to provide the ISR-enabled execution environment entirely in software. 
Applications are randomized using a simple XOR function and a 16-bit key that 
is randomly generated every time an application is launched. Shared libraries
can be also randomized using separate keys, and their randomized versions can 
be used by all applications running under ISR. 
Moreover, we introduce a key management system to keep track of the keys used 
in the system.
 
Our tool is freely available for Linux operating systems, and can be 
obtained from here. 
  
Basic concept of ISR
 
Instruction-set randomization can be also implemented in hardware, as the 
original ISR work proposed. Additionally, ISR can be adopted globally 
across the 
software stack, preventing the execution of unauthorized binaries and
scripts regardless of their origin. This approach requires that
programs are randomized with different keys during a user-controlled
installation, effectively combining the benefits of code
whitelisting/signing and runtime program integrity. Such an
environment for binaries can be implemented with little
overhead in hardware, while higher-overhead software-only
alternatives, like ISR using Pin, are also possible. 
 
People
Prof. Angelos Keromytis, Columbia University 
Georgios Portokalidis, Columbia University 
 
Related papers
 
Fatal error:  Uncaught ArgumentCountError: gmmktime() expects at least 1 argument, 0 given in /var/www/html/projects/minestrone/functions.inc:5
Stack trace:
#0 /var/www/html/projects/minestrone/functions.inc(5): gmmktime()
#1 /var/www/html/projects/minestrone/isr/description.inc(51): print_pubs('ISR', '../')
#2 /var/www/html/projects/minestrone/isr/index.php(32): include('/var/www/html/p...')
#3 {main}
  thrown in /var/www/html/projects/minestrone/functions.inc on line 5 
 |