はじめに
私自身本業はシステムエンジニアをしている
世の中色々な技術があり、今だとAIだったりAWSを触って当たり前な風潮であるが、何事もセキュアでなくてはどんなにいいシステムを作っても使ってすらもらえない
そこで攻撃者の視点を養うために1年前からCTFを始め、そこそこ実力もついてきたのでバグバウンティに挑戦した。
そもそもバグバウンティってなんぞや
バグバウンティ(以下バグハンと呼称)とは、企業が自社のWebサービスやソフトウェアのセキュリティ脆弱性を、外部のホワイトハッカーや研究者が発見・報告した場合に、報奨金(懸賞金)を支払う制度です。
ざっくり言えば許可された範囲でペンテストして「脆弱性見つけて報告してくれたらお金出すけど早い者勝ちよ。」ってこと。
CTFとバグハンをやってみて感じた違い
どちらも経験してみて感じたのは調査フロー自体似ているけどゴールの方向性が違うと言うこと。
CTFはシステムやサーバーの脆弱性を見つけ出して侵入し、root(フラグ)を取得することがゴールで、バグハンに関しては脆弱性を見つけて、その脆弱性がシステムにどのような影響や損害を与えるのかを報告して企業を納得させることがゴールです。
以下にCTFとバグハンの違いを表でまとめる。
| 項目 | CTF | バグハン |
|---|---|---|
| ゴール | Flagを取得すること | ビジネスへのリスクを証明すること |
| ターゲット | 限定的(与えられた環境) | 広大(全世界から探す) |
| 正解の有無 | 必ず1つ以上の正解がある | 正解があるとは限らない |
| 脆弱性の質 | 既知のパターンが多い | 「設定の矛盾」や「層の不整合」が狙い目 |
| 評価されること | 解くスピード、正確さ | 論理的な説明、報告の誠実さ |
同じセキュリティというジャンルなのにここまで違うのはある意味驚きだ。
実際にバグハントして感じたこと
はっきり一言言わせてもらえるのであればめっちゃむずかしいなと感じた。
スコープ解釈やノイズとの戦いなど難しい場面は様々あったが、中でもレポート作成が一番難しい。
結局どんな脆弱性を見つけてもそれを誰がみても分かりやすく再現性のあるレポートを作成する必要があり、サービスによっては海外なのでレポートを英語で書く必要があり、技術力ではなく説得力の勝負になる。
私が使っているバグハンサービスは
- HackerOne
- BugCrowd
を使っているためもっぱらレポートは英語で書く必要がある
また案件によってはAIを使用したレポート作成はNGなものもあり、羞恥心無視して中学の頃の教科書を引っ張り出して常に英語の勉強をしている。
そんな苦労してまでバグハンをやる理由
それは実際の企業に対して自分の思考や技術をルールの範囲内で試せ、それを言語化して立証できるところだ。
CTFをやっていると脆弱性を見つけてrootを取るところまでは誰しもできるが、そこからWriteUpを書こうとすると手が止まることが大半だ。
それでは再現性がないし理解しきれていないと私は思う。
さらに言語化をするというのを習慣にできれば本業でも複雑なシステムを説明する機会が訪れてもそこまで難しく感じることなく言語化できてしまう。
デメリットよりも得られるものの方が大きいと感じている。
# おわりに
CTFとバグバウンティは似ているようで、実際に取り組んでみると「解く力」と「伝える力」という別のスキルセットが求められることが分かった。
特にバグバウンティは、脆弱性を見つけるだけでは終わらず、それがビジネスにどう影響するのかを他者に理解させる必要がある点で、非常に実務寄りの世界だと感じている。
その分難易度は高いが、自分の技術や思考が現実のプロダクトに対してどこまで通用するのかを試せる、かなり貴重な場でもある。
今後は単に脆弱性を探すだけでなく、「なぜそれが問題なのか」「どう悪用されるのか」「どう防ぐべきか」まで含めて一貫して説明できる力を伸ばしていきたい。
セキュリティは派手な分野に見えるが、実際は地道な観察力と論理の積み重ねだと改めて感じた。
引き続き、実務と並行しながらこの領域は深掘りしていきたいと思う。