白盒,顾名思义,指的是盒子是可视的,可以清楚地知道盒子内部的东西以及运作规则。
用一个比较形象的比喻就是,假如薛定谔把猫放进白盒里,我们不需要猜,一眼就可以看出此刻猫是死是活。
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试,是一种测试用例设计方法,盒子则是被测试的软件。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒安全测试则是在代码层面去查看漏洞的一个测试过程,他的针对点是安全性漏洞,如SQL注入,XSS漏洞等。
对于公司而言,白盒安全测试可以从安全角度保证产品的质量,减少产品漏洞,包括bug。
白盒测试方法
白盒安全测试本身与白盒测试并无多大差别,因此测试方法也大同小异:
白盒测试工具借鉴
讲了方法论,在下一步执行过程中,面临的就是工具借鉴的问题。
这里首推OWASP组织的LAPSE+工具。
OWASP
在讲工具之前有必要提一下OWASP,它是一个开源的,非盈利的全球性安全组织,以“使应用软件更加安全,使企业和组织能够应对安全风险做出更清晰的决策”为自身使命,被视为WEB应用安全领域的权威参考,拥有强大的业界影响力。
2009年发布的美国国家和国际立法,标准,准则,委员会和行业实务守则就是以OWASP为参考,而美国联邦贸易委员会(FTC)强烈建议所有的企业需要遵循OWASP十大WEB弱点防护守则,以策安全。
除此之外,国际信用卡数据安全技术PCI标准将其列为必要组件,也是美国国防信息系统局(DISA)应用安全和开发清单参考,欧洲网络与信息安全局(ENISA),云计算风险评估参考,以及包括美国国防系统局在内的多个信息安全局提供参考,OWASP TOP 10为IBM APPSCAN、HP WEBINSPECT等扫描器漏洞参考的主要标准。
OWASP目前在全球拥有140个分会,近4w名成员,共同推动了安全标准、安全测试工具、安全指导手册等应用安全技术的发展。
LAPSE+
OWASP的LAPSE项目叫LAPSE+:关于Java EE大应用程序的安全扫描器。OWASP LAPSE项目是提供给开发者和分析师在Java EE应用程序中的漏洞检测工具。
该项目是对代码进行静态分析,由于各种类型的漏洞分析的重要性和检测Java EE应用程序的安全漏洞难度性偏高。并且当面对由数万行级别的代码与许多Java类复杂的结构,应用分析难度也随之加大。因此,OWASP LAPSE项目提供了一个工具,帮助开发者和审计人员开展代码静态分析以最有效的方式被提供,并给出了项目的名称LAPSE+。
LAPSE+可以以Eclipse插件的形式嵌入工程使用。并对代码进行静态扫描,如下图:
LAPSE+为开源工具,https://code.google.com/archive/p/lapse-plus/
白盒测试的必要性
从国内实际情况来看,现在很多安全公司都在行业用户中推代码审计,但实际效果很差,原因正在这里,因为还没有达到这个阶段,而又不加强企业的安全测试环节,很多用户把代码审计理解为帮助用户找最需要解决的定性的安全问题的工具(这部分工作是安全测试来完成的,而目前用户的实际安全度和能力也只能先建设安全测试这个层面),而推动代码审计的企业为了推动自己的产品和服务也有意无意把用户往这方面诱导,最后实施时却发现,拿着几千页的报告需要大量人工分析定性安全问题的情况,使用户觉得根本难以解决安全问题。
其实这个阶段,用户迫切需要的是安全测试,尽量找出定性的安全问题加以解决,还不到从编码层上去规约开发者良好的开发习惯,这些需要用户的安全度达到更高级别后才是用户关注解决的事情,而且既是开发者拥有良好的开发习惯,安全依然依靠安全测试来复核确认,毕竟人是可能出差错的,而想用代码审计来取代安全测试,其成本是非常高而且效果也不咋样。
忽略了安全测试环节的建设,代码审计只能是空中楼阁,难以真正去帮助用户改进自身的安全过程。即使是用户的程度达到了很高级别,安全测试依然是产品最终确认安全的保障手段。
目前笔者在用的白盒测试的书是《代码审计:企业级Web代码安全架构》。
书中针对工作中遇到的实际漏洞案例进行深入剖析,从漏洞的成因到具体防御方案都有精准而又细致地讲解,工具与方法并存,因此可以当做工具书用,解决日常工作中遇到的问题。
以上为笔者对于白盒测试的一些拙见,有同僚或者感兴趣的人,欢迎加入共同探讨。
本文作者:Mr.Gambler(点融黑帮),擅长windows系统开发,协议分析,之前一直工作于安全公司,现任职于点融网技术部安全团队。