开发一个安全的和有效的网站应用程序可能是一项艰巨的任务。此外,无孔不入的黑客使得这样的设计任务变得更加困难。在本次我们的“咨询专家”板块提供的小技巧中,网络应用安全专家Michael Cobb讲解了黑客们如何利用程序逻辑来达成攻击,同时也提出了一些阻止攻击行为的建议。
什么是应用程序逻辑?
应用程序逻辑描述了由应用程序开发者定义的必要步骤,以此来完成特定的任务。应用程序逻辑的一个例子是客户在网上购物时,将商品添加到一个在线购物篮后,该客户还需提供姓名,地址和付款等细节才能完成整个交易的流程。应用程序逻辑(也称为商业逻辑)并非指一般功能的Web服务器,而是指应用程序某项具体操作的功能,如产品折扣,邮费定价规则等。应用程序逻辑攻击一般利用应用程序的本身特点来回避或误用预期的行为来实现攻击。一般来说,这类攻击是针对一个网站的,但他们也可以针对网站的访客和访客的私人数据。
应用程序逻辑攻击是如何实现的
不同于常见的应用程序攻击,例如SQL注入,每个应用程序逻辑攻击通常是独一无二的,因为它利用了应用程序特有的函数或特定功能。这使得自动漏洞测试工具更加难以检测这种攻击,因为它们是基于逻辑缺陷而非实际的代码缺陷的。应用程序逻辑攻击之所以成功,往往是因为开发者没有将有效的过程验证和控制机制引入到应用程序中。这种缺乏流程控制的机制使得攻击者可以执行不正确或不合乎规程的操作。例如,网络购物中若购买了商品A则可享受其相应的折扣,然而如果应用程序不能确保在付款时商品A仍在购物车中,则可能导致不正确的折扣产生,如恶意用户可以通过添加商品A获得折扣,然后删除A,从而达到以A的折扣率购买产品B的目的。
应用程序逻辑攻击的类型
当攻击者反复利用应用程序的功能时便可能产生不同类型的应用程序逻辑攻击,如能够新建数千个新帐户或在讨论区张贴重复的邮件。这种类型的攻击滥用了应用程序的功能但基本没有或很少修改原来的应用程序。2005年8月,一个现实生活中的此类攻击发生在天堂扑克(Paradise Poker)在线赌博网站。基于时间延迟,一些赌徒掌握如何预测庄家手中的底牌。这个安全漏洞使得他们合法地赢取了大量钱财!有些应用程序逻辑攻击能够导致拒绝服务或恶意放大传播。恶意放大传播指攻击者将恶意的跨页面的脚本代码注入到如网页聊天室之类的应用中,利用这类应用的传播特性使这些恶意代码传播开来。
应用程序逻辑攻击:防范措施
防止应用程序逻辑攻击的关键是要执行完整性检查及确认,并在应用程序开发周期的起始就完善设计需求。Web应用程序开发人员还需在应用程序开发伊始便建立起安全和流程控制。不幸的是,许多应用程序是在设计开发完成后才开始测试和安全检测的工作。直到越来越多的开发者开始意识到规范编码和代码测试的重要性之前,应用程序逻辑攻击仍将是攻击者有效的攻击手段。
【编辑推荐】