G.O.S.S.I.P 每日阅读推荐 2022-05-11

admin 2022年5月15日01:48:13评论109 views字数 1688阅读5分37秒阅读模式

标题越短,文章越厉害。今天我们就给大家推荐一篇NDSS 2022上标题只有3个单词的论文Cross-Language Attacks,

G.O.S.S.I.P 每日阅读推荐 2022-05-11

最近一段时间,内存安全的编程语言 (如Rust、Go等等) 被开发出来用以代替经典的容易引发内存破坏漏洞的编程语言 (如C/C++等)。许多流行的软件项目采用逐步迁移的方式,逐步使用“安全”的编程语言代替“不安全”的编程语言(即不断地将程序的某一部分用新编程语言重写),意图提高程序的安全性 (如 Firefox 逐步添加 Rust)。但本文作者发现,不同语言之间不同的特性差异太大(这世界还是太复杂),即使是逐步替换,如果开发者不够小心谨慎,往往会引入新的安全问题!

作者在本文中主要讨论了跨语言攻击(Cross-Language Attack,CLA),作者指出,不同的编程语言针对安全威胁的防护假设存在很大的差异性,这种差异性往往会让攻击者钻了空子——原本在各自编程模型下都不存在安全风险,在混合编程模型下,却因为针对安全威胁的防护策略存在冲突,而导致对(控制流劫持)攻击的检查存在纰漏,导致攻击者可利用CLA绕过防护。

假设 A 语言针对 a 攻击有较好的防护,而对 b 攻击却没有,同时 B 语言针对 b 攻击有较好的防护,而对 a 攻击没有,那么攻击者可以按顺序进行 a b 两种攻击,实施完整的控制流劫持——攻击者可以在 B 语言的部分执行 a 攻击再在 A 语言的部分执行 B 攻击,以绕过两种语言各自的防护完成整个攻击流程

G.O.S.S.I.P 每日阅读推荐 2022-05-11

这里作者以 C 和 Rust 两种语言举例,C 语言有较完善的 Control-flow Protection 而 Rust 语言有较完善的 Memory Protection,因此攻击者可以在 C 语言的部分实施 Memory Corruption 攻击,然后转移到 Rust 的部分进行控制流劫持,从而完成整个攻击流程,控制程序执行流。

作者指出,CLA的insight主要在于“safe” 语言的设计者认为对内存安全的防护已经足够,因此未对程序控制流采取有效的防护措施

作者以 C 语言和 Rust/GO 语言为例,构建各个语言单独的威胁模型并将他们结合在一起,C 语言在采用了 CFI 保护后,可以进行 Memory Corruption,但无法进行 Control-Flow Hijack,而 Rust 语言虽然针对内存安全做了完善的防护,但并没有考虑 Control-Flow Hijack;将两个威胁模型结合在一起,并在两种语言直接添加 Language Transfer 节点,表示从 C 语言的部分转移到 Rust/GO 语言的部分,即可执行完整的 Control-Flow Hijack 攻击。

G.O.S.S.I.P 每日阅读推荐 2022-05-11

作者用下图描述了完整的攻击流程

G.O.S.S.I.P 每日阅读推荐 2022-05-11

在 C 语言部分,通过栈溢出或越界写覆盖到 Rust 部分的栈数据,从而绕过 Rust 语言对越界访问的检测;而修改 Rust 部分中的函数指针或返回地址,以达到劫持控制流的目的

G.O.S.S.I.P 每日阅读推荐 2022-05-11

G.O.S.S.I.P 每日阅读推荐 2022-05-11

在提出了几种攻击方法后,作者针对采用 Rust 和 C/C++ 进行编程的 Firefox 进行了 Language Transition (各语言部分之间的相互转换) 的分析,并针对性的提出了两个问题:

  1. 不同语言之间的转换有多频繁?

  2. 语言转换在不同的函数中的分布如何?

分析结果如下图:

G.O.S.S.I.P 每日阅读推荐 2022-05-11

根据分析结果,作者列出了在各项中出现次数最多的一些函数

G.O.S.S.I.P 每日阅读推荐 2022-05-11

作者只分析了 Firefox 中出现 Language Transition 的频率和分布情况,但并未通过分析 Language Transition 发现程序中可以利用的漏洞。不过作者的这项工作为广大的程序猿 (和产品经理) 们提了一个醒,不能一味的认为将“安全”的语言加入项目中就能提高安全性,在将“安全”的语言加入现有项目时,一定要加倍小心,为了提高安全性反而引入更多的不安全因素,就更是得不偿失了。


GitHub:

https://github.com/mit-ll/Cross-Language-Attacks/


论文PDF:

https://www.ndss-symposium.org/wp-content/uploads/2022-78-paper.pdf

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月15日01:48:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 每日阅读推荐 2022-05-11http://cn-sec.com/archives/1005328.html

发表评论

匿名网友 填写信息