双语困境:脚本语言中由原生扩展引发的安全风险研究
密码学与安全
2023-02-06 v2
摘要
脚本语言因其易用性以及围绕它们蓬勃发展的软件生态系统而持续受到欢迎。这些语言在设计上提供崩溃与内存安全,因此开发者无需理解并防范困扰 C 代码之类的底层安全问题。然而,脚本语言通常允许原生扩展,即一种让自定义 C/C++ 代码可直接从高级语言调用的机制。尽管该特性承诺了诸如提升性能或复用遗留代码等若干好处,它也可能破坏语言的安全保证,例如崩溃安全。在本工作中,我们首先对三种流行脚本语言的原生扩展 API 的安全风险进行了比较分析。此外,我们讨论了一种用于研究原生扩展 API 误用的新方法。随后,我们对受原生扩展引入的威胁暴露最深的 npm 生态系统进行了深入研究。我们表明,只需以精心构造的输入调用其 API,扩展中的漏洞便可在其嵌入库中被利用,从而在 33 个 npm 包中引发未初始化内存的读取、严重崩溃或内存泄漏。此外,我们识别出六个开源 Web 应用,其中此类漏洞可被弱攻击者远程部署。最后,我们因本文所呈现的工作被分配了七项安全公告,多数被标记为高危。
引用
@article{arxiv.2111.11169,
title = {Bilingual Problems: Studying the Security Risks Incurred by Native Extensions in Scripting Languages},
author = {Cristian-Alexandru Staicu and Sazzadur Rahaman and Ágnes Kiss and Michael Backes},
journal= {arXiv preprint arXiv:2111.11169},
year = {2023}
}
备注
To appear in USENIX Security Symposium 2023