Skip to main content
Research
Englishالعربيةکوردی
RESEARCH BRIEFCV-BA78D5

A concise security write-up focused on one disclosed finding or technique.

DoSPDFHackerOne

A Report With 50 Comments Took Down HackerOne (2,500$ Bounty)

An uncapped PDF export let a single low-volume attacker degrade HackerOne's global response times — and nearly didn't get rewarded for finding it.

50 commentspayload size~100KB each, producing a 20MB+ PDF on render
2 req/secattacker loadenough to push HackerOne's global response times past 30 seconds
$2,500eventual bountyafter an initial "not eligible" reversal on appeal
Share

Results.

50 commentspayload size~100KB each, producing a 20MB+ PDF on render
2 req/secattacker loadenough to push HackerOne's global response times past 30 seconds
$2,500eventual bountyafter an initial "not eligible" reversal on appeal

How it worked

  1. 01
    Build an oversized report

    Comments were stacked inside a HackerOne report to inflate its rendered PDF past 20MB.

  2. 02
    Trigger PDF conversion

    Requesting hackerone.com/reports/<id>.pdf forced the server to render the entire bloated document.

  3. 03
    Repeat at low volume

    A steady 1–2 requests per second, from a single IP, was enough to degrade hackerone.com platform-wide.

  4. 04
    Confirm cross-IP impact

    Independent checks from other networks and locations showed the same delays, ruling out a self-DoS.

  5. 05
    Report, 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.

Put the finding to work

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
Sirat Sami, CEO & Lead Penetration Tester
About the researcher

Sirat Sami

10+ years in cybersecurity and bug bounty hunting. Reported 200+ vulnerabilities including 50+ high and critical severity issues across 130+ companies, among them Slack, the U.S. Department of Defense, Sony, PlayStation, Snapchat, TikTok, Amazon, Zoom, and GitLab. Attended the H1-4420 live hacking event in London.

View profile and research