软件安全可视化:从代码挖掘到漏洞预测的技术探索

本文探讨了如何通过可视化技术提升软件安全分析效率,从传统依赖直觉的漏洞挖掘转向基于度量的数据驱动方法,并讨论了多维数据呈现与漏洞可利用性评估的技术挑战与机遇。

可视化软件安全

在软件安全行业寻找漏洞,很像勘探自然资源。工程师首先从宏观视角审视未知领域,凭借直觉、经验和宏观信息确定地形,将范围缩小到几个关键兴趣点。接着,他们使用分析工具收集数据,最终确定投入人力资源挖掘“黄金”(或石油,或漏洞!)的位置。

在精确土壤分析工具出现之前,勘探工作早已存在,只是效率不高。同样,在安全领域,我们一直通过费力且往往依赖直觉的过程来寻找漏洞,效率低下。最近,我深入思考了这个问题,并与安全领域的专业人士以及可视化领域的学者汇集资源。我有幸在麻省理工学院举办的VizSec小组讨论中发言,来自全球的演讲者和与会者齐聚一堂,探讨可视化的未来发展方向。我观察到,网络安全人员比软件安全专家更深入地思考可视化问题,我认为原因在于:网络数据具有许多具体属性,易于被现有数据分析和可视化软件处理。也就是说,他们知道要寻找的一些趋势,这些值通常非常具体,比如谁在发送数据包、发送到哪里、是什么类型等。我尝试为软件安全和程序分析创建类似的场景,确实有一些可以找到(如图中的可达性),但总的来说,软件安全分析面临不同的问题,原因是缺乏可以插入趋势发现函数的度量指标。

那么,这对于像我们这样的软件安全勘探者来说,在可视化背景下意味着什么?当然,这意味着我们需要定义可以测量并可视化呈现的度量指标!你可以从ACM挖掘一些关于该主题的好文章,但我工作的一个基础是Matt Miller的论文《利用利用属性改进软件安全分析》。Matt的论文引入了利用属性的概念,这些是特定的度量指标,可以一起解释以了解代码区域如果存在漏洞是否具有更高的利用风险——你会先利用未受GS保护的栈溢出,而不是尝试绕过受GS保护的那个,对吧?扩展这一概念,你可以开始收集超越可利用性的度量指标,这可能有助于提高软件安全性或可维护性。

因此,我在BlueHat的即将演讲将关注两个领域:这些度量指标是什么样子,以及多维数据的适当可视化是什么样子。我们面临一些有趣的挑战,因为并非所有度量指标都同样可靠。事实上,现成的漏洞查找工具通常基于启发式方法,可能高度不可靠,但这只是意味着我们有一个独特的机会,可以获取大型数据集并关联它们,以找出真正的“黄金”埋藏在哪里。

-Richard Johnson, 安全软件开发工程师, 可信计算, 微软

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计