测试Process Timing
ID |
---|
WSTG-BUSL-04 |
总结
攻击者可以通过监控完成任务或做出响应所需的时间来收集有关应用程序的信息。此外,攻击者可能能够操纵和破坏设计的业务流程,只需保持活动会话打开,而不是在 “预期 ”的时间范围内提交他们的交易。
Process timing logic 漏洞的独特之处在于,这些手动误用案例的创建应考虑特定于应用程序/系统的执行和事务计时。
处理时间可能会提供有关应用程序/系统后台进程中正在执行的操作的信息。如果应用程序允许用户通过处理时间变化来猜测特定的下一个结果,那么用户将能够根据期望进行相应的调整并改变行为,并 “与系统进行游戏”。
示例 1
视频赌博/老虎机可能需要更长的时间来处理交易,然后才能收到大笔付款。这将允许精明的赌徒投注最低金额,直到他们看到漫长的过程时间,然后促使他们下注最高金额。
示例 2
许多系统登录进程都要求提供用户名和密码。如果您仔细观察,您可能会发现,与输入有效的用户名和无效的用户密码相比,输入无效的用户名和无效的用户密码需要更多的时间来返回错误。这可能允许攻击者知道他们是否拥有有效的用户名,并且不需要依赖 GUI 消息。
Figure 4.10.4-1: 登录表单的示例控制流
示例 3
大多数 Arenas 或旅行社都有允许用户购买门票和预订座位的票务应用程序。当用户请求门票时,他们选择的座位将被锁定或保留等待付款。如果攻击者一直预订座位但不签出怎么办?会释放座位,还是不卖票?一些票务供应商现在只允许用户在 5 分钟内完成交易,否则交易将失效。
示例 4
假设一个贵金属电子商务网站允许用户在登录时以市场价格进行购买。如果攻击者登录并下订单,但只有在金属价格上涨时才在当天晚些时候才完成交易,该怎么办?攻击者会得到最初的更低价格吗?
测试目标
- 查看项目文档,了解可能受时间影响的系统功能。
- 开发和执行误用案例。
如何测试
测试人员应该确定哪些进程依赖于时间,它是完成任务的窗口,还是两个进程之间的执行时间可以允许绕过某些控制。
之后,最好将滥用上述发现的流程的请求自动化,因为工具更适合分析时间并且比手动测试更精确。如果无法做到这一点,仍然可以使用手动测试。
测试人员应该绘制一个流程图、注入点,并提前准备请求,以便在易受攻击的进程中启动它们。完成后,应进行仔细分析,以确定流程执行中的差异,以及流程是否违反了商定的业务逻辑。
相关测试用例
修复
在开发应用程序时要考虑处理时间。如果攻击者可能通过了解不同的处理时间和结果获得某种类型的优势,则添加额外的步骤或处理,以便无论结果如何,它们都在同一时间范围内提供。
此外,应用程序/系统必须具有适当的机制,不允许攻击者在“可接受”的时间内延长交易。这可以通过在指定时间过后取消或重置交易来完成,就像一些票务供应商现在使用的那样。