qbytearray初始化全0_学术报告|于小异中求大同:利用差分重放技术检测未初始化变量的使用...

本文介绍了一种名为TimePlayer的工具,它结合差分重放和符号化污点分析,用于检测操作系统中未初始化变量的使用,尤其在Windows系统上发现大量漏洞。该工具解决了现有动态分析工具如Bochspwn Reloaded的局限性,提高了检测效率,同时减少了开销。通过对不同软件的测试,TimePlayer在7个月内发现了34个已确认的漏洞,优于其他工具。
摘要由CSDN通过智能技术生成
87f841f992dee472df48a408b7624985.png

Different Is Good: Detecting the Use of Uninitialized Variables Through Differential Replay

报告人:jxin

0bbdd65a3974c8f5e8d3429d4433c26a.png

本文发表于网络安全顶会CCS 19,作者团队来自阿里巴巴-浙江大学前沿技术联合研究中心网络空间安全实验室(AZFT),其中第一作者是阿里巴巴猎户座安全实验室的曹梦晨。本文是国内首次以企业为第一作者在CCS发表论文。

87c9fb222b884bc15c8c2fba21d91063.gif   一、主要内容    

1. 关注点

        在Windows和Linux等现代操作系统中,变量的值在其未被显式初始化之前是不确定的,这就导致程序中若是不慎使用了未初始化变量,不仅会引发程序错误,而且当未初始化变量跨越不同的权限域时,可能危及系统的安全性。比如说,在内核地址空间布局随机化(KASLR)机制下,如果某块内存中存放着内核对象的地址,但使用那块内存的变量未进行初始化从而泄漏到用户空间,将极大损害KASLR的安全性。攻击者可以根据泄漏的信息进行权限提升。

2. 问题原因

        目前,针对闭源操作系统中未初始化变量的检查较为困难,作者给出了两个方面的原因:一是从静态分析的角度,需要源码,而且现代编译器(gcc, clang等)仅具备简单的检测功能,大多局限于某个函数,对于数组、指针、循环、结构体、联合体等无能为力。二是从动态分析的角度,需要触发点,而且使用未初始化变量这类内存泄漏问题通常并不会造成crash或者其它可以明显感知到的影响。

        对全系统进行动态污点分析是一种理所当然的想法,即在分配栈或堆时设置source,当被赋值时就去除污点标记。如果程序使用了一块带污点的内存,就能确定使用了未初始化变量。但是缺点也显而易见,进行全系统的污点分析会带来极大的开销(实验中有对比评估)。

        目前效果最好的动态分析工具是Bochspwn Reloaded,虽然能够检测出大量的未初始化变量的漏洞,但它为了减小开销,仅对特定类型指令进行污点传播,因此存在着漏报的问题。作者在文中选取了一个Motivation Example来展示该工具的局限性。

         指令01:分配栈上变量,未进行初始化</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值