...
首页> 外文期刊>Journal in computer virology >Filter-resistant code injection on ARM
【24h】

Filter-resistant code injection on ARM

机译:ARM上的抗过滤代码注入

获取原文
获取原文并翻译 | 示例
   

获取外文期刊封面封底 >>

       

摘要

Code injection attacks are one of the most powerful and important classes of attacks on software. In these attacks, the attacker sends malicious input to a software application, where it is stored in memory. The malicious input is chosen in such a way that its representation 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 applications, and such applications often perform validations or encodings on input. Hence, a typical hurdle for attackers, is that the shellcode 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 architecture. It shows that the subset of ARM machine 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 exploit code (and to achieve Turing completeness), several tricks are needed, including the use of self-modifying code.
机译:代码注入攻击是对软件进行的功能最强大,最重要的攻击之一。在这些攻击中,攻击者将恶意输入发送到软件应用程序,并将其存储在内存中。选择恶意输入的方式应使其在内存中的表示形式也是执行攻击者选择的动作的机器代码程序的有效表示形式。然后,攻击者在应用程序中触发一个错误,将控制流转移到此注入的机器代码上。注入的代码的典型动作是启动命令解释程序外壳程序,因此恶意输入通常称为外壳程序代码。通常针对面向网络的应用程序执行攻击,并且此类应用程序通常对输入执行验证或编码。因此,对于攻击者来说,一个典型的障碍是,shellcode必须先通过一种或多种过滤方法,然后再将其存储在易受攻击的应用程序的内存空间中。显然,要使代码注入攻击成功,恶意输入必须在这种验证和转换后仍然存在。为此,字母数字输入(仅由字母和数字组成)通常非常健壮:它可以通过大多数过滤器,并且不受大多数​​转换的影响。本文研究了字母数字shellcode在ARM体系结构上的功能。它显示了仅由字母数字字符组成的ARM机器代码程序的子集(当解释为数据时)是Turing完整子集。这是不平凡的结果,因为仅包含字母数字字符的指令数量非常有限。为了制作有用的利用代码(并实现图灵完整性),需要一些技巧,包括使用自修改代码。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号