麻省理工学院测试“软件移植” 修复代码中的漏洞

简介:

类似于到垃圾场去找一辆老式车的便宜部件,麻省理工学院的研究人员找到了一种方法,通过插入来源于其它程序中的工作代码,修复软件漏洞。

software-bug-web-620x420

研究者们使用一种被称为CodePahge的系统,通过测试找到七种流行开源软件中的漏洞,在每个案例中,函数都来源于两到四个“供体”程序。

修复这样的错误可以使程序更加安全,因为居心不轨的黑客经常利用漏洞来获得系统的访问权限。CodePahge能够识别并解决常见的程序错误,如越界访问、整数溢出、零作为除数等。

研究人员在本周一出版的Phys.Org杂志上描述了他们的方法。他们还在上个月美国计算机协会(ASSOciation for Computing Machinery)举行的编程大会上对其展开了讨论。

在修复存在漏洞的程序时,CodePhage会请求两个样本输入,其中一个会导致目标程序崩溃,另一个则不会。

CodePhage通过另一个程序加载这些输入,该程序被称为供体程序,拥有与目标程序相似的功能。互联网上能够作为供体的开源程序随处可见,但供体程序并不一定是开源的。

在观察供体程序处理不会导致崩溃的输入的过程时,CodePhage会记录程序的所有行动,还会通过符号逻辑将过程记录下来。然后,CodePhage会分析两种输入的处理过程有何不同,并使用得到的信息来更正目标程序。

在许多情况下,目标程序缺乏供体程序所具有的安全检查功能。一般的软件中最高可能会有80%的代码被用于进行安全检查。通过将它们自动插入Build进程,CodePhage可以减少开发者用于编写安全检查的时间。

麻省理工大学并不是在此方向上努力的唯一机构。今年早些时候,安全公司Qualys发布了一款软件,可以对发现的漏洞打上虚拟补丁,从而使得人们不需要等待软件供应商发布更新。


作者:Venvoo


来源:51CTO


相关文章
|
9月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
592 1
|
10月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
884 0
|
8月前
|
安全 Java 测试技术
《深入理解Spring》单元测试——高质量代码的守护神
Spring测试框架提供全面的单元与集成测试支持,通过`@SpringBootTest`、`@WebMvcTest`等注解实现分层测试,结合Mockito、Testcontainers和Jacoco,保障代码质量,提升开发效率与系统稳定性。
|
8月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
360 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
9月前
|
安全 NoSQL Shell
web渗透-SSRF漏洞及discuz论坛网站测试
SSRF(服务器端请求伪造)是一种安全漏洞,攻击者可诱使服务端发起任意请求,进而探测或攻击内网系统。常用于端口扫描、访问内部服务、读取本地文件等。常见防御包括限制协议、域名和IP,但可通过302跳转、短地址等方式绕过。
469 1
web渗透-SSRF漏洞及discuz论坛网站测试
|
9月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
12月前
|
测试技术 Go 开发者
如何为 gRPC Server 编写本地测试代码
本文介绍了如何使用 Go 语言中的 gRPC 测试工具 **bufconn**,通过内存连接实现 gRPC Server 的本地测试,避免端口冲突和外部依赖。结合示例代码,讲解了初始化内存监听、自定义拨号器及编写测试用例的完整流程,并借助断言库提升测试可读性与准确性。适用于单元及集成测试,助力高效开发。
260 1
|
11月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
363 0
|
测试技术
软考软件测评师大题——案例分析之白盒测试
历年下午案例试题一固定考察白盒测试,主要包含三大核心问题:推导逻辑条件、绘制控制流图及计算环路复杂度、确定线性无关路径集合。内容涵盖覆盖层级标准(语句、分支、判定、条件覆盖等)、控制流图构建规范(顺序、分支、循环结构转换原则)、环路复杂度计算公式以及线性无关路径生成方法。通过典型题型示例解析,如代码路径分析与验证指标,帮助考生掌握解题思路和技巧。

热门文章

最新文章