我们发布了一个新工具QuicDraw(H3),因为当前的HTTP/3竞态条件测试方法效果很差。
对于那些尝试对HTTP/3进行模糊测试的人来说,这个工具解决了一个特别烦人的问题。
问题是,QUIC协议的设计初衷是防止网络瓶颈(即队头阻塞),这本身是有益的,但它破坏了利用应用层竞态条件所需的基本时序。我们尝试了所有显而易见的解决方案,但QUIC的RFC标准实质上阻止了数据包分片和其他低层网络优化。🤷♂️
因此,我们想出了一种方法,在QUIC流层进行同步,我们称之为Quic-Fin-Sync技术。
其核心要点如下:
- 建立100个以上的请求,但扣住每个请求的最后一个字节数据不发送。
- 服务器收到了99.9%的数据,但仍在等待那最后一个字节。
- 我们通过一个单一的UDP数据包,同时发送所有这100多个请求的最后一个字节(以及关键的QUIC FIN标志)。
- 这个单一的数据包迫使服务器“近乎同时地”释放所有请求进行处理。在我们的测试中,这种方法的效果远超现有方法——我们成功地在一个存在漏洞的Keycloak设置上触发了超过40次竞态条件。
如果你正在对HTTP/3进行渗透测试,请获取这个开源工具,并告诉我们你用他发现了什么。完整的分析文章在下面。
你在尝试测试QUIC/HTTP/3时遇到过最令人沮丧的事情是什么?