G.O.S.S.I.P 阅读推荐 2022-07-06

admin 2022年7月12日00:50:45评论90 views字数 1642阅读5分28秒阅读模式

今天给大家推荐的是来自USENIX Security 2022的一篇论文——“FreeWill: Automatically Diagnosing Use-after-free Bugs via Reference Miscounting Detection on Binaries”,这篇文章主要针对不正确的引用计数引起的Use-after-free (UAF) bugs展开研究,作者开发实现了一种自动化方法工具——FreeWill来检测二进制文件中的此类问题。

G.O.S.S.I.P 阅读推荐 2022-07-06

UAF是程序中很常见的一类安全错误,其通常是由于对象被错误释放而使得后续引用悬空所导致的,这其中利用引用计数(refcounter)进行内存管理的情况更为常见。在这种情况中,每当创建新的引用(reference),refcounter就会递增;每当已有引用破坏,refcounter则会递减,一旦减少至0,则会对相关对象进行释放。然而,如果程序没有正确的增加或减少refcounter,导致过早释放相关引用,则会导致UAF错误,此类问题被称为reference miscounting。

G.O.S.S.I.P 阅读推荐 2022-07-06

本文针对此类由引用计数错误导致的UAF问题展开研究,作者提出了一种自动化方法——FreeWill来检测此类问题,其主要流程如图3所示。

G.O.S.S.I.P 阅读推荐 2022-07-06

(1) 作者首先提出了一个omission-aware refcounting模型来描述预期的计数行为,并提出了4条规则来帮助检测引用计数错误。

G.O.S.S.I.P 阅读推荐 2022-07-06

(2) UAF Object Lifetime Identification:为检测UAF问题,FreeWill首先要识别出UAF指针对象的生存期。如果源代码可用,则FreeWill可利用已有方法(如AdressSanitizer)来识别UAF对象生存期;如果仅有二进制文件,作者利用后向切片的方法来识别UAF指针对象生存期。

(3) Reference Analysis:在获得UAF对象生存期之后,需要识别相关对象引用。FreeWill首先使用污点分析来识别潜在引用,包括引用创建、引用销毁与引用计算;由于临时引用过多,FreeWill继续根据存储位置强标记部分引用(即存储在堆栈上的引用),包括堆引用、栈引用。

(4) Refcounting Detection:为检测引用计数错误引起的UAF问题,除了对象引用还需要识别refcounter。如果源代码可用,FreeWill可以利用开发人员对refcounter的注释来识别计数指令。如果仅有二进制文件,作者采用两种启发式的方法来识别refcounter操作:

  • HR-FixStep:refcounter每次都会按照固定步长(1)增加或减少,该方法利用上述原理来识别refcounter。

  • HR-CDFree:该方法利用refcounter和free函数之间的控制依赖来识别refcounters。具体来说,如果refcounter变为0,则应有一个free操作;因此,作者检查任何变为0的字段是否存在free控制依赖,以此来识别refcounter字段。

(5) UAF Diagnosis:为了检测UAF问题,作者首先提出了两种基于距离的方法来将refcounter操作与引用进行匹配;之后对于每个引用,将refcounter与omission-aware模型比较,如有违反则记为reference miscounting,如算法1所示。

G.O.S.S.I.P 阅读推荐 2022-07-06

作者实现了FreeWill并对其进行评估,评估benchmark为从官方、搜索引擎及内核日志中收集的76个UAF bugs,测试结果如表3所示。FreeWill成功确认了其中73个bugs,且每个bug的平均分析时间在15分钟内,这表明FreeWill在自动检测引用计数错误引起的UAF问题是有效的。

G.O.S.S.I.P 阅读推荐 2022-07-06

G.O.S.S.I.P 阅读推荐 2022-07-06

原文链接:
https://www.usenix.org/system/files/sec22fall_he-liang.pdf


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2022-07-06

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月12日00:50:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2022-07-06https://cn-sec.com/archives/1162815.html

发表评论

匿名网友 填写信息