Hello there, ('ω')ノ
はじめに
最近よく見かけるようになった質問があります。
「ChatGPTを使えばバグバウンティって簡単になるんですか?」
「URLを投げれば脆弱性を教えてくれますか?」
結論から言います。
LLMは、何もないところから脆弱性を見つけてはくれません。
しかし一方で、 使い方を間違えなければ、ハッカーの思考を何倍にも加速させる強力な武器になります。
今回は 「Context Augmentation(文脈拡張)」という考え方を軸に、 なぜLLMはそのままでは使えず、どう使えば“相棒”になるのか を、バグバウンティ初心者でも理解できるように解説します。
大前提:LLMに“観察”はできない
まず、最も重要な事実から。
LLM(ChatGPTなど)は、
- Webサイトを操作できない
- レスポンスの変化を見られない
- 失敗から学習できない
つまり、
「試す → 失敗する → 気づく」というハッカーの核心行動ができません。
だから、 「このサイトにXSSある?」 「このURL怪しくない?」 と聞いても、返ってくるのは 推測の寄せ集め になります。
これはLLMが悪いのではなく、役割が違うだけです。
ハッカーが最初にやっていることは“地味”
では実際のハッカーは何をしているのか。
答えは驚くほどシンプルです。
- 入力欄に文字を入れる
- HTMLを入れる
- JavaScriptを書いてみる
- 送信する
- 結果を見る
これだけです。
重要なのは 「成功したか」ではなく「何が起きたか」。
- scriptタグは消えた
- onerror属性は削除された
- formタグは残った
この 事実の積み重ね が、すべて次の一手の材料になります。
Context Augmentation とは何か
ここで登場するのが Context Augmentation です。
難しく聞こえますが、意味は単純。
「自分が観察した事実を、そのままLLMに渡す」
ダメな使い方
- 「XSSありますか?」
- 「このコード安全ですか?」
→ 情報が少なすぎて、LLMは妄想するしかありません。
良い使い方
- scriptタグは削除された
- イベント属性は除去される
- しかし特定のタグはDOMに残る
こうした 生の観察結果 を渡します。
LLMに“正解”を聞いてはいけない
記事の中で一貫している姿勢があります。
それは、
LLMに「答え」を求めていない
代わりに聞いているのは、
- この挙動から考えられる攻撃パターンは?
- どんな回避手法があり得る?
つまり 可能性を“広げる”ために使っている のです。
人間がやる仕事、LLMがやる仕事
ここで役割分担を整理します。
人間の仕事
- サイトを触る
- 変化を観察する
- 成功/失敗を判断する
LLMの仕事
- 観察結果を整理する
- 既存の攻撃手法と照合する
- 次に試せる選択肢を増やす
LLMは「考える主体」ではなく「思考の補助輪」
この認識がないと、必ず行き詰まります。
なぜDOM Clobberingのような発想に辿り着けるのか
たとえば、
- 属性だけが消える
- タグ自体は残る
という観察があった場合、人間はこう考えます。
「属性チェックに依存したフィルターかもしれない」
この 仮説 をLLMに渡すことで、
- DOM Clobbering
- 名前衝突
- 内部参照の破壊
といった 攻撃アイデアの候補 が返ってきます。
そこから 一番試すコストが低いもの 失敗しても情報が増えるもの を選んで、人間が試す。
このループが回り始めたとき、 LLMは初めて“使える存在”になります。
ここから学ぶ最大の教訓
最後に、ここで教えてくれる本質をまとめます。
LLM時代でも、ハッカーの仕事は変わっていない
- 観察する
- 仮説を立てる
- 試す
- 結果を見る
- 調整する
変わったのは、 仮説を広げるスピードだけ です。
おわりに
LLMは魔法ではありません。 しかし、正しく使えば、
- 思考の幅が広がり
- 見落としが減り
- 学習速度が上がる
最高の相棒になります。
大切なのは、
「考えさせる前に、自分がちゃんと見ること」
この姿勢を身につけたとき、 Context Augmentation は バグバウンティスキルを確実に一段引き上げてくれます。
Best regards, (^^ゞ