应用编程接口(API)是现代Web应用程序开发的一个重要部分,它们在整个Web攻击面中占有相当大的比重。在现实世界中,企业进行Web应用程序安全测试时覆盖整个攻击面,同时又满足测试准确性和工作流高效集成之类的需求,是一项艰巨的任务。现代应用程序远不止一堆网页,它们是通过API进行联系的一堆复杂的Web服务。那么,如何确保这些Web API的安全呢?
不仅仅保护可见网页
测试软件安全的方法有多种,但任何AppSec(现代应用程序安全)工具箱都应该起码包括动态测试(DAST,即漏洞扫描),并结合定期渗透测试。这让企业可以真实全面地洞察安全状况,因为企业探测应用程序环境所使用的方法和入口点与恶意黑客所使用的一样。所有潜在的入口点共同构成了企业的攻击面,这包括用户界面和所有暴露的API。
从外部检查Web应用程序时,第一步是运行爬虫工具,以发现需要测试的所有对象。这时候,网站与Web API的第一个重大区别体现出来:企业无法像抓取网页那样抓取API。要确保在应用程序环境中全面测试所有Web API,有效方法是始终拥有最新的API定义,而这些定义由企业的开发人员创建和维护。
在含有成千上万个API端点的大型开发环境中,企业每次需要进行漏洞扫描时都向开发人员索要API定义文件不切实际,特别是在开发管道高度自动化、任何手动干预都花费宝贵时间的情形下更是如此。切合实际的方法是,将API定义文件自动存储到中央位置,并自动更新,集成式漏洞扫描工具可以在每次扫描之前获取这些定义文件。然而要在安全测试工作流程中充分利用这些数据,企业需要一套自动化应用程序安全测试解决方案,该解决方案不仅能与软件开发生命周期(SDLC)集成,还能针对相关类型的API进行漏洞测试。
确保API成为安全SDLC的必要部分
当下,Web应用程序通过API发送的数据远多于通过用户界面发送的数据,因此应用程序安全测试必须跟上步伐,否则可能会使Web应用程序的攻击面更容易受到攻击。即使是内部API也常常被攻击者访问,因为直接进入保存敏感数据的后端系统通道敞露无遗。除此之外,API专为静态的自动访问而设计,因此它们更容易在不引起怀疑的情况下被探测。
网络犯罪分子知道这一切,他们正将注意力转移到API攻击上,企图从最不安全的Web API和服务下手,以直接访问敏感数据或执行未经身份验证的操作。由于现在企业构建的众多Web应用程序是可视化前端,与后端系统上运行的数百个自主Web服务进行联系,绕过用户界面、径直访问数据似乎是网络犯罪分子的不二之选,针对API的攻击确实日益猖獗。
为避免企业的网络安全出现巨大盲区,明确包括API漏洞测试的AppSec计划是重要的方法,这也是确保AppSec卓有成效的一个关键要求,一些厂商可以将Web API漏洞测试无缝整合到企业的安全SDLC中。