こんにちは!CryptoGamesというブロックチェーンゲーム企業でエンジニアをしているかるでねです!
スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。
このブログ以外でも情報発信しているので、よければ他の記事も見ていってください。
https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58
今回の記事では「Bug Bounty」について紹介していきます!
Bug Bountyとは?
Bug Bounty(バグバウンティ)とは「脆弱性報奨金制度」という意味です。
日本語に置き換えても漢字多すぎて意味がわからないと思うので、もっとわかりやすく説明します。
脆弱性報奨金制度
https://ja.wikipedia.org/wiki/脆弱性報奨金制度
(ぜいじゃくせいほうしょうきんせいど、英: bug bounty program)は、製品やサービスを提供する企業が、その製品の脆弱性(特にエクスプロイトやセキュリティホールなど)に関する報告を外部の専門家や研究者から受け、その対価として報奨金を支払う制度[1][2]。この制度を利用することで、開発者は一般のユーザーが気付く前にバグを発見し、対処できるため、広範囲に渡る可能性のあるインシデントを事前に防げる。MozillaやFacebook、Yahoo!、Google、マイクロソフト、日本ではサイボウズやピクシブ、LINEなど、多くのウェブサイトや組織、ソフトウェア開発者が導入している。バグバウンティプログラムやバグ報奨金プログラムとも呼ばれ、導入する組織によっては独自の制度名が付けられている場合もある。
Wikipediaには上記のように書かれています。
簡単にまとめると、「製品に関するバグをあらかじめ発見してもらい、発見してもらった人に報奨金を支払う」ということです。
Wikipediaには「専門家や研究者」と記載がありますが、オープンに誰でも参加可能にしているところが多いです。
https://cybozu.co.jp/products/bug-bounty/
バグを発見するにあたり、開発者サイドの視点だけでなく攻撃者視点も重要になります。
企業がBug Bountyを導入する理由としては、「セキュリティ人材が不足しているため十分な人材を雇うことができない」だったり、「バグを見つけて報酬を払う方がコストが少なくて済む」、「社内で発見できなかったバグを見つけてもらえる」などがあります。
スマートコントラクトにおけるBug Bountyとは?
「スマートコントラクト」が何かわからない方は以下の記事が参考になります。
スマートコントラクトにおけるBug Bountyについても同じように、一般人(ホワイトハッカー)にバグを報告してもらい、その対価として報酬を支払います。
ここで重要な単語が1つあります。
それが「Audit」という単語です。
「Audit」は「監査」という意味で、「Smart Contract Audit」は、「公開前のプロジェクトのソースコードにバグがないか分析を行い、事前にハッキングを防ぐ」という意味となります。
スマートコントラクトの監査には主に2つの方法があります。
1つはスマートコントラクト監査を行なっている企業に監査をお願いする方法です。
このような企業は「Audit Firm」と呼ばれています。
2つ目は「Bug Bounty」になります。
一般人(ホワイトハッカー)に監査をお願いするよりも、専門としている企業に監査をお願いした方が信頼感があるのではないかと考える人がいると思います。
一見この意見が正しいように思えますが、「Audit Firm」には以下の問題点があります。
ポイント
- 有名企業が監査を行うとしても、誰が監査を行なったのかわからない。
- 専門としている企業だとしても、1つのプロジェクトの監査に割ける人員は限られている。
- 監査したプロジェクトにバグが残っていてハッキングされても、監査を担当した企業は何の責任を負わない。
- バグを発見してもそれは企業としての価値となってしまい、個人に帰属しない。
2022年のハッキング事件のほとんどは第3者によって監査されたプロジェクトで発生しています。
https://cointelegraph.com/news/lack-of-transparency-among-project-auditors-a-big-problem-hacken-ceo
一方、「Bug Bounty」であれば以下のように、「Audit Firm」の問題点を解決できます。
ポイント
- 誰が監査を行なったのかがランキングなどから一目でわかる。
- 誰でも参加可能なため多くの人が参加する(100人を超える人が1つのプロジェクトの監査に参加しています)。
- 個人も責任を負いませんが、多くの人が監査に参加するためバグが残る可能性が低くなる。
- バグを発見して報告した際、個人の成績として残る。
このことから最近は「Bug Bounty」は監査を依頼する事業者や監査を行うエンジニアからは高く評価されています。
なぜスマートコントラクトの監査が必要なのか?
「スマートコントラクト監査を行わなくてもブロックチェーンは安全ではないのか?」と考える人がいるかもしれません。
もちろんブロックチェーン自体は安全ですが、その上で動くアプリケーションが安全でない場合があります。
そのため、ちょくちょくニュースで見かけるような「〜$がハッカーにより流出」などの事件が起きているのです。
アプリケーションはスマートコントラクトを通じてブロックチェーンとコミュニケーションを行うため、スマートコントラクトに脆弱性があり、その脆弱性を悪意あるユーザーに突かれることで資金の流出などにつながります。
ちょっとしミスで膨大な資金の盗難につながる可能性があり、ブロックチェーンの取引は不可逆であるため、安全性の確認は必須になります。
また、使用するユーザーからすると、監査されたアプリケーションと監査していないアプリケーションとでは使用する上で安心感がだいぶ違います。
スマートコントラクト監査の流れ
Audit Firm
まずは「Audit Firm」に依頼した際のスマートコントラクト監査の流れを確認しましょう。
1. 仕様についての理解
監査チームが、プロジェクトやプロジェクト全体の構造を理解する。
良い監査をする上でドキュメントにしっかりまとめていることが重要。
コードフリーズ(コードがこれ以上更新されない状態)について取り決める必要があり、それまでに開発者は全ての箇所を確認し、不具合や予期せぬ動作を可能な限り修正している状態が望ましい。
2. 手動テストと自動テストの実行
個々の小さな機能の動作を確認する単体テストから、まとまった機能について確認する結合テストを行う(手動テスト)。
テストを書くことでコードの動作について開発者と認識を合わせることができ、監査チームの混乱を防ぐことができる。
自動化されたバグ検出ソフトウェアによるテストも行う(自動テスト)。
コード内のよくある脆弱性の特定が大幅に容易になり、監査にかかる時間が短縮するとともに、監査チームが複雑性の高いバグや未知の脆弱性の発見に集中することができるようになり、結果として監査プロセスが効率化される。
3. 専門家による分析
自動化ツールはよくある脆弱性を特定する上では有用ですが、開発者の意図を捉えきれない場合がある。
より潜在的な脆弱性を網羅的に特定するため、専門家による監査も必要になる。
4. 監査レポートの作成
監査の結果を開発チームに向けて報告書にまとめている。
5. 監査レポートのフィードバックを受けて最終報告書を作成
報告後、監査チームと開発チームで議論をし、開発チームは改善案をプロジェクトに取り込んでいく。
継続的に議論・監査によるフォローアップを行い、これ以上潜在的な脆弱性を残さないようにする。
Bug Bounty
次に「Bug Bounty」でのスマートコントラクト監査の流れについてみていきましょう。
今回はCode4renaというプラットフォームを参考に紹介します。
1. コンテスト開催応募
賞金の設定や、コンテストの開催日程、Githubやプロジェクトの説明などを用意します。
2. コンテスト開催
大体3~7日間で開催される。
3. スポンサーによる監査結果のレビューとフィードバック
理想は5日目としているが、平均は14日目になっている。
4. 審査が完了し結果を発表
理想は9日目としているが、平均25日目~34日目になっている。
5. 賞の授与、スポンサーによる問題の解決
理想は14日目としているが、平均32日目~44日目になっている。
6. 監査報告書の発行とコンテスト課題の公開
理想は21日目としているが、平均42日目~60日目になっている。
各工程で理想通りに日程が進んでいないですが、時間がかかっている部分を分析してスムーズに進められるように改善しているそうです。
ハッキング事件の事例
Poly Network
被害額:約6億ドル
BSC、Polygon、Ethereumの3つのブロックチェーンのスマートコントラクトがハッキングされた。
ハッカーは検証されていないPoly Networkのコントラクトのセキュリティの欠陥を暴露し、それによるリスクの大きさをアピールするために行い、ハッカーはお金を返しPoly Networkのチーフセキュリティコンサルタントのポジションを提案したが、ハッカーは匿名のままこの申し出を拒否した。
Ronin
被害額:約5億5000万ドル
世界的に有名なNFT P2Eゲーム「Axie Infinity」のプレイヤーが、ゲームのブロックチェーンへ資金や資産を移動するために使用するブリッジであるRoninは、わずか2回の取引で17万3,000以上のETHと2,500万以上のUSDCを未知のハッカーに奪われた。
この盗難は、Sky MavisのRoninとAxie DAOバリデータノードが先に侵害されたために可能になった。
Grim Finance
被害額:約3000万ドル
リエントランシー攻撃と言って、以前の預入金の処理が完了していないタイミングで、追加預金をシステムに送り込みFantomトークンを3000万ドルで放出し、プラットフォーム上にリエントランシーガードがないことを露呈させた。
スマートコントラクト監査会社であるSolidity Financeが監査を行なっていましたが、、このリエントランシーガードが有効であると誤って認識していた。
Meerkat Finance
被害額:約3100万ドル
正式サービス開始の1日後にハッカー攻撃を受け、ユーザー資金の損失として3,100万ドルの損害を被った。
特殊な内部権限を使用した スマートコントラクトのハッキングにより、73,000BNBコインと1400万ドルBUSDを盗み出した 。
Vee Finance
被害額:約3500万ドル
レバレッジ取引時のスリッページチェックの手法に重大な脆弱性を抱えていたため、スリッページチェックを回避し。システムに誤った取引を承認させることに成功し、異なる暗号トークンで合計3500万ドルの損失が発生した。
PancakeBunny
被害額:約4500万ドル
取引所における特定のトークンの為替レートを操作し、誤った価格での交換を行い約4500万ドルを盗んだ。
Compound
被害額:約1億5000万ドル
権限を超えてユーザーが特定のアドレスに多くのCOMPトークンを自動的に配布するアクションを実行させ8000万ドルの損失を出した。
その後修正をする際にシステムのガバナンス上提案には投票が必要であり、その投票を行なっている間に追加で6880万ドルが流出した。
スマートコントラクト監査を行なっている企業
この章ではスマートコントラクの監査をしている企業を紹介していきます。
Hacken
700を超えるプロジェクトの監査をしてきた企業です。
Ethereumだけでなく、Solana、Avalanche、Polygon、その他EVMチェーンもサポーしています。
監査だけでなくスマートコントラクトのセキュリティを守るための新製品を多数発表している。
Slowmist
https://www.slowmist.com/index.html
2018年に設立されたブロックチェーンセキュリティ企業です。
10年以上のネットワークセキュリティの経験を持つチームがスタートした会社です。
国内外の複数のセキュリティ機関と協力関係を結び、盗まれた資産の移動を監視するのに役立ちます。
過去に60社以上の顧客にサービスを提供し、盗まれた資産から約10億ドルを回収することに成功しています。
Solidproof
手動での監査だけでなく自動化されたアプローチを利用し脆弱性を特定します。
監査の他にもDeFiプロジェクトのKYCチェックを提供しています。
1年間で500件以上のスマートコントラクト監査を実施している。
Consensys Diligence
https://consensys.net/diligence/
経験豊富な監査人とセキュリティ分析ツールのサポートで、100を超えるプロジェクトの監査をしてきた企業です。
Uniswap、0x、Balancer、Aaveなど有名企業の監査も行ってきました。
OpenZeppelin
多くの人が使用しているSolidityのライブラリを提供している企業です。
100億ドル以上の資産を保護することに成功しています。
これまで、Aave、 Compaund、Coinbase、Ethereum Foundationなど、多くの注目すべきプロジェクトに携わってきています。
スマートコントラクト管理の自動化をサポートする「Defender」などのサービスも無料で提供している。
Bug Bountyプラットフォーム
この章では代表的な「Bug Bounty」プラットフォームについて紹介します。
Code4rena
初心者向けで初めて報酬をもらいたい方向けのプラットフォームです。
Sherlock
「Bug Bounty」だけでなく大手セキュリティ会社や独立したセキュリティ専門家による監査サービスも提供している。
「Code4rena」で何回かコンテストに参加したのちに参加するとレベル的にちょうど良い。
Immunefi
Synthetix、Chainlink、SushiSwap、PancakeSwap、Bancor、Cream Finance、Compound、Alchemix、Nexus Mutualなどのプロジェクトで、250億ドル以上の資金を守ってきている実績があります。
特定のチェーンに限らず、全てのチェーンとネットワークでブロックチェーンプロジェクトのバグバウンティを開催している。
「Sherlock」のコンテストに数回参加したのちに参加するとレベル的にちょうど良い。
スマートコントラクト監査人になる手順
スマートコントラクト監査人になるには学ぶべきことがたくさんあります。
簡単にですが以下の手順が参考になります。
手順
- Solidityの基礎学習
- Solidityのハッキングについて学ぶ
- ERC20、ERC721について学ぶ
- DeFiについて学ぶ
- 手を動かしながら実際にハッキングについて学ぶ
- 「Bug Bounty」に参加
ここら辺については今後まとめていきます…。
最後に
今回は「Bug Bounty」について1から説明してきました。
いかがだったでしょうか?
「Bug Bounty」への理解が深まっていると嬉しいです。
ぜひ一緒に「Bug Bounty」に参加していきましょう!
もし何か質問などがあれば以下のTwitterなどから連絡ください!
普段はSolidityやブロックチェーン、Web3についての情報発信をしています。
Twiiterでは気になった記事などを共有しているので、ぜひフォローしてくれると嬉しいです!
参考
https://cybersecurity-jp.com/column/27759
https://medium.com/immunefi/why-auditors-should-hunt-bugs-on-immunefi-5196b6d82552
https://ja.quantstamp.com/blog/what-is-a-smart-contract-audit
https://academy.binance.com/en/articles/what-is-a-smart-contract-security-audit