ton-vulnerability-scanner
作成者 trailofbitston-vulnerability-scanner は、FunC で書かれた TON スマートコントラクトに特化した監査スキルです。整数を真偽値として誤用していないか、偽の Jetton コントラクトを正しく扱えているか、TON を転送する際の gas チェックが抜けていないかを見つけるのに役立ちます。より深い手動レビューに入る前の、素早い初回 Security Audit に最適です。
このスキルは 78/100 で、TON/FunC コントラクトを監査するユーザー向けのディレクトリ候補として十分に有力です。セキュリティ対象が明確で、用途も具体的、さらにパターンの指針もあるため、汎用的なプロンプトよりも迷いを減らせます。一方で、インストールコマンドや実行スクリプトがないため導入のハードルはやや高く、完全自動ツールというよりは詳細な監査プレイブックとして読むのが近いでしょう。
- TON/FunC の監査、Jetton のレビュー、gas 転送チェックに対して使う場面が明確で、用途の判断がしやすい。
- 実践的なワークフローがあり、本文は 11k 以上、複数の見出し、そして TON 特有の 3 つの問題に対する専用チェックリストを備えている。
- resources/VULNERABILITY_PATTERNS.md の根拠付きパターン集により、エージェントが具体的な失敗モードを把握し、コントラクトを体系的に確認しやすい。
- インストールコマンドもスクリプトもないため、パッケージ化された実行可能ツールではなく、手動運用またはプロンプト誘導型と考えるのが妥当。
- 対象範囲は FunC の TON スマートコントラクトに絞られており、より広いブロックチェーン監査や複数言語のレビューには向きません。
ton-vulnerability-scanner skill の概要
ton-vulnerability-scanner は、FunC で書かれた TON スマートコントラクト向けの集中的な監査スキルです。一般的なスマートコントラクト用プロンプトでは見落としやすい、TON 固有の不具合を見つけるのに役立ちます。特に、boolean の扱い、Jetton ロジック、gas の転送まわりに強みがあります。深い手動解析や外部監査の前に、まず素早く一次レビューしたいときに使うのが適しています。
この skill が最も向いている用途
ton-vulnerability-scanner は、公開前の TON コードを確認する監査担当者、プロトコルエンジニア、開発者にとって特に有用です。コントラクトの制御フロー、トークン検証、メッセージ処理が TON の慣例に合っているかを確認したい場合に向いています。一般的なコードレビュー用 skill ではなく、影響の大きい TON の失敗パターンを少数に絞って設計されています。
中核となる脆弱性フォーカス
この repository は、整数を boolean として誤用する問題、偽の Jetton コントラクト処理、そして適切な gas チェックなしで TON を転送してしまう問題という 3 つの重要なパターンに絞っています。このスコープが重要なのは、広く「バグを探す」といった曖昧な prompt よりも、より鋭いシグナルが得られるからです。FunC コントラクトの Security Audit を目的にするなら、こうした狭く深いツールが合っています。
使わないほうがよい場面
FunC 以外のスタック、一般的な EVM コントラクト、あるいは TON 固有ではないアーキテクチャレビューでは、強い結果は期待しないでください。スタイルの指摘、テスト生成、完全な形式監査を求めるなら、ton-vulnerability-scanner 単体では範囲が狭すぎます。大きなレビュー工程の中で使う、ターゲットを絞った scanner として最も機能します。
ton-vulnerability-scanner skill の使い方
インストールして skill ファイルの場所を把握する
ton-vulnerability-scanner install の手順では、通常の skills フローを使います。たとえば npx skills add trailofbits/skills --skill ton-vulnerability-scanner です。インストール後は、まず skill の入口ファイルを読み、そのあと repository 内でリンクされている文脈を追ってください。最初に確認すべきファイルは SKILL.md と resources/VULNERABILITY_PATTERNS.md です。
適切な入力を与える
ton-vulnerability-scanner usage のパターンは、具体的なコントラクト、レビュー目的、スコープの境界を与えたときに最も効果を発揮します。たとえば「contracts/wallet.fc を、Jetton transfer の検証、boolean フラグ、gas forwarding のリスクについてレビューして」といった形です。scan this code のような曖昧な入力では、浅い出力になりやすくなります。
漠然としたタスクを強い prompt に変える
ton-vulnerability-scanner guide の考え方を prompt テンプレートとして使いましょう。対象のコントラクトを示し、それが Jetton、wallet、transfer handler のどれかを明示し、skill に優先点を伝えます。例としては、「resources/VULNERABILITY_PATTERNS.md にある 3 つの TON パターンに照らしてこの FunC コントラクトを監査し、boolean を誤処理する条件、Jetton コントラクトを偽装される条件、gas を確認せずに value を転送してしまう条件を、具体的な行や条件式まで示してほしい」という形です。こうした prompt は、一般論ではなくパターンベースの推論を求めるため、精度が上がります。
実務フローと、最初に確認すべき箇所
まずは recv_internal、recv_external、メッセージ解析、そして transfer-notification 系のロジックといったコントラクトの入口を確認してください。次に、boolean フラグ、送信者の検証、send_raw_message()、load_msg_addr()、または coin の読み込み・保存を扱う helper への呼び出しを確認します。skill を素早く理解したいなら、広い repository ツリーよりも resources/VULNERABILITY_PATTERNS.md を優先してください。scanner が実際に探す失敗モードが、そこに具体的に示されています。
ton-vulnerability-scanner skill の FAQ
これは FunC コントラクト専用ですか?
はい、ton-vulnerability-scanner skill は、主に .fc と .func ファイルを含む FunC で書かれた TON コントラクト向けです。プロジェクト内の wrapper、テスト、TypeScript ツール類は文脈理解に役立ちますが、脆弱性ロジック自体はコントラクトレベルで判断されます。Security Audit では、コントラクトソースが最重要入力です。
通常の prompt とはどう違いますか?
通常の prompt でも「怪しいコード」に気づくことはありますが、ton-vulnerability-scanner は boolean の真偽値や Jetton のメッセージパターンといった TON 固有の前提に合わせて調整されています。そのため、プラットフォームを十分に理解していないと見落としやすいバグを見つけやすくなります。一般的な AI コードレビューより狭いですが、その狭さこそが価値です。
初心者でも使えますか?
はい、特定の FunC コントラクトを指し示し、レビュー目的を説明できるなら使えます。初心者が最も良い結果を得やすいのは、リポジトリ全体の完全監査ではなく、1 回ごとのセキュリティ確認を依頼するときです。主な制約は skill の複雑さではなく、対象コントラクトがこの skill の理解する TON パターンを使っているかどうかです。
この skill の主な境界は何ですか?
この skill は、boolean ロジック、Jetton の真正性チェック、gas forwarding のリスクに最も強みがあります。一方で、ビジネスロジックのレビュー、クロスコントラクトのシステム設計、TON のメッセージ意味論と無関係な問題には弱めです。こうしたより広い観点が必要なら、より一般的な監査フローと組み合わせてください。
ton-vulnerability-scanner skill の改善方法
監査対象を明示する
ton-vulnerability-scanner の結果をより良くするには、レビュー対象ファイルでどの 3 パターンを重視してほしいかを伝えてください。たとえば「transfer notification と偽 Jetton の検出に集中して」と伝えるほうが、「全部見て」と言うより有効です。これで、失敗しやすいコードパスに注意を絞れます。
ソースだけでなく、コントラクトの文脈も与える
そのコントラクトが wallet なのか、Jetton minter なのか、transfer handler なのか、receiver なのかを伝えると、skill の精度は上がります。その文脈によって、boolean、メッセージアドレス、転送される value の解釈が変わるからです。期待される不変条件が分かっているなら、最初に書いておくと、コードの振る舞いと照らし合わせてスキャンできます。
よくある失敗パターンに注意する
典型的なミスは、正の整数を boolean として使うこと、検証なしにトークンらしいメッセージを信用すること、そして十分な gas 管理なしに TON を forward することです。出力を確認するときは、各指摘が具体的な行、特定の条件、現実的な exploit 経路を示しているかを見てください。そうでない場合は、resources/VULNERABILITY_PATTERNS.md のパターン一覧に照らして、より厳密に再確認するよう求めてください。
コード抜粋と期待動作を添えて反復する
最初の結果が曖昧なら、疑わしい関数を再送し、意図した挙動を 1 文で添えてください。たとえば「この handler は、期待する master contract から来た genuine な Jetton transfer notification だけを受け付けるべきです」といった具合です。こうした追加説明は、ton-vulnerability-scanner skill が真の陽性と TON 特有の通常パターンを見分けるのに役立ち、より実用的な Security Audit の結果につながります。
