Bug Bounty Report Guide
The report template below covers vulnerabilities in TAC-related FunC / Tact contracts deployed on TON. Tools: Blueprint, toncli, tonutils-go, @ton/ton (JS SDK).Report Template
Report Template Commentary
1. Title and Metadata
Unprotected Internal Message, Bounce Exploit, Storage Drain,
Replay Attack (no op-guard), Incorrect Fees / Forward Gas,
Cell Overflow, Tact Inheritance Access Control.
2. Executive Summary
Same four questions:- What is broken? — which op-code handler / recv_internal branch.
- What does the attacker gain? — TON drained / token minted / ownership.
- How much? — contract balance or jetton supply at risk.
- Is it repeatable? — per-message / once / needs timing.
3. Vulnerability Details
3.1 Affected Contract
3.2 Root Cause
Theop::mintbranch readssender_addressfrom the message slice but never callsthrow_unless(73, equal_slices(sender_address, storage::admin))before executing the mint logic.
3.3 Vulnerable Code Snippet
3.4 Fixed Version
3.5 TON-specific Considerations
- Bounce messages: does the contract handle
op::excesses/ bounced messages safely? A missing bounce handler can leave funds locked. - Forward gas: does the contract forward enough gas for sub-messages? Under-forwarding silently fails without reverting the parent tx.
- Storage fees: contracts with no incoming messages will be frozen and then deleted. Does the attacker benefit from this?
- Replay: TON has no global nonce — contracts must implement their own
seqno or use the
valid_untiltrick.
4. Exploitation Steps
For each step, include the message body layout (op + payload):5. PoC Results
Required:- Contract address (
EQ...). - Transaction hash (lt + hash, or Tonviewer link).
- Message trace (Tonviewer shows the full message tree).
- Jetton balance / TON balance before and after.
5.1 Scaling Economics
6. Impact Assessment
- contract holds significant TON balance (storage drain possible),
- contract is a bridge or DEX vault,
- no upgrade / pause mechanism exists.