Discourse应用层DoS漏洞分析:大型Markdown负载导致资源耗尽

本文详细分析了Discourse论坛平台中的应用层拒绝服务漏洞,攻击者可通过在回复区提交超大型Markdown负载导致服务器资源耗尽,造成服务中断。包含漏洞复现步骤、缓解建议和完整的漏洞处理时间线。

应用层DoS - 回复区大型Markdown负载导致资源耗尽

漏洞概述

https://try.discourse.org 的回复区发现了一个应用层拒绝服务(DoS)漏洞。通过提交超大型标记负载(约80万个字符),服务器需要30秒才能响应,最终返回HTTP/2 502 Bad Gateway错误。这表明存在潜在的资源耗尽或后端服务故障,可能被利用来降低或破坏网站可用性。

攻击场景

如果攻击者使用多个并行请求(例如通过Burp Intruder、Python脚本或僵尸网络)自动化此请求,可能导致严重的资源耗尽。后端服务将被淹没,导致广泛停机,阻止合法用户访问论坛。

复现步骤

  1. 使用有效凭证登录 https://try.discourse.org
  2. 导航到默认的discobot问候消息
  3. 在拦截请求的同时,使用以下负载回复消息:https://github.com/theteatoast/theteatoast.github.io/blob/main/payload.txt
  4. 重复请求并观察服务器需要约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负载导致服务器处理时间显著增加。攻击者可通过并行请求放大攻击效果,影响整个平台的响应性。修复方案包括实施输入验证、速率限制和优化后端处理逻辑。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计