JSLIM:通过"瘦身"技术减少已知JS漏洞
2023-4-10 21:18:4 Author: 安全学术圈(查看原文) 阅读量:11 收藏

原文标题:JSLIM: Reducing the Known Vulnerabilities of JavaScript Application by Debloating
原文作者:Renjun Ye, Liang Liu,  Simin Hu, Fangzhou Zhu,  Jingxiu Yang,  Feng Wang
原文链接:https://link.springer.com/content/pdf/10.1007/978-3-030-93956-4.pdf?pdf=button
发表会议:EISA'21
笔记作者:[email protected]
笔记小编:[email protected]

1 研究介绍

随着开发的深入,第三方库的引入必不可少。不幸的是,这些库的引入,将会增大代码的攻击面,导致代码的不可预知风险加大。因此通过除去代码中的死代码,漏洞代码等可以帮助代码减少外部代码的风险。本文主要通过漏洞库信息来帮助减少代码的不可预知风险,主要贡献如下:

  • 利用自然处理技术,将漏洞与源代码的关系准确映射到函数层面,仅移除或隔离与漏洞相关且依赖库中未使用的相关代码。

  • 考虑了main函数调用的外部依赖库中代码的安全性,使用沙箱将这些代码与应用上下文隔离开来,一定程度上去除了这些安全漏洞。

  • 设计实现了 JSLIM,一个用于发现 NodeJS 应用程序中相关漏洞的系统。

2 主要架构

图 1 系统架构图

系统架构如上图所示,主要分为三个处理步骤。

Analysis

这一步首先通过自然语言处理技术(关键字 + 正则匹配),来获取技术文章、报告、论坛中的 CVE 信息(漏洞类型,CVE 编号,影响 NPM 库),接着计算这些漏洞与代码依赖版本的余弦相似度,进而将漏洞与具体代码中的文件、方法进行对应。

Debloat

通过 AST 解析包中的各个代码文件,进而通过 Load Dependency Builder 来建立程序调用图,并通过 require 确定依赖文件,进而找到整个 main 入口的所以函数及文件。最后将带有漏洞的代码进行删除即可。

Validate

该模块主要对代码进行验证。例如利用尽可能完善的 Selenium 爬虫来对网站内容进行完整性测试、利用漏洞的攻击脚本来对网站进行安全测试等。

3 实验效果

表 1 收集网址

漏洞数据主要来源如表 1 所示。实验选择了 50 多个流行 JavaScript 应用程序进行测试,这里展示了部分程序的实验结果,如表 2 所示。

表 2 实验效果

实验效果可以看出,模型能够处理大部分的漏洞映射,而且能够很好的去除,因此证明该类去膨胀技术在该场景下是有效的。

4 个人思考

  • 这篇文章的创新性更多的体现在 Bloated Code 和 CVE 漏洞的捆绑关系,通过消解膨胀代码,从而降低漏洞风险。而技术难点主要在于映射关系的绑定,而后面的消解工作主要以论文 Minicode 的模式为主,此部分工作缺乏细节工作和创新性。

  • 整体来说论文的内容创新性较小,主要工作是将一个软件工程问题转化为安全问题,更多的偏应用方面,不过整体思考的过程和应用方向值得学习和参考。

安全学术圈招募队友-ing 
有兴趣加入学术圈的请联系 secdr#qq.com

文章来源: http://mp.weixin.qq.com/s?__biz=MzU5MTM5MTQ2MA==&mid=2247488715&idx=1&sn=107cfc67929223715b23f410d8130876&chksm=fe2eeb40c95962567768b25ca9aa2aa21a83ac55273d2aa610bc6e66b038bb1666225d280e5d#rd
如有侵权请联系:admin#unsafe.sh