应用层DoS - 回复区大型Markdown负载导致资源耗尽
漏洞概述
在 https://try.discourse.org 的回复区发现了一个应用层拒绝服务(DoS)漏洞。通过提交超大型标记负载(约80万个字符),服务器需要30秒才能响应,最终返回HTTP/2 502 Bad Gateway错误。这表明存在潜在的资源耗尽或后端服务故障,可能被利用来降低或破坏网站可用性。
攻击场景
如果攻击者使用多个并行请求(例如通过Burp Intruder、Python脚本或僵尸网络)自动化此请求,可能导致严重的资源耗尽。后端服务将被淹没,导致广泛停机,阻止合法用户访问论坛。
复现步骤
- 使用有效凭证登录 https://try.discourse.org
- 导航到默认的discobot问候消息
- 在拦截请求的同时,使用以下负载回复消息:https://github.com/theteatoast/theteatoast.github.io/blob/main/payload.txt
- 重复请求并观察服务器需要约30秒才能响应502
视频证明
视频POC:dis_dos.mp4
建议缓解措施
- 对回复实施输入长度限制,防止过大的负载大小
- 引入速率限制和请求限制,以减轻自动化滥用
- 优化后端请求处理,在处理前尽早拒绝大负载
影响
- 攻击者可利用此漏洞造成严重延迟和临时或长期服务中断
- 缺乏输入验证允许攻击者并行发送多个大请求,导致后端资源耗尽
- 如果自动化,此攻击可能使论坛完全无法访问
时间线详情
2025年3月25日 - theteatoast向Discourse提交报告
2025年4月10日 - HackerOne分析员Trevor要求提供更多信息,证明漏洞会影响其他用户或整个系统
2025年4月18日 - theteatoast提供额外测试结果:
- 执行7个并行请求使用大型Markdown负载
- 同时监控/latest端点(与回复操作无关)
- 结果显示/latest端点响应时间从正常1-2秒延长到约30秒
- 证明漏洞会影响不相关的端点并降低论坛上其他用户的体验
2025年4月21日 - 经过进一步验证,HackerOne将状态改为"已分类"
2025年5月15日 - Discourse向theteatoast发放赏金,确认漏洞有效
2025年5月19日 - Discourse团队开发了漏洞修复程序
2025年6月9日 - 发布CVE:GHSA-3q5q-qmrm-rvwx
2025年9月18日 - theteatoast请求披露此报告
2025年10月18日 - 报告被公开披露
技术细节
漏洞涉及应用层资源耗尽,通过提交超大型Markdown负载导致服务器处理时间显著增加。攻击者可通过并行请求放大攻击效果,影响整个平台的响应性。修复方案包括实施输入验证、速率限制和优化后端处理逻辑。