工作流漏洞指任意类型的允许攻击者误用应用/系统功能来绕过(不依从)设计好的工作流。
“工作流由一系列无缝组合的步骤组成。他是一系列操作的描述,人员或组织员工或者更简单和复杂机制的工作的声明。工作流被视作是真实工作的抽象。” (https://en.wikipedia.org/wiki/Workflow)
应用程序业务逻辑必须要求用户以正确/特定顺序完成指定步骤,如果工作流没有正确完成而终止,所有的操作和操作带来的后续反应都应该“回滚”或者取消。绕过工作流或者正确业务逻辑的漏洞独特在于他是应用程序相关的,必须小心设计手工误用测试用例来进行测试。
应用业务流程必须检查来确保用户的行为/事务以正确/可接受的顺序进行处理。如果一个事务触发了一系列操作,那么万一事务没有成功完成,这些操作必须可以“回滚”或移除。
许多人收到过杂货店和加油站专用返金券。假设用户能够发起一个事务来向他们的账户进行购买以增加反利点数,但在最后阶段取消商品购买。在这种情况下,系统应该将回馈点回滚到原先的情况。如果不是这样,攻击者可以通过循环此类操作增加自己的反利点,而不用购买任何东西。
BBS系统可能被设计成确保初始帖子不能带有禁止用语。如果一个词语在“黑名单”中发现,用户的帖子就不能提交。但是一旦提交,帖子主可以访问、编辑、改变其中内容,包括黑名单的违禁词。系统不会再次审核。通过这种办法,攻击者可能通过发布空白初始帖子,然后从更新中进行操作。
应用程序必须有自我察觉机制,对用户完成工作流的每一步进行检查,确保正确顺序,防护攻击者绕过/跳过/重复任何流程。测试工作流漏洞需要设计业务逻辑滥用/误用测试用例,这些用例主要是不通过正确的步骤或程序来成功完成整个业务逻辑。