Nick Merritt是Halo Security公司主管安全产品和服务的副总裁,他已经负责并领导开展了超过300次的网络安全渗透测试工作。通过在各类企业中的大量安全性测试实践,Nick Merritt从攻击者的视角,总结了目前企业组织在信息化系统防护中的普遍弱点和常见错误,并给出了提升应用系统安全性的五点建议:
01
自动化安全扫描还远远不够
如果企业只是使用自动化工具扫描Web应用程序的安全性,那么很多安全漏洞都会成为漏网之鱼,因为这类工具通常使用了模糊测试(一种将畸形数据注入系统来验证安全的方法),而这种技术会产生大量的误报和漏报。
企业应该明白,自动化扫描工具的研发还难以跟上现代Web应用程序开发的步伐,技术上的局限性让扫描工具不能够为JavaScript页面应用、WebAssembly或图技术(Graph)提供最佳的安全检测结果。特别是对一些比较复杂的漏洞,企业安全团队需要专门编写有针对性的载荷才可以检测出它们。
目前,要实现对安全漏洞和利用情况进行全面的分析还离不开安全专家的人工操作,而自动化安全扫描工具可作为辅助性的检测手段,帮助安全分析师提升漏洞发现的效率。
02
应用系统自带的身份验证通常不可靠
身份验证是确保Web应用程序安全性的关键因素之一。但是在实际测试中发现,开发人员在应用系统中创建的身份验证及密码管理流程,通常都没有采用安全、可靠的方式。
渗透测试人员很容易绕过系统自带的验证功能,轻松访问其他用户的隐私信息,或者拥有与其角色不相符的过多特权,这就会带来横向和纵向身份访问控制方面的安全威胁问题。
企业必须要重视和加强对应用系统的身份管理和验证,其关键在于相关的安全协议是否能够得到有效实时。比如说,安全声明标记语言(SAML)身份验证是一种流行并且有效的单点登录控制协议,但如果开发人员在系统开发时未能正确理解和引入,反而留下更多的安全漏洞。
03
攻击者更善于发现业务逻辑中的漏洞
开发人员在研发Web应用系统时,一般都是从产品的应用场景角度进行分析和设计,但是他们常常不会从攻击者的角度去分析各种功能是否可能被恶意利用。一个典型的事例是电商网站中的购物车,它是这类网站的关键性应用,但常常不安全,存在严重的业务逻辑漏洞,比如攻击者在结账前将总数归零,或者在完成付款后将低价商品替换成其他高价值商品。
我们不能过多苛责开发人员只关注系统的使用场景,而忽视其可能的风险场景。但是安全管理人员需要看到问题的各个方面,明白业务逻辑应该与安全逻辑相关联。
04
不存在“超范围”的渗透测试观念
Web应用程序已经变得非常复杂,会涉及较广泛的资源和资产整合与利用。这就需要开发时通过后端API服务器利用,以支持主应用程序的各种功能。
企业应该向执行渗透测试的安全人员告知所有这些外部资产,以及它们如何与应用系统之间进行关联交互,这对保障安全很重要。开发人员可能认为这些资产“超范围”,因此不需要对它们负责。但攻击者可不会遵守任何的攻击界限,大量渗透测试结果也表明,企业中的资源和资产,没有什么是“超范围”的。
应用系统开发人员应该更好地与安全测试人员合作,减少渗透测试工作带来的流程影响。开发人员只有兼顾创造力和安全框架,才能知道哪里可以自由编程,而哪里需要设置应用程序安全护栏机制。
05
跨站脚本(XSS)攻击不可忽视
XSS属于被动式攻击,是一种较盛行的Web应用程序漏洞利用方式。2021年,由于应用程序开发框架的改进,XSS首次跌出了OWASP(开放Web应用程序安全项目)前10名榜单,因此有人开始认为这种攻击将会很少被应用。但事实上,“无孔不入”是网络黑客们最基本的信念和意志表现,它仍是我们执行每次渗透测试任务中,最有效的模拟攻击手法之一。
XSS攻击造成的安全风险往往会很高,包括账户接管、数据窃取以及对应用程序基础设施的全面破坏。许多开发人员以为,使用成熟的输入验证库和配置适当的Cookie属性就足够防止XSS攻击,但实际上这远远不够。因为在今天的应用程序开发中,必然会使用大量自定义的代码,此时XSS漏洞就会趁虚而入。以WordPress网页为例,针对其的XSS攻击非常危险,因为一旦获取了管理员级访问凭据,攻击者就可以在应用中加载各种插件,并在应用服务器上执行代码中的恶意载荷。