利用CCured和BLAST检测C程序缓冲区溢出的新型方法

需积分: 4 0 下载量 175 浏览量 更新于2024-09-08 收藏 289KB PDF 举报
"一种针对C程序缓冲区溢出的检测方法" 本文主要介绍了一种结合CCured和BLAST工具来检测C程序中缓冲区溢出漏洞的新型方法。缓冲区溢出是C语言编程中常见的安全问题,可能导致系统崩溃、数据丢失,甚至被恶意攻击者利用执行任意代码。为了解决这一问题,研究者提出了以下步骤: 首先,利用CCured对C语言源代码进行处理。CCured是一种静态分析工具,它通过插入额外的检查代码(即插桩)来增强源代码,以实现运行时检测。这些插桩代码主要用于在程序执行过程中监视内存分配和访问操作,以识别潜在的缓冲区溢出风险。 接着,引入了BLAST(Bound Analysis for Software Tools,边界分析软件工具)。BLAST提供了一种自定义安全属性的语言,可以用来描述上述插桩代码中的安全约束。这些约束描述了程序应该满足的安全条件,例如,指针不能超出其分配的缓冲区范围,读写操作应限定在特定的内存区域等。 最后,将由CCured处理并插入插桩代码的C程序和由BLAST生成的约束描述文件相结合。BLAST会执行模型检测,对程序的行为进行深度分析,检查程序是否违反了预定义的安全属性。如果发现违反约束的情况,BLAST将报告可能的缓冲区溢出漏洞,从而帮助开发者定位并修复问题。 这种方法的优势在于,它不仅依赖于编译时的静态分析,还结合了运行时的动态检测,提高了检测的准确性和全面性。通过CCured的插桩技术和BLAST的模型检测,可以在不显著影响程序性能的情况下,尽可能地发现并防止缓冲区溢出的发生。 此外,该研究还提到了其背景,指出此方法是在国家自然科学基金可信软件重大研究计划资助下完成的,表明了学术界对于软件安全问题的重视,特别是对于C语言这种广泛使用的编程语言的漏洞检测。 关键词:CCured,BLAST,模型检测,缓冲区溢出,安全属性 通过这种方法,研究人员和开发者能够更有效地检测和预防C程序中的缓冲区溢出漏洞,提高软件的安全性和可靠性。在实际应用中,这有助于降低因缓冲区溢出导致的安全事件,保护用户的数据安全,并提升软件的整体质量。