Detecting concurrency memory corruption vulnerabilities

现状

在多线程执行中会出现内存损坏的漏洞,在该篇论文称之为并发性漏洞。由于非确定性的多线程执行,它们极难被发现。并发漏洞常常被攻击者利用和攻击,给软件的安全带来严重威胁,但是并发漏洞的检测十分困难。
一种直观的检测方法是遍历所有的线程交错来检测并发漏洞,但是会带来交错状态空间爆炸的问题。目前一些研究者用数据竞争的检测方法来检测并发漏洞,但是由于数据竞争和并发漏洞并不等价,这种方法实际应用中并不是很有效。一些最新的基于约束求解的工作也存在较多误报问题。

针对

针对与事件发生序相关的三类并发漏洞(释放后重用UAF、空指针解引用NPD和双重释放DF)进行检测。

UAF

如果线程t2在线程t1之前执行了它的所有三条线,就会发生并发性UAF

NPD

当一个指针被设置为NULL并在之后被取消引用时,会发生NULL指针取消引用。
(a)一个线程t1解除了对一个指针p的定义,第二个线程t2后来将该指针设置为NULL。然而,如果两个事件的顺序可以颠倒,这样线程t2首先将指针写为NULL,然后线程t1试图解指这个指针,就会造成并发NPD。
(b)如果指针写入事件p = q发生在线程t2的NULL写入事件之前(如4)或线程t1的指针解除定义之后(如3或5),就会发生并发性NPD。

DF

当一个内存位置被释放两次时,就会出现双重释放DF漏洞。(a)中的情况不会出现DF,因为释放的应该是两个不同内存块,(b)会出现。

提出

检测并发漏洞的关键就是判断目标事件之间的顺序是否可以交换。【给定两个距离较近的事件,如果它们和第三个事件满足一定的关系,那么这两个事件将有较高的概率可被交换。】
本文提出了松弛可交换事件的概念。基于松弛可交换事件,进一步提出了针对上述三类并发漏洞的检测算法并实现了相应的原型工具。

实现

(1)检测UAF:

给定一个正确的执行轨迹,它跟踪所有的内存访问并更新相应的向量时钟。之后,如果p上有任何自由调用(表示为事件ef ),算法2检查是否有任何事件访问p指向的内存块(表示为事件em)。对于任何这样的事件em,如果em和ef 是可交换的事件,则报告一个潜在的并发性UAF。

(2)检测NPD:

(a)跟踪NULL值写入、非NULL值写入和对指针p的读取(即取消引用),在运行期间,对于每个内存写入,检查写入指针p的值。如果该值是NULL,并且有一个读事件到同一个指针p,并且该p是可交换事件,将报告一个并发NPD。
(b)对于一个指向指针p的内存读取事件e,如果有两个事件(e1和e2,即之前图中2和3、4、5中的一个)向p写入一个NULL值和一个非NULL值,会进一步检查以下条件来检测并发性NPD。
1.如果两个事件e1和e2是可交换的事件,就会报告一个并发NPD。即之前图中2和4或2和5。
2.如果两个事件e和e1 or e2是可交换的事件,也会报告一个并发性NPD。即之前图中1和3或1和5

(3)检测DF:

如果存在任何潜在的并发DF,一定存在三个事件:两个不同线程对同一个指针的两个free事件和对同一个指针的一个赋值。
给定一个实际上由线程t释放内存m的free事件free§(表示为事件e1),它试图从内存m中找到一个先前分配给指针p的事件(表示为事件e2),这样在同一个指针p上也有一个先前的free事件(表示为e3)。
报告并发性DF:
情况(a):两个事件e 2和e3是可交换的事件,即上图中线程t2对p有分配的情况。
情况(b):两个事件e1和e2是可交换的事件,即上图中线程t1或t3对p有分配的情况。

【论文阅读】Detecting concurrency memory corruption vulnerabilities相关推荐

  1. VideoQA论文阅读笔记——Heterogeneous Memory Enhanced Multimodal Attention Model for Video Question Answering

    论文:Heterogeneous Memory Enhanced Multimodal Attention Model for VQA 来源:CVPR2019 作者:京东研究院 源码: Github ...

  2. 论文阅读--Adapted Dynamic Memory Network for Emotion Recognition in Conversation

    Adapted Dynamic Memory Network for Emotion Recognition in Conversation Xing S , Mai S , Hu H . Adapt ...

  3. Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读笔记

    Staring into the Abyss: An Evaluation of Concurrency Control with One Thousand Cores 论文阅读笔记 Concurre ...

  4. ECCV2018 | 论文阅读CornerNet: Detecting Objects as Paired Keypoints

    CornerNet论文阅读--CornerNet: Detecting Objects as Paired Keypoints 文章目录 CornerNet论文阅读--CornerNet: Detec ...

  5. Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling论文阅读

    <Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling& ...

  6. 论文阅读:Exposing DeepFake Videos By Detecting FaceWarping Artifacts

    论文阅读:Exposing DeepFake Videos By Detecting FaceWarping Artifacts 现在对于论文阅读还是比较头疼,很多翻译都很奇怪,还是要提高英语能力啊, ...

  7. [论文阅读] (13)英文论文模型设计(Model Design)如何撰写及精句摘抄——以入侵检测系统(IDS)为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  8. [论文阅读] (12)英文论文引言introduction如何撰写及精句摘抄——以入侵检测系统(IDS)为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

  9. [论文阅读] (18)英文论文Model Design和Overview如何撰写及精句摘抄——以系统AI安全顶会为例

    <娜璋带你读论文>系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢.由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学 ...

最新文章

  1. 关于双目立体视觉的三大基本算法及发展现状的总结
  2. Excel中文字换行
  3. SpringMVC的请求-文件上传-多文件上传的代码实现
  4. linux100day(day5)--编程原理和shell脚本
  5. Scite 中文支持
  6. Spring基础面试题-同步更新
  7. hive中实现行转列_Hive之行转列lateral view用法
  8. 开源.NET(C#、VB.NET、J#等)脚本执行引擎(利用CodeDOM)
  9. 隐式差分方程组差分法matlab,一维扩散方程的有限差分法matlab
  10. 【游戏开发实战】Unity实现水果忍者切水果的刀痕效果教程(两种实现方式:TrailRenderer、LineRenderer)
  11. 跑跑卡丁车手游怎么用电脑玩 跑跑卡丁车模拟器玩法教程
  12. 微信小程序用地理编码做地图标注
  13. 程序员可迁移技能的培养
  14. Apache占用tcp6的80端口
  15. 下载文件提示【SmartScreen筛选器已阻止了下载】,处理方法
  16. 简单易懂的P2P通信原理
  17. 整合经营模式之道——整合经营模式IMO的股票畅想
  18. 信息系统项目管理师高频考点(第八章)
  19. 常用芯片数据手册——MP2315S/3A、24V、500kHz、高效率同步降压变换器(MPS)
  20. python——经纬度坐标和平面投影坐标的相互转换

热门文章

  1. 你必须要看的IT培训机构选择意见
  2. Python开发环境安装及Project interpreter not specified问题解决
  3. web缓存—Squid代理服务
  4. 特斯拉自动驾驶功能更新:将上线红绿灯识别自动停车
  5. 通用Excel数据导入功能模板
  6. 解决Android在更新安装包时出现“未安装应用”的情况
  7. Debug的心路历程
  8. cad怎么画立体图形教学_cad怎么绘立体图?
  9. php 计算工资,php计算税后工资的方法_PHP
  10. 思维导图 - 学习/实践