如何测试我的 Web 应用程序的时间攻击?
信息安全
Web应用程序
渗透测试
应用安全
漏洞扫描器
竞争条件
2021-08-15 02:41:41
2个回答
定时攻击、竞争条件 (CWE-362)漏洞在 Web 应用程序中并不常见,这些主要是更底层语言的问题。例如,在CVE-2006-5178中,竞争条件是由于 PHP 解释器本身的错误实现造成的。但是依赖这些功能的应用程序也容易受到攻击。
由于时间问题和特定环境的需要,尝试重现此类漏洞可能会令人生畏。使用自动漏洞扫描仪进行这样的测试是不可行的——即使对于人类来说,也不容易找到这样的漏洞。
在我看来,开发人员只需要记住何时可以中断主进程。当动作序列不能被中断时,应该提供原子性。主要是数据库操作容易受到此类攻击。即使 DBMS 支持事务并提供安全同步的方法,也可以有更多的全局操作在 DBMS 的控制之下,以使它们具有原子性。还应注意使用线程的情况。
在 CWE-362 的链接中,有一些有用的论文列表。这些将提供比我在这里提供的更多的信息。
这里的讨论和答案似乎围绕着比赛条件,通常用那个名字来指代。
如果您真的是指计时攻击,那么您可能是在谈论通过执行时间差异导致的信息泄漏。 A Lesson In Timing Attacks是一个很好的、易于理解的介绍。
我不知道有任何工具可以专门帮助发现这些问题,但是常见的 Web 评估工具可以揭示其他可能因定时攻击而加剧的问题。
假设您有一个漏洞,允许外部方针对您的数据库运行 SQL 代码——经典的 SQL 注入。假设您采取了一些预防措施:他们无法取回数据或将任意信息写入您的数据库,您只需返回某种通用错误消息。外部方可以使用“选择”语句来探测您的数据库架构,并确定接收响应所需的时间;简单地通过观察你的后端系统正在做多少工作,他们正在学习一些他们可能没有的东西(一个特定的表是否真的存在,一个表中是否有很多记录,等等)。