代码审计与静态应用安全测试的关系

    代码审计定义:顾名思义就是检查源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞,并提供代码修订措施和建议。代码审计(Code Audit)是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析工作。

    静态应用安全测试:Static AST (SAST) 技术在软件生命周期阶段分析应用的源码、二进制文件以查找有效的安全漏洞。静态分析无法找到的漏洞:

    • 机密数据的存储与传输,尤其是当这些数据的程序设定与非机密数据无异时。

    • 与身份认证相关的问题,比如暴力攻击敏感系统,密码重置无效等。

    • 与非标准数据随机选择的熵相关的问题

    • 与数据保密性相关的问题,比如数据保持以及其它合规性问题(比如:确保信用卡号在显示时是部分掩盖的)。

    误区1:代码安全审计就是漏洞挖掘代码安全审计工具就是安全编码的辅助工具。从字面上理解“代码审计”(Code Audit),它只是对代码安全性的复查、审查,查看程序是编写是否符合相关要求和编程规范,是程序员的一种自查方式。所以代码安全审计工具也只是用自动化的工具去代替了人工审查而已。而对于那些有较强安全知识和丰富渗透攻击经验的“黑客”们来说,代码安全审计工具又能看作是他们“攻击”的辅助工具。

    误区2、代码安全审计工具都会很高的误报率代码安全审计工具是以静态的方式在程序中查找所有可能存在的安全漏洞特征,这些特征表面上就是我们不安全的编码方式,或者说是不安全的编程习惯。但是这些方式是产生安全漏洞的必要条件,而不是绝对条件,也不能用渗透的方式来验证和证明。这个宗旨就告诉开发人员在编码的时候,把所有不好的、不安全的编码方式规避掉,并尽量以正确的方式,来编写出安全的程序。

    误区3、代码安全审计应该由专业的人员来干代码安全审计是软件安全开发其中的一个环节,代码安全审计如果想要有很好的效果,就一定要开发人员从开发意识上和编码习惯上有所改变。如果只是把代码安全审计交由安全测试人员,甚至是外包的安全测试团队来干的话,效果一定是不好的。代码安全审计=代码安全测试+代码安全开发,把安全编码“最专业”的开发人员给排除在外,把安全漏洞审计和安全开发孤立起来了,这样做的效果怎么会好?

    误区4、代码安全审计越全面越好代码安全审计不是越全面越好,而是要追求开发与安全的平衡。因为代码安全审计会给开发人员带来知识上的挑战和一定的工作量。代码安全审计正确的方式应是企业以自身特点为基础,定制出一套安全人员和开发人员都能够接受的“代码安全审计标准”, 在企业中有序开展相关工作,并在后期不断地补充和完善这个标准,使之成为一个既能迎合安全趋势的不断发展,又能适合开发人员的安全审计标准。这样代码安全审计工作才能在企业中顺利地开展。

    validate