如何测试我的 Web 应用程序的时间攻击?

信息安全 Web应用程序 渗透测试 应用安全 漏洞扫描器 竞争条件
2021-08-15 02:41:41

比赛条件等

有自动工具吗?我应该使用哪些手动技术?


来自Area51提案

2个回答

定时攻击、竞争条件 (CWE-362)漏洞在 Web 应用程序中并不常见,这些主要是更底层语言的问题。例如,在CVE-2006-5178中,竞争条件是由于 PHP 解释器本身的错误实现造成的。但是依赖这些功能的应用程序也容易受到攻击。

由于时间问题和特定环境的需要,尝试重现此类漏洞可能会令人生畏。使用自动漏洞扫描仪进行这样的测试是不可行的——即使对于人类来说,也不容易找到这样的漏洞。

在我看来,开发人员只需要记住何时可以中断主进程。当动作序列不能被中断时,应该提供原子性。主要是数据库操作容易受到此类攻击。即使 DBMS 支持事务并提供安全同步的方法,也可以有更多的全局操作在 DBMS 的控制之下,以使它们具有原子性。还应注意使用线程的情况。

在 CWE-362 的链接中,有一些有用的论文列表。这些将提供比我在这里提供的更多的信息。

这里的讨论和答案似乎围绕着比赛条件,通常用那个名字来指代。

如果您真的是指计时攻击,那么您可能是在谈论通过执行时间差异导致的信息泄漏。 A Lesson In Timing Attacks是一个很好的、易于理解的介绍。

我不知道有任何工具可以专门帮助发现这些问题,但是常见的 Web 评估工具可以揭示其他可能因定时攻击而加剧的问题。

假设您有一个漏洞,允许外部方针对您的数据库运行 SQL 代码——经典的 SQL 注入。假设您采取了一些预防措施:他们无法取回数据或将任意信息写入您的数据库,您只需返回某种通用错误消息。外部方可以使用“选择”语句来探测您的数据库架构,并确定接收响应所需的时间;简单地通过观察你的后端系统正在做多少工作,他们正在学习一些他们可能没有的东西(一个特定的表是否真的存在,一个表中是否有很多记录,等等)。