Leather-logo

Leather

|

Leather is a self-custodial wallet for Bitcoin and Stacks, available as a browser extension, mobile app, and web app. It lets users hold and manage BTC, STX, and related assets, sign transactions, and connect to dApps across the Bitcoin and Stacks ecosystems.

Stacks
Bitcoin
Wallet
Typescript
Maximum Bounty
$5,000
Live Since
30 July 2026
Last Updated
30 July 2026
  • Triaged by Immunefi

  • Step-by-step PoC Required

  • KYC required

  • Arbitration enabled

Select the category you'd like to explore

Assets in Scope

Target
Name
Monorepo
Added on
13 July 2026
Target
Primacy Of Impact
Name
Added on
13 July 2026
Target
Name
Leather browser extension
Added on
16 July 2026
Target
Name
Leather iOS app
Added on
16 July 2026
Target
Name
Leather Android app
Added on
16 July 2026
Target
Name
Leather web app
Added on
16 July 2026
Target
Name
Leather backend
Added on
16 July 2026

Impacts in Scope

Severity
Critical
Title

A loss of funds involving an attack that does not require any user action

Severity
Critical
Title

Private key or private key generation leakage leading to unauthorized access to user funds

Severity
Critical
Title

Execute arbitrary system commands

Severity
Critical
Title

Retrieve sensitive data/files from a running server, such as:

  • /etc/shadow
  • database passwords
  • blockchain keys (this does not include non-sensitive environment variables, open source code, or usernames)
Severity
Critical
Title

Taking and/modifying authenticated actions (with or without blockchain state interaction) on behalf of other users without any interaction by that user, such as:

  • Changing registration information
  • Commenting
  • Voting
  • Making trades
  • Withdrawals, etc.
Severity
Critical
Title

Subdomain takeover with already-connected wallet interaction

Severity
Critical
Title

Malicious interactions with an already-connected wallet, such as:

  • Modifying transaction arguments or parameters
  • Substituting contract addresses
  • Submitting malicious transactions
Severity
Critical
Title

Injection of malicious HTML or XSS through metadata

Severity
Critical
Title

Manipulation of a multisig transaction between proposal and broadcast, causing signers to approve or co-sign details different from what was presented to them.

Severity
Critical
Title

Wallet interaction modification resulting in financial loss

Severity
Critical
Title

Interacting with the wallet's RPC/provider interface from an origin that was never granted permission, or spoofing another origin's granted permissions

Severity
Critical
Title

Bypassing wallet authentication (password, lock screen, or biometrics) to access accounts, decrypted secrets, or signing capability

Out of scope

Program's Out of Scope information

All reports must include a working proof of concept demonstrated against testnet or a local build, clear reproduction steps, and the specific in-scope asset and impact affected. Reports that are theoretical, that consist of unmodified automated scanner or AI-generated output, or that lack a working PoC will be closed as informational or spam without further review, regardless of claimed severity. Mass-submitted, templated, or duplicate reports will be closed.

Only the current production releases are in scope: the latest published build of the Leather extension on the Chrome Web Store, and the latest published build of the Leather mobile app on the Apple App Store and Google Play Store. Pre-release and beta builds, unreleased or experimental code, and any earlier version other than the current published release are out of scope. Reports must demonstrate the issue against the current published build; findings that only affect older versions or unreleased code will be closed as out of scope.

The following are out of scope for this program:

Assets and surfaces

  • The Bitcoin, Ordinals, Runes, and Stacks protocols themselves (report Stacks blockchain issues via the Stacks Immunefi program)
  • Third-party dApps, exchanges, or websites that connect to Leather. Only Leather's own provider and connection layer is in scope
  • Third-party services such as fiat onramps, node/RPC providers, and price feeds
  • Marketing or documentation pages on leather.io

Wallet threat model

  • Anything requiring physical access to an unlocked device, an already compromised, rooted, or jailbroken device, or pre-existing malware on the user's machine
  • Loss of funds from user action, such as sending to the wrong address, approving a transaction after a clear and accurate confirmation screen, choosing a compromised password, using non-mainnet netrworks, or disclosing the secret recovery phrase
  • Any issue requiring a modified, unofficial, or side-loaded build

On-chain data rendering

  • Misleading token names, scam airdrops, and spoofed NFT or contract metadata. Leather renders what exists on-chain and is not responsible for the accuracy or intent of that data, unless the rendering itself enables code execution or a signing bypass

Low-value and noise reports

  • Automated scanner or dependency-version output without a working exploit against production
  • Missing security headers or cookie flags, SSL/TLS best practices, and SPF/DKIM/DMARC misconfigurations without a demonstrated exploit chain
  • Version disclosure, fingerprinting, and verbose error messages
  • Rate-limiting and brute-force concerns, including on local wallet unlock
  • CORS, host header injection, content spoofing, tab-nabbing, and clickjacking unless chained to a demonstrated impact on funds, keys, or an active signing session
  • Issues only exploitable on end-of-life browsers or OS versions
  • Self-XSS, and DOM-based XSS unless demonstrated in a stored or privileged context
  • Any theoretical chain without each link demonstrated by a working PoC
  • Denial of service that does not lead to a loss of funds or a signing compromise.

Prohibited

  • Testing against mainnet with real user funds (use testnet or your own wallets)
  • Phishing or social engineering against Leather staff, contributors, or users
  • Testing third-party systems as the primary attack vector
  • Public disclosure of an unpatched vulnerability before resolution and authorization
Default Out of Scope and rules

Web & App specific

  • Theoretical impacts without any proof or demonstration
  • Impacts involving attacks requiring physical access to the victim device
  • Impacts involving attacks requiring access to the local network of the victim
  • Reflected plain text injection (e.g. url parameters, path, etc.)
    • This does not exclude reflected HTML injection with or without JavaScript
    • This does not exclude persistent plain text injection
  • Any impacts involving self-XSS
  • Captcha bypass using OCR without impact demonstration
  • CSRF with no state modifying security impact (e.g. logout CSRF)
  • Impacts related to missing HTTP Security Headers (such as X-FRAME-OPTIONS) or cookie security flags (such as “httponly”) without demonstration of impact
  • Server-side non-confidential information disclosure, such as IPs, server names, and most stack traces
  • Impacts causing only the enumeration or confirmation of the existence of users or tenants
  • Impacts caused by vulnerabilities requiring un-prompted, in-app user actions that are not part of the normal app workflows
  • Lack of SSL/TLS best practices
  • Impacts that only require DDoS
  • UX and UI impacts that do not materially disrupt use of the platform
  • Impacts primarily caused by browser/plugin defects
  • Leakage of non sensitive API keys (e.g. Etherscan, Infura, Alchemy, etc.)
  • Any vulnerability exploit requiring browser bugs for exploitation (e.g. CSP bypass)
  • SPF/DMARC misconfigured records)
  • Missing HTTP Headers without demonstrated impact
  • Automated scanner reports without demonstrated impact
  • UI/UX best practice recommendations
  • Non-future-proof NFT rendering

All categories

  • Impacts requiring attacks that the reporter has already exploited themselves, leading to damage
  • Impacts caused by attacks requiring access to leaked keys/credentials
  • Impacts caused by attacks requiring access to privileged addresses (including, but not limited to: governance and strategist contracts) without additional modifications to the privileges attributed
  • Impacts relying on attacks involving the depegging of an external stablecoin where the attacker does not directly cause the depegging due to a bug in code
  • Mentions of secrets, access tokens, API keys, private keys, etc. in Github will be considered out of scope without proof that they are in-use in production
  • Best practice recommendations
  • Feature requests
  • Impacts on test files and configuration files unless stated otherwise in the bug bounty program
  • Impacts requiring phishing or other social engineering attacks against project's employees and/or customers