【24h】

Protecting C programs from attacks via invalid pointer dereferences

机译:通过无效的指针取消引用保护C程序免受攻击

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

摘要

Writes via unchecked pointer dereferences rank high among vulnerabilities most often exploited by malicious code. The most common attacks use an unchecked string copy to cause a buffer overrun, thereby overwriting the return address in the function's activation record. Then, when the function "returns", control is actually transferred to the attacker's code. Other attacks may overwrite function pointers, setjmp buffers, system-call arguments, or simply corrupt data to cause a denial of service.A number of techniques have been proposed to address such attacks. Some are limited to protecting the return address only; others are more general, but have undesirable properties such as having a high runtime overhead, requiring manual changes to the source code, or forcing programmers to give up control of data representations and memory management.This paper describes the design and implementation of a security tool for C programs that addresses all these issues: it has a low runtime overhead, does not require source code modification by the programmer, does not report false positives, and provides protection against a wide range of attacks via bad pointer dereferences, including but not limited to buffer overruns and attempts to access previously freed memory. The tool uses static analysis to identify potentially dangerous pointer dereferences, and memory locations that are legitimate targets of these pointers. Dynamic checks are then inserted; if at runtime the target of an unsafe dereference is not in the legitimate set, a potential security violation is reported, and the program is halted.
机译:通过未经检查的指针取消引用进行的写操作在恶意代码最常利用的漏洞中排名很高。最常见的攻击使用未经检查的字符串副本导致缓冲区溢出,从而覆盖函数激活记录中的返回地址。然后,当函数“返回”时,控制实际上转移到了攻击者的代码上。其他攻击可能会覆盖函数指针,setjmp缓冲区,系统调用参数或仅破坏数据以导致拒绝服务。已提出了许多技术来应对此类攻击。有些只限于保护返回地址。其他工具则更通用,但具有不良的属性,例如运行时开销高,需要手动更改源代码或迫使程序员放弃对数据表示和内存管理的控制。本文介绍了安全工具的设计和实现。适用于解决所有这些问题的C程序:它具有较低的运行时开销,不需要程序员修改源代码,不报告误报并通过错误的指针取消引用提供了针对广泛攻击的保护,包括但不限于缓冲超速并尝试访问以前释放的内存。该工具使用静态分析来识别潜在危险的指针取消引用以及作为这些指针合法目标的内存位置。然后插入动态检查;如果在运行时不安全取消引用的目标不在合法集中,则报告潜在的安全冲突,并暂停程序。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号