4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【夢なんてない】バグバウンティで報奨金を獲得するのに1年以上もかかった話

Posted at

先日、私が発見して報告したCVE-2025-10175が公開されました。(詳細はこちら)

その際、少額ではありますがWordFence様から$48の報奨金を獲得することが出来ました。夕飯は焼肉だ!

image.png

という訳で、今回は自分が報奨金を獲得するまでの体験を綴っていきたいと思います。セキュリティの勉強は多くしてきましたが、バグハントに関しては現在でもほぼ初心者であるため、似たような方がいれば参考にして欲しいと思います。

自己紹介

  • 19歳 情報系の大学に通っている大学2年生
  • 情報処理安全確保支援士試験 合格(登録セキスペには未登録)
  • Python Java HTML CSS PHPくらいならなんとかギリわかる

初投稿のブログを見れば分かる通り、私は資格マンで実際に手を動かした経験はほぼありません。PythonやPHPで低クオリティなアプリを作ったくらいで、コードリーディング力には自信が無いです...orz

バグハントを本格的に始めたのは大学生1年生の冬頃です。報奨金をいきなり目指すのは厳しいと思い、まずはバウンティ対象外のバグを見つけようと考えました。

HackerOneをはじめてみる

HackerOneは、企業や組織が自社のシステムやアプリケーションに存在するセキュリティ上の脆弱性を発見するために、世界中の「ホワイトハッカー(バグハンター)」に報奨金を支払うプラットフォームを提供しているオフェンシブセキュリティのグローバルリーダーです。(geminiより)

以下はVDP(報奨金対象外)の企業です。結構ありますね。Webアプリケーションだけではなく、ハードウェアやiOSアプリのプログラムもあります。

image.png

ですが、前述した通り私はiOSアプリのコードなんて見てもサッパリなので、ひとまず自分がギリ分かりそうなWebアプリケーションのバグを探してみました。

※ちゃんと企業ごとに定められたバグハントのルールがあります。一部ツールの使用禁止なんてものもあります。熟読してルールを守りましょう。

簡単な流れとして

  1. 気になったドメインに対してNmap
  2. 実際にサイトを触ってみて気になる機能を見つける
  3. BurpSuiteでリクエスト&レスポンスを傍受しながら脆弱性検証(ユーザが入力できるフォームや認証あたりに着目)

といった感じです。具体的なバグハントのやり方については他のブログを見てください。自分より数百倍も参考になります。

その結果、初投稿にもある通り、とあるサイトで反射型XSSを見つけることが出来ました。詳細は現在もトリアージ中なので話せませんが、大体見つけるまでに1ヵ月ほどかかりました。週1で1~2時間探すくらいのペースだったので、思ったより時間は掛からなかったです。

しかし、HackerOneでは報奨金を稼げなさそうということはなんとなく分かりました。稼げるのはミラクルを超越したマグレ or 一部のセキュリティ強者のみですし、バグの見つからない時間があまりにも虚無すぎて、少し心が折れてしまいました。

次に、私はOSSのバグを探す方向にシフトします。

OSSのバグを報告して人生初のCVE

ある日、OSSのバグを買い取ってくれるプラットフォームがあると知りました。OSSならブラックボックスであるWebアプリケーションと違ってホワイトボックスであるため、コードリーディング力は求められますが、確実性があります。また、Webサイトの脆弱性と違ってCVEも付与されるため、就活に使えそうだと思い、試しに報奨金のことは考えずに、怪しいOSSを探してみることにしました。

闇雲に探しても良いことは無さそうなので、Exploit DataBase内で以下の条件を元にOSSを絞りました。

  • CVEが過去に付与されていること(最低でも知名度はある)
  • 多くの脆弱性がそのOSSで発見されていること

ChatGPTに抽出をお願いした結果、いくつかの不審なOSSが提示されたため、まずはこれらを調査することにしました。

すると...思ったほか脆弱性が残っていることが分かりました。RCEといったクリティカルな脆弱性やSQLインジェクション、格納型XSSといった多くの脆弱性を発見し、報告することが出来ました。結果的に、CVEを数件取得することが出来ました。

本格的に報奨金を狙ってみる

冒頭にもあった通り、私が発見したのはWordPress Pluginの脆弱性です。

WordPress Pluginはこちらからソースコードがダウンロード可能であり、またローカルで検証することが比較的楽に出来ます。WordFence様がプラグインの脆弱性の報告を受け付けており、ある程度のインストール数&脆弱性の種類によっては数千~数百万の報奨金が貰えます。

以下は、インストール数が1000~4999であるプラグインで、無権限の攻撃者でも実行が可能なSQLインジェクションを発見した場合の報奨金です。こちらからシミュレーションできます。

image.png

このシミュレーション、すごい便利ですよね。自分は報奨金といっても一度に数百万とかではなく、数千、数万円でも十分に満足できる人間ですので、WordPress Pluginのバグ探しは自分の性に合っていました。

まずはDockerで(わざわざ勉強しました)WordPressやMySQL,Nginxを立ち上げてプラグインをダウンロードし、脆弱性を検証できる環境をKali Linux内で構築しました。インストール数が多いものは競争率が高いので、1000~5000ほどのプラグインを狙い目に以下のような流れで調査を行いました。

  1. プラグインにどのような機能があるのかを調べる
  2. Kali Linux内でプラグインが入ったファイルにSemgrepを行い、怪しいコードを抽出する
  3. 実際にそのコードを見て、誤検知 or ガチ か調べる
  4. ガチだった場合、挙動をローカルで検証

Semgrepは誤検知や見逃しも多いので、自分自身でもコードを見るのが大事です(超大事)

そして、遂に報奨金を獲得できて今に至ります。およそ1年掛かりました...

最後に言いたいこと

長くなりましたが、私が言いたい事は

バグハントはレッドオーシャン状態だということです。

なぜならそう、先ほどから当記事でもたびたび活用している生成AIくんが原因です。彼はとても優秀であり、私自身が発見した脆弱性を持ったプラグインのファイルをChatGPTに読み込ませた所、全然知らない脆弱性を見つけてきたんです。やばくないですか?

報奨金が高いバグ→セキュリティ強者やスーパー最強AIが見つけてくれる
報奨金が低い or 貰えないバグ→そのへんの生成AIで簡単に見つけられる

これからは大した知識がない人でも、生成AIを使えばある程度バグを見つけられてしまうため、更にバグハントの難易度は高くなりそうです...(生成AIを使わない場合)

また、現在は生成AIがセキュリティチェックなんかもしてくれますから、XSSやSQLiなどはリリース前からある程度淘汰されていそうな感じもします。

これからバグハントを始めたいという私のような初心者は、生成AIに丸投げするのが良いのかもしれませんね。

こんな長い記事なのに糞みたいな結論で申し訳ございません。読んでいただきありがとうございました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?