z-logo
open-access-imgOpen Access
Filter-resistant code injection on ARM
Author(s) -
Yves Younan,
Pieter Philippaerts,
Frank Piessens,
Wouter Joosen,
Sven Lachmund,
Thomas Walter
Publication year - 2010
Publication title -
journal in computer virology
Language(s) - English
Resource type - Journals
eISSN - 1772-9904
pISSN - 1772-9890
DOI - 10.1007/s11416-010-0146-0
Subject(s) - computer science , alphanumeric , code (set theory) , software , machine code , operating system , programming language , dead code , embedded system , code generation , redundant code , set (abstract data type) , key (lock) , compiler
Code injections attacks are one of the most powerful and important classes of attacks on software. In such attacks, the attacker sends malicious input to a software application, where it is stored in mem- ory. The malicious input is chosen in such a way that its represen- tation in memory is also a valid representation of a machine code program that performs actions chosen by the attacker. The attacker then triggers a bug in the application to divert the control flow to this injected machine code. A typical action of the injected code is to launch a command interpreter shell, and hence the malicious input is often called shellcode. Attacks are usually performed against network facing applica- tions, and such applications often perform validations or encodings on input. Hence, a typical hurdle for attackers, is that the shell- code has to pass one or more filtering methods before it is stored in the vulnerable application's memory space. Clearly, for a code injection attack to succeed, the malicious input must survive such validations and transformations. Alphanumeric input (consisting only of letters and digits) is typically very robust for this purpose: it passes most filters and is untouched by most transformations. This paper studies the power of alphanumeric shellcode on the ARM 32 bit RISC processor. It shows that the subset of ARM ma- chine code programs that (when interpreted as data) consist only of alphanumerical characters is a Turing complete subset. This is a non-trivial result, as the number of instructions that consist only of alphanumeric characters is very limited. To craft useful ex- ploit code (and to achieve Turing completeness), several tricks are needed, including the use of self-modifying code.

The content you want is available to Zendy users.

Already have an account? Click here to sign in.
Having issues? You can contact us here
Accelerating Research

Address

John Eccles House
Robert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom