LLM エージェントに脆弱性を探させ、悪用まで試させる研究が、2024 年から 2026 年にかけて一気に増えました。この記事では、公開された論文・競技・企業の発表から「どこまでできるようになったか」を確かめ、防御側がパッチ適用の期限をどう決め直すべきかを、優先度付けの小さなコードと合わせて整理します。
攻撃の手順やプロンプトは扱いません。扱うのは研究の結果と、守る側の運用です。脅威レポート全体の読み解きは LLM で攻撃はどう変わったか:2026 年の脅威レポートから読む悪用の実態と防御側の優先順位 にまとめています。
公開研究でわかっている LLM エージェントの実力
| 時期 | 発表 | わかったこと |
|---|---|---|
| 2024 年 4 月 | Fang ら(arXiv:2404.08144) | 既知の脆弱性 15 件を対象に、CVE の説明を渡すと GPT-4 のエージェントが 87% を悪用できた。説明なしでは 7% |
| 2025 年 3 月 | CVE-Bench(arXiv:2503.17332) | 実在の Web アプリの重大な CVE 40 件で評価。概要では最良のエージェントでも成功は最大 13% |
| 2025 年 7 月 | Google Big Sleep | SQLite の脆弱性 CVE-2025-6965 を、悪用される前に見つけたと発表。3.50.2 で修正 |
| 2025 年 8 月 | DARPA AIxCC 決勝 | 脆弱性の発見から修正までを自動で行うシステムを競い、Team Atlanta が優勝、Trail of Bits が 2 位。決勝進出チームのシステムは公開される |
| 2026 年 2 月 | Anthropic(Claude Opus 4.6) | OSS で、これまで知られていなかった深刻度の高い脆弱性を 500 件以上見つけたと発表。人が確認したうえで報告し、一部は修正済み |
この表から読み取れることは 3 つあります。
「説明があれば悪用できる」は早くから示されていた
Fang らの結果は、公開された CVE の説明がエージェントにとって強い手がかりになることを示しています。言い換えると、脆弱性が公開された瞬間から、悪用を試すまでの手間が下がっています。防御側が「公開から悪用まで数週間はある」と見込む根拠は弱くなりました。
ただし、何でも自動で破れるわけではない
CVE-Bench のように実在のアプリで条件をそろえて測ると、成功率はまだ低い値にとどまります。同じ論文の中でも設定によって数字が変わっており、ベンチマークの成功率は評価条件込みで読む必要があります。
発見の速さは、防御側にも同じように効く
Big Sleep、AIxCC、Anthropic の発表は、いずれも防御側が使った例です。見つかる脆弱性が増えるということは、修正版の公開とパッチの数も増えるということです。適用する側の処理能力が追いつかなければ、「直っているのに当てていない」期間が長くなります。
公開から悪用までの時間はすでに数日単位
Google(Mandiant)の分析では、2023 年に悪用された脆弱性について、公開から悪用までの平均日数(Time-to-Exploit)は 5 日でした。2018〜2019 年の 63 日、2021〜2022 年の 32 日から大きく縮んでいます。同じ分析では、2023 年に悪用が確認された 138 件のうち、およそ 7 割がゼロデイ(修正版が出る前の悪用)でした。
この数字は LLM の影響だけを示すものではありません。ただ、エージェントが CVE の説明から悪用を試せる段階に来ていることと合わせると、月 1 回まとめてパッチを当てる運用では、外部に公開している機器は間に合わないと考えるのが自然です。
期限を「深刻度」ではなく「悪用の証拠」と「届くかどうか」で決める
CVSS の深刻度だけで期限を決めると、深刻度は高いが悪用されていない脆弱性に手が取られ、実際に悪用されている脆弱性が後回しになることがあります。公開されている判断材料として、次の 2 つが使えます。
- CISA KEV カタログ: 実際に悪用が確認された脆弱性の一覧です。米国連邦機関向けの指令 BOD 22-01 では、2021 年以降に CVE が付いたものは原則 2 週間以内の対応を求めています
- EPSS: FIRST が管理する指標で、今後 30 日以内に悪用が観測される確率を推定します。2025 年 3 月に第 4 版が公開されました
これに「インターネットから届くかどうか」を組み合わせると、期限の決め方は次のようになります。日数は例で、自組織の体制に合わせて決めてください。
| 条件 | 期限の例 | 考え方 |
|---|---|---|
| KEV 掲載かつ外部公開 | 2 日 | 悪用の証拠があり、攻撃者から直接届く |
| KEV 掲載(内部のみ) | 14 日 | BOD 22-01 の原則と同じ |
| EPSS 0.1 以上かつ外部公開 | 7 日 | 悪用の見込みが高く、届く |
| 外部公開 | 30 日 | 届くので、月次より遅らせない |
| その他 | 90 日 | 通常の更新サイクルで対応 |
パッチがまだないものは、期限までに「公開をやめる」「回避策を入れる」を行う、と決めておくのが要点です。ゼロデイの割合が高い以上、パッチ待ちのあいだも期限は進めます。
期限を自動で割り当てる最小例
検出した脆弱性に、上の表のルールで期限と対応を割り当てるコードです。KEV と EPSS の値は、実運用ではそれぞれの公開データから取り込みますが、ここでは検証のため固定値で与えています。CVE 番号は架空の値です。
実行環境は Python 3.13.16 で、標準ライブラリだけを使っています。
from dataclasses import dataclass
from datetime import date, timedelta
# 例として置いた社内ルール(日数は自組織で決める)
RULES = [
# (名前, 条件, 期限日数)
("KEV掲載・外部公開", lambda f: f.in_kev and f.internet_facing, 2),
("KEV掲載・内部", lambda f: f.in_kev, 14),
("EPSS高・外部公開", lambda f: f.epss >= 0.1 and f.internet_facing, 7),
("外部公開", lambda f: f.internet_facing, 30),
("その他", lambda f: True, 90),
]
@dataclass
class Finding:
cve: str
asset: str
published: date # 脆弱性の公開日
in_kev: bool # CISA KEV に載っているか
epss: float # EPSS スコア(0〜1)
internet_facing: bool
fix_available: bool
def triage(f: Finding, today: date) -> dict:
name, days = next((n, d) for n, cond, d in RULES if cond(f))
due = f.published + timedelta(days=days)
action = "パッチ適用" if f.fix_available else "公開停止・回避策"
return {
"cve": f.cve, "asset": f.asset, "rule": name, "due": due,
"action": action, "overdue": today > due,
}
findings = [
Finding("CVE-TEST-0001", "VPN 装置", date(2026, 10, 12), True, 0.92, True, True),
Finding("CVE-TEST-0002", "社内 Wiki", date(2026, 10, 1), True, 0.40, False, True),
Finding("CVE-TEST-0003", "顧客ポータル", date(2026, 10, 9), False, 0.15, True, False),
Finding("CVE-TEST-0004", "顧客ポータル", date(2026, 9, 20), False, 0.01, True, True),
Finding("CVE-TEST-0005", "経理端末", date(2026, 8, 1), False, 0.02, False, True),
]
today = date(2026, 10, 15)
results = sorted((triage(f, today) for f in findings), key=lambda r: r["due"])
for r in results:
mark = "期限切れ" if r["overdue"] else "-"
print(" | ".join([str(r["due"]), r["cve"], r["asset"], r["rule"], r["action"], mark]))
実行結果です。
2026-10-14 | CVE-TEST-0001 | VPN 装置 | KEV掲載・外部公開 | パッチ適用 | 期限切れ
2026-10-15 | CVE-TEST-0002 | 社内 Wiki | KEV掲載・内部 | パッチ適用 | -
2026-10-16 | CVE-TEST-0003 | 顧客ポータル | EPSS高・外部公開 | 公開停止・回避策 | -
2026-10-20 | CVE-TEST-0004 | 顧客ポータル | 外部公開 | パッチ適用 | -
2026-10-30 | CVE-TEST-0005 | 経理端末 | その他 | パッチ適用 | -
ルールは上から順に評価し、最初に当てはまったものを使います。同じ「顧客ポータル」でも、EPSS の高い CVE-TEST-0003 は 7 日、低い CVE-TEST-0004 は 30 日になります。CVE-TEST-0003 はパッチがないので、対応は公開停止か回避策になります。
期限の起点を公開日にしている点にも意味があります。検出した日を起点にすると、スキャンの間隔がそのまま猶予になってしまいます。KEV への追加日を起点にする運用もありますが、どちらにしても「自分たちが気づいた日」ではなく外部の日付で数えるようにします。
期限を守れる体制にするために
期限を短くするだけでは、守れない期限が増えるだけです。合わせて見直したいのは次の点です。
資産の台帳と「外部公開」の判定を自動化する
上のコードの internet_facing が手作業の判定だと、そこで漏れます。攻撃側のエージェントは公開資産を短時間で調べ尽くすので、外から見える資産を定期的に自分で調べ、台帳と突き合わせます。
管理画面や VPN 装置は、パッチより先に「届かない」構成にする
外部公開の行の期限が最も厳しいのは、届くからです。管理インターフェースをインターネットから切り離せば、その機器は表の下の行に移り、未知の脆弱性に対しても時間を稼げます。
防御側も LLM エージェントで探す
AIxCC の決勝システムは公開が進んでおり、Trail of Bits の Buttercup は GitHub で公開されています。自社のコードや依存ライブラリを、攻撃者より先に同じ種類の道具で調べられる時代になっています。ただし、見つかった候補は人が再現・確認してから扱います。Anthropic の発表でも、報告前に人が検証したとしています。
参考
- Fang et al., LLM Agents can Autonomously Exploit One-day Vulnerabilities(arXiv:2404.08144)
- Zhu et al., CVE-Bench: A Benchmark for AI Agents' Ability to Exploit Real-World Web Application Vulnerabilities(arXiv:2503.17332)
- SecurityWeek: Google Says AI Agent Thwarted Exploitation of Critical Vulnerability(2025-07-16)
- Wiz Vulnerability Database: CVE-2025-6965
- DARPA: AI Cyber Challenge marks pivotal inflection point for cyber defense(2025-08-08)
- SoK: DARPA's AI Cyber Challenge (AIxCC)(arXiv:2602.07666)
- Trail of Bits: Buttercup
- The Hacker News: Claude Opus 4.6 Finds 500+ High-Severity Flaws(2026-02)
- SC Media: Anthropic's latest Claude model finds more than 500 vulnerabilities
- Google Cloud: How Low Can You Go? An Analysis of 2023 Time-to-Exploit Trends(2024-10-15)
- CISA: BOD 22-01 Reducing the Significant Risk of Known Exploited Vulnerabilities
- Empirical Security: Introducing EPSS Version 4