Dev Study
← OWASP Top 10 の群 — 何のリストで、どう作られ、どう読むか
レッスン 6 / 12·約 8 分·第27期 OWASP Top 10 の群

起きた記録は、防がれた分を数えない — LLM 2026 の投票と事故記録

リクエストがアプリケーションに届くまで
  1. ブラウザURL入力
  2. DNS名前→IP
  3. ルータ経路選択
  4. ロードバランサ振り分け
  5. Nginx受け口
  6. アプリ処理今ここ
  7. DB保存

同じ「Top 10」でも数えたものが違います。今回は、投票と事故記録を混ぜた一覧で、2つの数え方の差が順位にどう出るかを読みます。

まず結論

OWASP Top 10 for LLM Applications 2026 は、実務者の投票に重み 3/4、事故記録に重み 1/4 を置いて並べた一覧です。序文は、それ以前の版を「判断(judgment)で作った」と呼んでいます。

プロンプトインジェクションは、事故記録だけで並べ直すと10位にも入らないのに、公表順位は1位です。序文はこの差を defense effect(防御の効果)と解釈します。起きて公開された記録は、防がれた分を数えていません。

? 読む前に予測

OWASP Top 10 for LLM Applications 2026 の順位は、何をどう組み合わせて決めたと序文に書かれているでしょうか。

当てることが目的ではありません。外した予測ほど記憶に残るので、直感で選んでください。

抽象原理

この一覧は、何をどう数えたか

OWASP Top 10 for LLM Applications 2026 は、2026年8月4日に公開されました(リポジトリの README と CITATION の日付)。序文はまず過去の版をこう振り返ります。

Every version of this list before now was built on judgment. Hundreds of practitioners weighed in on what matters most. That vote is still the spine of the list, and it belongs there.

2025 版の序文も、自分の作り方を brainstorming sessions, voting, and real-world feedback と書いています。2026 版は、この投票に事故記録を足しました。

We pulled together a corpus of 7,714 real incidents from public vulnerability databases and an AI-harm database, and we built classifiers that read them and placed the 6,639 that carried enough detail to sort.

この一覧が数えたものは2つです。 1つは実務者の投票で、何を危険と見ているかを表します。もう1つは、公開の脆弱性データベース(複数)と AI 被害データベース(1つ)から集めた記録のうち、分類できた 6,639 件です(収集 7,714 件の約86%)。重みは投票 3/4、記録 1/4 です。公開されている数値は全体の件数と重みだけで、項目ごとの票数・件数・投票者数は載っていません(確認範囲: リポジトリ HEAD 9253e38 の全ファイルと、取得した公開ページ)。3/4 と 1/4 を順位へどう掛けたかの式も、同じ範囲には見当たりません。

LLM Top 10 2026 が混ぜた2つの数え方(序文 L5・L13 より)
実務者の投票何を危険と見ているか
公開の事故記録7,714 件を集め 6,639 件を分類
重み 3/4 と 1/4(掛け方の式は公開物に見当たらない)
LLM01:2026 〜 LLM10:2026序文: That balance decided every final slot
  • ・投票は一覧の背骨(the spine)。記録は1段動かす力はあるが、単独で書き換える力はないと序文は書く
  • ・項目ごとの票数と件数は、確認した範囲には無い
具体実物

番号はどう動いたか — 2025 と 2026 の対応表

2025 版と 2026 版の各項目ファイルから ## LLMnn:YYYY 名前 の見出しを読み、名前で結合するスクリプトを書きました。改名1件だけは、序文の文 What used to be System Prompt Leakage is now Hidden Context Exposure を正規表現で読んで対応させています。環境は macOS 26.5.2 arm64、Python 3.14.6、git 2.50.1、リポジトリ GenAI-LLM-Top10 の HEAD 9253e38 です。

$ python3 renumber.py <repo> (抜粋: 冒頭の date/host/python/git 行、NO HEADING 行2つ、repo HEAD と件数の行を省略)コマンド出力
alias from preface: {'System Prompt Leakage': 'Hidden Context Exposure'}
 
2025 2026 move name(2025) -> name(2026)
LLM01 LLM01 same Prompt Injection
LLM02 LLM02 same Sensitive Information Disclosure
LLM03 LLM04 -1 Supply Chain
LLM04 LLM05 -1 Data and Model Poisoning
LLM05 LLM10 -5 Improper Output Handling
LLM06 LLM03 +3 Excessive Agency
LLM07 LLM08 -1 System Prompt Leakage -> Hidden Context Exposure
LLM08 LLM09 -1 Vector and Embedding Weaknesses
LLM09 LLM07 +2 Misinformation
LLM10 LLM06 +4 Unbounded Consumption
 
2026 entries with no 2025 origin: none
is the 2025->2026 map a permutation of 1..10: True
LLM06:2025 -> LLM03:2026

1位と2位は同じで、Prompt Injection は2版とも LLM01 です。LLM06:2025 Excessive Agency は LLM03:2026 に上がり、2026 の LLM06 は Unbounded Consumption です。版のない「LLM06」は、どちらの項目を指すのか決まりません。エージェントの権限(LLM06:2025、2026 では LLM03)は第20期で扱います。2026 に 2025 に無かった項目は無く(none)、序文は新しい候補のいくつかを既存の項目に吸収したと書いています。

✓ ここまでの確認

序文によると、プロンプトインジェクションは事故記録だけで並べ直すと10位に入りません。一覧はこれをどう扱いましたか。

抽象原理

記録に少ない項目は、危険が小さいのか

序文は、投票と記録が食い違った項目をはっきり挙げます。

Prompt injection is the clearest case. Practitioners rank it the number one risk. Rank the categories by the raw incident record instead, and it falls out of the top 10 entirely. That gap is a defense effect. Teams fight injection hard, so fewer clean exploits reach a public database, and the public count understates the risk that mature teams already spend real money holding off.

「10位外」は、事故記録だけで並べ直したらという仮定の順位です。公表された順位は1位のままです(It stays at number one.)。

一般化すると、事故記録は「起きて、公開 DB に届くほど詳しく書かれたもの」を数えています。防御に止められた攻撃は、その数に入りません。よく防がれている危険ほど、記録の上では小さく見えることがあります。 ただしこれは序文の解釈で、止められた件数を実際に数えた結果ではありません。序文が 1/4 に抑えた理由も同じ向きです。1年分のノイズの多いデータに、実務者の判断を覆させない(one noisy year of data does not get to overturn the judgment)という説明です。

具体実物

逆向きの項目 — Misinformation と、重みの模型

Misinformation は逆向きに食い違いました。Voters placed it near the bottom. The incident record placed it near the top とあり、結果は The list still seats Misinformation in the middle: the vote holds the greater weight, but the evidence pulled it up. です。対応表では LLM09:2025 から LLM07:2026 へ動いています。

3/4 と 1/4 の効き方を、架空の値で試す模型にしました。公式の計算式ではなく、3項目の点数(0〜1)も作った値です。

模型: 合成 = 0.75 × 投票 + 0.25 × 記録(架空の値。python3 で計算)表
項目 投票 記録 合成
A 0.9 0.0 0.675
B 0.3 0.9 0.45
C 0.4 0.2 0.35
 
投票だけの順: A > C > B
記録だけの順: B > C > A
合成の順: A > B > C

A は記録が 0 でも首位に残り、B は C を1つ抜きます。序文の A quarter weight is enough to move an entry a tier when the gap between belief and evidence runs wide. It is not enough to let imperfect data rewrite the list on its own. と同じ形ですが、これは模型が形を真似ただけです。実際に何段動いたかを、この表から言うことはできません。

✓ ここまでの確認

Misinformation は投票では下位、事故記録では上位でした。2026 版の一覧ではどこに置かれましたか。

⇄ 2つを見比べる
具体例 A

Prompt Injection(LLM01:2026)

投票では1位、記録だけで並べ直すと10位外。序文は、防御に力を入れているので公開される成功例が減ったと解釈し、1位に置きました。記録の少なさは、防がれた分が数えられていない可能性として読まれています。

具体例 B

Misinformation(LLM07:2026)

投票では下位、記録では上位。序文は、投票が低く証拠が高いこの向きの差を、実害につながる向きだと書きます。投票の重みが大きいものの記録が引き上げ、中ほどに置かれました。

2つの項目は、投票と記録の食い違いが逆向きです。それでも共通して言えることは何でしょうか。

どちらの場合も、一方の数え方だけで並べていたら何が起きたかを考えてください。

この章のまとめ

  • LLM Top 10 2026 は 投票 3/4 + 事故記録 1/4。記録は 7,714 件を集め 6,639 件を分類。序文は投票を背骨と呼ぶ。
  • 公開された数値は全体の件数と重みだけ。項目ごとの票数・件数は確認した範囲に無い。
  • Prompt Injection は、記録だけで並べ直すと10位外だが、公表順位は1位。序文はこの差を defense effect と解釈する。
  • Misinformation は逆向きで、投票は下位・記録は上位。結果は中ほど(LLM07:2026)。
  • 番号は大きく動いた。LLM06:2025 = LLM03:2026。番号を引くときは版を付ける。
  • LLM01 は番号が同じでも、定義の主語が user prompts からモデルへの入力全般に広がった。

自分の現場で確かめる

読んだだけでは身につきません。手元の環境で実際に見てみてください。

理解度チェック

読んだ直後は「分かった」と感じやすいものです。実際に解いて確かめてください。

問題 1 / 3正解: 0

LLM06:2025 Excessive Agency は、2026 版ではどの番号ですか。

用語集(3語)
OWASP Top 10 for LLM Applications 2026
LLM を部品として組み込んだアプリの危険を並べた一覧。2026年8月4日公開(README と CITATION による。公開ページの表示日は August 3, 2026)。2025 版とは番号が違うため、「LLM03:2026」のように版を付けて引く。
defense effect
2026 版の序文の語。防御に力を入れている危険ほど、公開 DB に届く攻撃の成功例が減り、公開の件数が危険を小さく見せる、という解釈。
Hidden Context Exposure
LLM08:2026。序文は、2025 版の System Prompt Leakage(LLM07:2025)がこの名前になったと書く。