Page 102 - 《软件学报》2020年第11期
P. 102
3418 Journal of Software 软件学报 Vol.31, No.11, November 2020
双向 LSTM 能够充分感知到节点周围上下文,因此注意力权重高的节点呈现出一定的聚集性,体现为图中连续
多个节点均具有较高的注意力权重.此外,CFG 节点的注意力权重普遍比 AST 节点低的原因在于,本文中所使用
的数据集中多数数据的漏洞成因与控制流不相关,而更多地体现在 AST 节点所代表的细粒度特征中,其使得网
络更加关注 AST 节点中的细粒度特征,以准确识别特征不明显的漏洞.由于上述注意力权重分布体现了不同节
点与漏洞的密切程度,因此其可被用以进一步指导开发人员进行漏洞修复.
4 结论与未来的工作
本文针对现有的静态漏洞挖掘方法在挖掘漏洞特征不明显的漏洞时准确率普遍下降的问题,研究并实现
了一种基于代码属性图及注意力双向 LSTM 的漏洞挖掘方法.该方法将程序源代码表示成代码属性图,并按照
独创的编码规则将代码属性图编码为特征张量,使用特征张量训练神经网络模型,自动地学习代码的漏洞模式,
并利用训练完毕的模型预测目标程序中是否具有漏洞.本文在 SARD 缓冲区溢出数据集、SARD 资源管理错误
数据集以及它们 C 语言程序构成的子集上进行了对比实验,其中,本方法在上述 4 个数据集上的 F1 分数分别达
到了 82.8%和 77.4%以及 82.5%和 78.0%,相比基线具有显著的提升,证明了本方法可以有效地提高了检测漏洞
特征不明显的漏洞时的准确率.
本文所提出的基于代码属性图及注意力双向 LSTM 的漏洞挖掘方法能够有效地识别单个函数中是否存在
漏洞,其仍具有一定的改进空间:第一,本方法以单个函数为单位进行漏洞检测,暂未考察调用的上下文,如果待
检测函数本身没有漏洞,而其调用的函数中存在漏洞,则需对该被调用函数进行检测才能发现该漏洞;第二,本
方法利用深度学习模型在分类问题上的优势,将漏洞挖掘问题视作一个二分类问题,从而有效地预测漏洞的存
在性,但是其只能预测函数中是否具有漏洞,不论单个漏洞或多个漏洞,其都将报告为具有漏洞,因此对于函数
中存在多个漏洞时的检测能力有待提高.未来会对针对以上两个问题进行研究.
References:
[1] Dwheeler. Flawfinder software official website. 2001. https://dwheeler.com/flawfinder/
[2] Secure software solutions. RATS software website. 2001. https://code.google.com/archive/p/rough-auditing-tool-for-security/
[3] Mou L, Li G, Zhang L, Wang T, Jin Z. Convolutional neural networks over tree structures for programming language processing. In:
Proc. of the 30th AAAI Conf. on Artificial Intelligence. 2016. 1287−1293.
[4] Zhang J, Zhang C, Xuan JF, Xiong YF, Wang QX, Liang B, Li L, Dou WS, Chen ZB, Chen LQ, Cai Y. Recent progress in program
analysis. Ruan Jian Xue Bao/Journal of Software, 2019,30(1):80−109 (in Chinese with English abstract). http://www.jos.org.cn/
1000-9825/5651.htm [doi: 10.13328/j.cnki.jos.005651]
[5] Zou QC, Zhang T, Wu RP, Ma JX, Li MC, Chen C, Hou CY. From automation to intelligence: Survey of research on vulnerability
discovery techniques. Journal of Tsinghua University (Science & Technology), 2018,58(12):1079−1094. (in Chinese with English
abstract).
[6] Darwin IF. Checking C Programs with Lint. O’Reilly & Associates, Inc., 1986.
[7] Viega J, Bloch JT, Kohno Y, Mcgraw G. ITS4: A static vulnerability scanner for C and C++ code. In: Proc. of the 16th Annual
Computer Security Applications Conf. (ACSAC 2000). 2000. 257−267.
[8] Li Z, Wu JZ, Li MS. Study on key issues in API usage. Ruan Jian Xue Bao/Journal of Software, 2018,29(6):1716−1738 (in Chinese
with English abstract). http://www.jos.org.cn/1000-9825/5541.htm [doi: 10.13328/j.cnki.jos.005541]
[9] Chen H, Wagner D. MOPS: An infrastructure for examining security properties of software. In: Proc. of the 9th ACM Conf. on
Computer and Communications Security. 2002. 235−244.
[10] Henzinger TA, Jhala R, Majumdar R, Sutre G. Software verification with BLAST. In: Proc. of the Int’l SPIN Workshop on Model
Checking of Software. 2003. 235−239.
[11] Sun HY, He Y, Wang JC, Dong Y, Zhu LP, Wang H, Yang YQ. Application of artificial intelligence technology in the field of
security vulnerability. Journal on Communications, 2018,39(8):1−17 (in Chinese with English abstract).