Carrot Disclosure: Forgejo

· security · Source ↗

TLDR

  • Security researcher found a full RCE chain in Forgejo in one evening via chained SSRF, auth flaws, and crypto issues, publishing only redacted output as “carrot disclosure” pressure.

Key Takeaways

  • Vulnerabilities span SSRF in many locations, absent CSP/Trusted-Types, JS templating bugs, cryptographic malpractices, OAuth2/OTP/session flaws, DoS, info leaks, and TOCTOU races.
  • RCE chain creates a backdoor admin account and executes commands via server-side git hook; requires open registration plus one non-default config option present on real instances.
  • Carrot disclosure: researcher publishes only the redacted exploit terminal output plus a SHA256 hash of the withheld PoC, not the exploit itself, to force a vendor-side audit.
  • Five scripts exist (chain_alpha/beta/gamma, leak_secrets, merge) plus an 83KB NOTES.md; all withheld pending Forgejo response.
  • Researcher argues the codebase is shallow enough that a second RCE chain is a matter of another evening, framing the fix burden as structural, not patch-by-patch.

Hacker News Comment Review

  • Skeptics note the two actual PRs filed are trivial (quote escaping, OAuth PKCE enforcement), not vuln reports, making the public pressure framing look like grandstanding without direct disclosure.
  • Forgejo’s governance doc explicitly threatens to publicly criticize researchers who deviate from their required disclosure process, which likely explains the adversarial tone on both sides.
  • One commenter raised a pointed concern: in the LLM era, publishing exploit context plus the open Forgejo codebase may effectively be full disclosure since a capable model could reconstruct the chain.

Notable Comments

  • @gchamonlive: argues that with the provided context and Forgejo’s public codebase, Codex could likely reproduce the vuln chain, making carrot disclosure functionally equivalent to full disclosure in 2026.
  • @throwaway38294: self-hosts Forgejo on LAN only and advises against any public exposure, treating the finding as confirmation of an existing operational posture.

Original | Discuss on HN