本文へ移動
SaferICO SaferICOスマートコントラクトのセキュリティ
敵対的な検査 — 攻撃プレイブックは全文公開

攻撃者が動く前に、 どう破られるのかを見る。

スキャナーが答えるのは「このコードのどこが問題か」です。しかしローンチ前に本当に知りたいのは別の問いです — 攻撃者は実際に何を突けるのか。このツールはスキャンが生んだ指摘を取り、通り抜けられる 1 本の経路へ組み立てようとします。そして組み上がった経路ごとに、どこまでが証明で、どこからが推論で、実証コードは走ったのか走っていないのかを明記します。悪く見えるという理由だけで「確認済み」とは言いません。

攻撃プレイブックは無料公開コントラクトの読み取りは無料オンチェーンへ何も送信しません権限があることの表明が必要です
//10 の攻撃系統

コントラクトが資金を失う 10 の道すじ

各系統がここにあるのは、その前提条件を証明できる検出ルールをスキャナーが持っているからです。プレイブックのどの連鎖にも、ご自身のコードに対して報告されるために先に成立していなければならない条件が書かれています。

アクセス制御

権限を与える関数が、呼び出した相手を確かめ忘れている。もっとも古く、もっともよくある系統です。技巧を一切必要とせず、必要なのは誰かがその 1 行を書き忘れることだけだからです。

リエントランシー

「いくら持ち出したか」をコントラクトが記録する前に、戻ってきてもう一度持ち出す。何年も経ってなお有効なのは、順序の誤りがロジックの誤りよりレビューで見えにくいからです。

フラッシュローン経路

元手のいらない攻撃 — 元手は借りたもので、同じトランザクションの中で返します。「攻撃者はまず 1,000 万ドル持っていなければならない」という前提を丸ごと消し去ります。

オラクルの操作

コントラクトが、ある資産の価値を別のものに尋ね、その答えは選べてしまう。問題はコントラクトの算術ではなく、誰を信じると決めたかにあります。

価格の操作

コントラクトが価格の根拠にしている市場を少し動かすか、まもなく成立する取引の前後に割り込む。コードはすべて正しく、価格だけが操られます。

署名とリプレイ

1 つの署名が、1 度ではなく、1 つのチェーンではなく、1 つの用途ではなく効いてしまう。署名そのものは有効です — 有効だからこそ、リプレイが役に立ちます。

アップグレード可能性

そのアドレスの背後にあるコードが、もう監査されたものではありません。レポートが間違っているのではなく、記述していた対象がそこにいないだけです。

権限の昇格

ふつうの呼び出し元から owner へ、あるいは owner から owner 以上へ。あいだに何段もあり、1 段ずつ見れば、どれも問題には見えません。

ビジネスロジック

1 行ずつはすべて正しく、足し合わせた規則が正しくない。この系統に照合できるパターンはなく、このコントラクトが何をしようとしているのかを読むしかありません。

経済と DeFi

壊れているものは何もありません。ただ、インセンティブが攻撃者に払う額のほうが、ご自身に払う額より多いだけです。

ツール本体(スキャナー、各ダッシュボード、SAFI ワークスペース)のインターフェースは現時点では英語です。これらのページは、その中に入る前にすべてを日本語で説明するためにあります。

判定の 段階

このツールが報告する経路には、必ず悪用可能性の判定が付きます。ソースを読むだけで出せるもっとも強い判定は「可能性あり」です — これは外し忘れた制限ではなく、意図して置いた上限です。

🚧 「確認済み」という語を、この経路が口にすることはありません

「確認済み」とは、隔離したコントラクトの複製に対して誰かが実証コードを実行し、成功したという意味です。この経路は何も実行しないので、その語を生み出すことは決してありません。

「ひどく見える」を「確認済み」と書くツールは、最初に照合された時点で価値を全部失います。だから、もっとも強い結論を「可能性あり」で止めるほうを選びます。

01可能性あり:道は開いている、誰かが通ったとは言っていない

必要な前提条件のそれぞれが、ご自身のコードの中でスキャナーが実際に検出したものを指しており、裏付けの証拠もおおむね揃っています。

これが言っているのは、道が開いているということであって、誰かがすでに通ったということではありません。この 2 つの差が、会議に持っていけるレポートと、ただ怖がらせるだけのレポートの差です。

02未検証:人に見せる手がかりであって、結論ではありません

必要な前提条件は成立していますが、連鎖の大部分は検出ルールの直接の一致ではなく、構造からの推論で支えられています。

これは人によるレビューへ回す手がかりとして、はっきり印を付けられます。手がかりを結論の体裁で包むことは、この業界でもっともよくある信用の失い方です。

03コントラクトの読み取りは無料、連鎖の組み立てが課金対象です

スキャンはブラウザ内で走り、ソースはそこから出ません。外へ送られるのはスキャンが生んだ指摘だけ — 検出ルールの番号、関数の表、アクセス制御の印 — で、攻撃連鎖の組み立てに使われます。ネットワークパネルで、実際にそうなっていることを目で確かめられます。

攻撃連鎖の組み立ては AI Agents プランに含まれ、1 回あたり 5 クレジットを消費します。デプロイ済みのアドレスは、エクスプローラーでソースが検証済みである必要があります。未検証のバイトコードには読める関数がなく、組み立てる材料がないからです。

04権限があることの表明を求めます

ページには必ずチェックする欄があります。このコントラクトを所有している、レビューを委託されている、あるいはご自身がデプロイしたものである、のいずれかです。

ここではチェーンに触れません。ソースはエクスプローラーから読み、このブラウザ内で解析し、最初から最後までトランザクションを組み立ても送信もしません。この欄自体が何かを証明するわけではなく、記録しているのは意図です — そして、誰のためにでも他人のコントラクトを検査するツールは、まったく別の製品です。

//よくある質問

敵対的な検査に ついて

スキャナーとの違いは何ですか。
スキャナーはコードを 1 行ずつ読み、どこに問題があるかを列挙します。このツールはその指摘を取り、完全な攻撃経路へ組み立てようとし、各段階に証拠を付けます。前者は「何が悪いか」に、後者は「その悪さがどう突かれうるか」に答えます。
本当にコントラクトを攻撃するのですか。
しません。全過程を通じてオンチェーンへトランザクションを送りませんし、組み立てもしません。ソースはエクスプローラーから読み、ブラウザ内で解析し、得られるのは経路の説明であって、実際の攻撃ではありません。
攻撃プレイブックを読むのは有料ですか。
無料です。プレイブックの全文が公開されています。各連鎖、その前提条件、対応する実際の事件を、そのまま読めます。有料なのは、それらの連鎖をご自身のコードに対して組み立てる段階です。
なぜ、もっとも強い結論が「可能性あり」までなのですか。
「確認済み」とは、誰かが実証コードを実際に通したという意味であるべきだからです。この経路は何も実行しないので、その語を使う資格がありません。推論を確認と言い換えることは、もっとも犯しやすく、もっとも犯すべきでない誤りです。
未検証のコントラクトも検査できますか。
できません。未検証のバイトコードには読める関数名も構造もなく、攻撃連鎖へ組み立てる材料がありません。まずエクスプローラーでソースを検証するか、Solidity のソースを直接貼り付けてください。

送金する前に、コントラクトをスキャン

コントラクトアドレスを貼り付ければ、リスクを取る前にオーナー権限、流動性、売却シミュレーションの結果が分かります。1 回ごとに少額の手数料がかかり、金額は署名の前に表示されます — どのプランでも、加入後は無制限に含まれます。