Skip to main content

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

Useful classes: 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:
  1. What is broken? — which op-code handler / recv_internal branch.
  2. What does the attacker gain? — TON drained / token minted / ownership.
  3. How much? — contract balance or jetton supply at risk.
  4. Is it repeatable? — per-message / once / needs timing.
Example:

3. Vulnerability Details

3.1 Affected Contract

Provide a Tonviewer / Tonscan link if the contract is verified.

3.2 Root Cause

The op::mint branch reads sender_address from the message slice but never calls throw_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_until trick.

4. Exploitation Steps

For each step, include the message body layout (op + payload):
Blueprint test skeleton:

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.
Example:

5.1 Scaling Economics

6. Impact Assessment

TON-specific severity boosters:
  • contract holds significant TON balance (storage drain possible),
  • contract is a bridge or DEX vault,
  • no upgrade / pause mechanism exists.

Immediate

Long-term

Adjacent Audit

8. Proof-of-Concept Code

Provide a Blueprint test or a minimal @ton/ton script: