Results.
How it worked
- 01Build an oversized report
Comments were stacked inside a HackerOne report to inflate its rendered PDF past 20MB.
- 02Trigger PDF conversion
Requesting hackerone.com/reports/<id>.pdf forced the server to render the entire bloated document.
- 03Repeat at low volume
A steady 1–2 requests per second, from a single IP, was enough to degrade hackerone.com platform-wide.
- 04Confirm cross-IP impact
Independent checks from other networks and locations showed the same delays, ruling out a self-DoS.
- 05Report, dispute, retest
The finding was first marked ineligible on a technicality, reversed after appeal, then fixed with rate limiting.
The bug itself was almost embarrassingly simple: HackerOne's report-to-PDF export had no cap on how much content it would try to render. Stack enough comments into a single report — in this case 50 comments at roughly 100KB apiece — and the resulting PDF ballooned past 20MB. Requesting that PDF at hackerone.com/reports/<report_id>.pdf meant the server had to generate all of it, every time, on demand.
That alone is just a slow endpoint. The actual vulnerability was what happened when that slow endpoint got hit repeatedly. A modest, almost boring request rate — one or two requests per second, from a single IP — was enough to start degrading response times across hackerone.com within seconds. No botnet, no distributed traffic, no exotic technique. Just a heavy, uncached operation triggered often enough that the server couldn't keep up, cascading into timeouts and 502/504 errors for unrelated users elsewhere on the platform.
To confirm this wasn't just local network flakiness or a self-inflicted illusion, the researcher checked from separate locations and IPs while the test was running and saw the same delays — real, externally visible degradation of HackerOne itself, not a self-DoS artifact.
What makes this case notable isn't just the bug — it's what happened after. HackerOne's initial triage response marked it ineligible for a reward, citing a DoS testing policy the reporter had, by their own account, actually followed: single IP, single user, no automated flooding, immediate stop once impact was confirmed, testing within allowed hours. The one gap was not stating the testing IP address up front. After the reporter pushed back and asked directly which specific policy line was violated, HackerOne reversed course and paid out $2,500 as an explicit exception — while noting future reports would need to follow the published rules more strictly regardless.
The eventual fix was rate limiting on the PDF endpoint. On retest, that held — but the reporter flagged the more durable fix: caching the rendered PDF, since a per-IP or per-account rate limit alone can still be worked around with multiple accounts or IPs hitting the same expensive, uncached render path.
Could the same assumption be hiding in your attack surface?
Test the exact trust boundary—and the paths around it—with evidence-led manual security assessment.
Discuss a security assessment
