← All programs
PublicProductivitySelf-triagedSafe harborfull disclosure

Quillnote

Collaborative documents and knowledge bases for 40M users.

Escrowed · $310klaunched 01 Feb 2023
pgn scope pull quillnote
Submit report
Response, measured
last 90 days
Median triage
18h
commitment 36h
Median to bounty
10d
commitment 20d
Queue right now
23
412 received · 139 resolved
Response score
89%
within commitment
Triage: median vs commitment18h / 36h
Bounty: median vs commitment10d / 20d
Escrow
$310,000

Held by Peregrine, released automatically on resolution. Covers 10 critical payouts at top of band.

Paid all-time
$2.21M
Hunters thanked
611
Bounty table
  • critical$10k – $30k
  • high$3,000 – $10k
  • medium$750 – $3,000
  • low$150 – $750

Bands are floors and ceilings the program is held to. Mediation can move a report within a band, never below the floor of its agreed severity.

Scope · 5 assets
signed · diff feed available
AssetTypeMax severityEligibleNote
quillnote.appwebcritical yesEditor and workspace
api.quillnote.appapicritical yesGraphQL and REST
Quillnote Desktopdesktopcritical yesElectron, macOS / Windows / Linux
Browser extensionextensionhigh yesWeb clipper
app.quillnote.app (mobile)mobilehigh yesiOS and Android
Out of scope
  • Stored XSS requiring a victim to paste attacker-supplied content into their own doc
  • Content spoofing
Policy

Cross-workspace data access is Critical. Markdown and embed rendering has a dedicated severity table; renderer sandbox escapes in the desktop client qualify for the top of the critical band.

#graphql#electron#sharing#xss
Recent reports · 5
Filter hacktivity →
  • criticalPGN-10471

    Password reset email array accepts two recipients when body is sent as JSON

    The form-encoded reset endpoint also accepted JSON; an array value for email delivered the reset link to both addresses. Victim account was a second researcher account.

    @kestrel_0xImproper Authorization25 Oct 2026triage 18hresolved 4.9d
    $24,000
    Resolved
  • criticalPGN-10433

    Electron renderer escapes sandbox through embed preview protocol handler

    A crafted embed URL reached a privileged protocol handler from the renderer. Proof launched the calculator on the researcher's own machine.

    @ptr_nullImproper Control of Dynamically-Managed Code Resources13 Oct 2026triage 17hresolved 9.9d
    $28,000
    Resolved
  • mediumPGN-10411

    Stored XSS in shared template title renders in admin audit log

    Template titles were escaped in the editor but inserted as HTML in the workspace audit view that admins open.

    @lanternfishCross-site Scripting06 Oct 2026triage 25hresolved 8.3d
    $2,200
    Resolved
  • mediumPGN-10355

    GraphQL alias batching bypasses per-operation rate limit on invite mutation

    Two hundred aliased invite mutations in one request were counted as one operation.

    @kestrel_0xImproper Restriction of Excessive Authentication Attempts18 Sept 2026triage 27hresolved 8.2d
    $1,500
    Resolved
  • criticalPGN-10324

    Symlink inside workspace import archive reads server configuration

    The import worker extracted archives with symlinks intact. The proof read the worker's own environment file and nothing else.

    @n0ctisImproper Link Resolution Before File Access08 Sept 2026triage 13hresolved 7.8d
    $26,000
    Resolved
Top hunters here
  1. 1@ptr_null$28k1 resolved
  2. 2@n0ctis$26k1 resolved
  3. 3@kestrel_0x$25.5k2 resolved
  4. 4@lanternfish$2,2001 resolved