今天为大家介绍的是静态代码分析工具,静态代码测试是很重要的,做应用安全最佳的切入点就是在开发阶段做代码的静态应用安全测试分析。这里给大家主要推荐的是Fortify,这是业界做应用安全测试最早的产品,甚至可以称之为应用安全测试工具的“鼻祖”,这款工具在应用安全领域一直是处于引领地位的。
我们推荐这个工具的首要原因是,它覆盖的语言多,因为我们的企业级应用可能会用到很多的开发语言。现在开发语言的种类越来越多,常见的是Java类的,还有一些其他的小众语言,也在逐渐被普遍应用。
像现在比较流行的Go语言、Kotlin,以及一些脚本语言。我们前面也谈到了,移动应用现在发展得很迅猛,像苹果的开发语言Objective C、Swift。这么多的新兴开发语言就需要我们的自动化工具涵盖更多的开发语言。
除了语言覆盖广,更关键的还是要检测到更全面的安全漏洞和代码缺陷。还有就是漏报率和误报率,也很重要。这几个维度都是很重要的。
最后才是效率,虽然效率也很重要,但是比起精准性来说,我认为精准性更为重要,因为安全不能够有漏报。误报可以解决,但是漏报没有发现,没有办法解决,这个危害就很大。
测完之后你并不知道有些漏洞还没有被发现,还隐藏在你的程序里面,一旦被利用,后果不堪设想。所以我们追求的理念是零漏报,当然是非常难做到的,我们之后尽量地减少漏报。
误报我们可以通过一些手段去解决,去调优规则库、调优规则和策略,来减少误报。大家在选择产品的时候,一定要选择规则库更为全面的产品。
应用安全测试最关键的一点就是修复,发现问题可以精准的定位,能够迅速修复掉,这是最关键的。
首先漏洞的定位是很重要的,一定要准确,可以准确地告诉你是这里有问题,什么问题?怎么改?级别高不高?作为一个自动化工具来说,这些要素是缺一不可的。
我们要了解漏洞的严重程度有多高,中低风险的我们可以暂不修改,因为我们的精力有限,所以需要要将精力放在风险最高的问题上,所以我们需要一个非常清晰的风险级别的划分。
还有就是定位一定要准确,最后是需要一个非常详细的修改建议,照着这个修改建议去修改是最安全的、最标准的。如果工具给到我们的建议很模糊、不够明确,我们的开发人员可能还是不知道应该怎么修改这个问题,因为他们可能并不是那么了解安全编码。
漏洞知识库也非常重要,大家如果感兴趣可以去登陆(https://vulncat.fortify.com/zh-cn)这个网址,这个是我个人认为业界最强的软件安全漏洞的知识库。这里面涵盖了我们业界关于代码编写缺陷的最完整的内容。
《软件开发七宗罪》这是很多年前非常畅销的一本书,他把软件开发缺陷分了七个大类。安全是比较主要的一个大类,还有其他的,像代码质量、环境问题等等。
这个知识库的分类非常好,可以按照大类去分,也可以按照开发语言去分。fortify现在已经支持28种语言,这个知识库把属于每一种语言的漏洞的种类都列了出来,而且还是全中文分析。
大家如果对安全编码、应用安全漏洞方面感兴趣的话,可以登陆这个网址,去了解我们业界最新的、最权威的、最全面的关于代码开发编写的漏洞知识库。
我们做代码安全编程是希望无感知地实施,我自己作为程序员深有体会,我自己本身并不想做额外的工作。我的目的就是把功能实现,如果还花时间去做安全测试,没有时间,没有精力。
仅仅是实现功能都需要加班,怎么可能还有时间去做安全测试呢。测完了我还要去看问题,还要判断,还要分析,还要去改,需要花费太多的时间了。
这里再给大家推荐一个插件,叫安全小助手,嵌入到开发人员的IDE上,只要他完成了一段代码,或者一行代码,就会马上得到一个风险提示。这个提示是在IDE界面上就直接提示,不需要点任何按钮,也不需要等待。
(本系列文章根据《优品软件培育计划》公益直播内容整理,可以私信我获取直播回放链接。)