G.O.S.S.I.P 学术论文推荐 2021-07-21

admin 2021年7月21日15:13:37评论5 views字数 824阅读2分44秒阅读模式

今天推荐的论文是来自ICSE 2020的“Extracting Taint Specifications for JavaScript Libraries,作者基于动态分析,对现有JS代码构建了进行自动化污点分析的方法。

G.O.S.S.I.P 学术论文推荐 2021-07-21


作者总结了当前静态分析JS代码的难题。如下图所示,下面的代码存在着“当用户输入不当路径时,目录下的文件夹会被全部删除的风险。而使用当前的静态分析,就需要理解代码中每个库的含义,或者对库中的所有代码进行静态分析,但是JS库的代码通常数量巨大,且高度动态,因此仅进行静态分析是不够的。因此,作者提出了基于动态分析的污点分析的方法。

G.O.S.S.I.P 学术论文推荐 2021-07-21


首先,作者定义了数据结构接触点(Points)的概念,它指示了一个点在代码中的位置。

G.O.S.S.I.P 学术论文推荐 2021-07-21

接着,作者总结了污点分析关注的传播路径(流),有以下三种形式。

  • 接触点从函数参数流向return参数。

    G.O.S.S.I.P 学术论文推荐 2021-07-21

  • 对象的复制和传递

    G.O.S.S.I.P 学术论文推荐 2021-07-21

  • 接触点在return语句中

    G.O.S.S.I.P 学术论文推荐 2021-07-21


接下来,作者提出了使用动态的方法推断上述接触点和传播路径。如下图所示,对于一个npm模块,箭头代表信息的流动。当执行测试套件时,在模块的入口处标记污染,在模块内部使用动态污点分析来记录内部的污点,在模块出口处,会生成一个额外的源,以供其他模块使用。

G.O.S.S.I.P 学术论文推荐 2021-07-21


与传统“将API接口作为入口点,返回值作为出口点”不同的是,作者考虑了与客户端的交互,提出了“细胞膜”的概念,用以确认库代码起始位置和客户端结束位置。对于多模块交互的问题,作者为每个模块都添加了膜分析。

G.O.S.S.I.P 学术论文推荐 2021-07-21


最后,作者实现了该上述方案,作者实现的原型工具能够自动提取了146个额外的污染槽和7840个传播路径,涵盖了1393npm模块。他们将动态污点分析的工具与传统静态分析的工具结合起来,并发现了136个新的警报。

G.O.S.S.I.P 学术论文推荐 2021-07-21

论文PDF:

https://software-lab.org/publications/icse2020_Taser.pdf

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 学术论文推荐 2021-07-21

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月21日15:13:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 学术论文推荐 2021-07-21http://cn-sec.com/archives/924209.html

发表评论

匿名网友 填写信息