为了发现软件的安全漏洞和缺陷,确保应用系统是安全可靠的,就需要针对Web系统做应用检测,识别Web应用程序中架构的薄弱环节,以免轻易的受到恶意攻击者的攻击。
主要市场上主要的检测技术主要是DAST、SAST、RASP和IAST,每种技术都有一定的优缺点。我们注意了解一下。
DAST是Dynamic Application Security Testing的首字母缩写,是动态应用程序安全测试技术。
该种分析技术在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该Web应用是否易受攻击。所以该种技术主要采用渗透测试,发现应用系统的潜在风险。安全工程师常用的工具如AWVS、AppScan等就是基于DAST原理的产品。
SAST是Static Application Security Testing的首字母缩写,是静态应用安全测试技术。
SAST类工具的技术实践大致可分为以下几种:
(1) 正则匹配:代表工具Cobra,Raptor;
(2) 基于语法树:代表工具P3C,Fireline;
(3) java语言可基于class文件:代表工具Findsecbugs;
(4) 基于控制流、数据流、函数调用关系等:市面上的商业级SAST类产品比较多。
当然,效果是逐渐递增的,难度也是逐渐增大的,要实现还原代码的数据流、控制流和函数调用关系,需要将编译中的前端模块完全实现一遍,基于中间代码去还原数据流和控制流等,大致流程主要是通过词法和语法分析后,进行语义分析,生成中间代码,再生成数据流、控制流、函数调用关系等,在这些分析的基础上,进行缺陷匹配检测。
基于SAST技术的产品具有误报率高、耗时长、内存消耗高的特点,该原因也跟这个复杂流程相关,各个安全厂商自己基于编译原理相关内容实现的代码分析层,也需要针对不同的语言实现不同的语法树从而增加了复杂度和时间成本。另外还原的数据流、控制流等难以做到100%准确,同时对超过100万行以上代码分析,占用的资源高(主要是对内存的消耗),复杂度较高,数据流、控制流的构建过程自然就耗时长,导致了SAST类产品误报率高和耗时长这两个问题难以解决。导致即使能够集成到IDE中,开发人员也可能无法忍受较长时间的等待。
而中科天齐自主研发的悟空(Wukong)软件源代码静态分析工具(SAST),支持C/C++、Java、Python、JS、HTML、PHP等多种主流编程语言所编写的软件产品进行安全漏洞和缺陷的检测。其检测“深度”深、“速度”快、“精度”准、“范围”广且弥补了SAST类工具无法支持国产操作系统和国产芯片的不足,支持Ubuntu、CentOS主流Linux环境部署;支持中标麒麟、银河麒麟等国产操作系统部署;支持高并发用户的分布式部署的国产化自主研发检测工具。
IAST:Interactive Application Security Testing,交互式应用安全测试。
近实时检测、误报率极低、可定位到代码行数、展示污点调用过程等等,非常适用于DevOps理念。产品中也会尽力体现污点调用过程,代码行数等不同于DAST的,偏代码层的信息。
为代码审核员和审查员提供了一个平台,用于构建和调整强大的、高度定制的查询,以交互询问其独特的代码库和环境。
具有更复杂代码探索需求的分析师可以利用全面的CPG图形映射创建高度特定和有针对性的查询,从而绕过常见的误报源。示例包括识别代码中存在的任何问题(用户输入受到适当保护)的能力,以及存在任何间接数据流(用户输入未直接用于接收器)的能力。
RASP:Runtime application Self-protection,运行时应用安全自我防护。
2012年Gartner引入。它将保护程序像疫苗一样注入到应用程序中,应用程序融为一体,它拦截从应用程序到系统的所有调用,能实时检测和阻断安全攻击,使应用程序具备自我保护能力,当应用程序遭受到实际攻击伤害,就可以自动对其进行防御。
每种技术都有自身的优缺点,只有适合自己的工具就是最好的工具。
软件安全 网络安全的最后一道防线
中科天齐公司是在中科院计算技术研究所的大力推动下
以中科院计算所国际领先的自主研究成果
为基础组建的高新技术企业