- ブラウザURL入力
- DNS名前→IP
- ルータ経路選択
- ロードバランサ振り分け
- Nginx受け口
- アプリ処理今ここ
- DB保存
このコースの入口です。個々の項目に入る前に、一覧そのものが何を数えたものかを読む習慣を作ります。
まず結論
「OWASP Top 10」と呼ばれる一覧は Web 以外にも十数本あり、同じ「10」でも数えたものが違います。Web 2025 は弱点を持つアプリの割合、API 2023 はチームの合意、LLM 2026 は投票と事故記録、Proactive Controls は「やること」を並べています。
番号を読む前に、何を数えた一覧か、どの版か、まだ更新されているかを確かめます。版・日付・archived は手元の git と curl で確かめられ、何を数えたかは原文を読んで確かめます。
Web 2025・API 2023・LLM 2026 の3つの Top 10 は、順位の元になったものについて何が言えるでしょうか。
当てることが目的ではありません。外した予測ほど記憶に残るので、直感で選んでください。
同じ「10」でも、数えたものが違う
「OWASP Top 10」と言えば Web アプリの一覧を指すことが多いですが、OWASP の GitHub で名前に top を含むリポジトリを検索すると48件見つかりました(2026-09-28。一覧の本数ではなく、本体とページ用が別のリポジトリになっているものも含む)。API・LLM・モバイル・CI/CD・Kubernetes と、一覧は十数本あります。
並べ方の元になったものは一覧ごとに違います。
- Web 2025: 提供データで数えた単位は
the number of applications with at least one instance of a CWE found in testing。見つかった件数ではなく、弱点を1つ以上持つアプリの割合です。これにコミュニティ調査を加えますが、導入文には「データで12カテゴリを順位づけし、2つを調査で引き上げた」(L48)と「10のうち8つをデータから、2つを調査から」(L79)の2通りの書き方があります。 - API 2023:
Unfortunately, no data was contributed。発生頻度はprevalence results from a consensus among the team membersです。 - LLM 2026:
The community vote carries three-quarters of the weight. The incident data covers the remaining quarter. - Proactive Controls v4(2024): 危険ではなくやることの一覧で、
ordered by order of importanceです。 - Kubernetes 2025:
In the future we hope for this to be backed by data。今はデータに基づいていません。
順位が合意で決まる面と、Top 10 が網羅を主張しないことは第15期で扱います。本回は一覧ごとの違いを見ます。
- ・Kubernetes 2025 は README が「将来はデータで裏付けたい」と書く
主な一覧の棚卸し(2026-09-28 時点)
保存した原文と git 履歴から作った表です。日付の列は「何を公開日としたか」が一覧ごとに違うので、何の日付かを添えました。
一覧 版 日付(何の日付か) 数えたものWeb 2025 RC 2025-11-06(文書の自己申告) 弱点を持つアプリの割合 + 調査RC 表示除去 2025-12-24API Security 2023 タグ v2.2.0 2023-06-05 公募データ0件 → チームの合意LLM Apps 2026 ページ公開 2026-08-04 投票 3/4 + 事故記録 1/4Agentic Apps 2026 ページ表示 2025-12-09 専門家の寄稿とレビューMobile 2024 方法論の表 Initial 2023-08-02 事故報告・脆弱性DB・評価など方法論の表 Final 2024-01-22CI/CD v1.0 ロードマップ欄 2022-10 数百の CI/CD 環境の分析などindex 最終変更 2023-02-22(本文に版年なし)Kubernetes 2025 draft 表記除去 2026-03-18 データなし(final 表明なし)Proactive v4 2024 やること(重要度順)
API は合意、LLM は投票、Kubernetes はデータなし。Agentic と Mobile は、保存した文書に票や件数が見つかりませんでした。Mobile は方法論で using a data-based approach と名乗りますが、数値は載っていません。集計の数値を示して順位の元にしているのは、この表では Web だけです。それも件数ではなく割合で、調査で選んだ枠を含みます。
止まった一覧もあります。
一覧 最後の版 最後の変更 archivedServerless 2018 解釈版(S1:2017…) 2020-07-27(本体の最終コミット) falsePrivacy v2.0(2021) 2022-05-30(index.md) trueCloud-Native 暫定リスト(2021-07) 2024-01-31(index.md) true
Serverless は archived ではないのに、Web 2017 の読み替え(S1:2017)のまま止まっています。
Kubernetes Top 10 2025 について、保存した README・index から言えることはどれですか。
生きているかは、1つの信号では決まらない
「この一覧はまだ生きているか」を判断するのに、本回が使ったのは3つの信号だけです。GitHub の archived の値、本文ファイルの最終変更日、本文に書かれた状態の表記。owasp.org のプロジェクトページにある状態の表示は見ていません。
3つはよく食い違います。
- Serverless は archived が false でも、本体の最終コミットは 2020-07-27。
- LLM の旧リポジトリは archived が false のまま、本文で
historical archiveと名乗り、開発を GenAI Security Project 側へ移したと書きます。 - Cloud-Native は archived が true でも、本文は
very much aliveと書きます。
リポジトリの最新コミット(HEAD)の日付も当てになりません。 依存更新やメタデータ追加など、本文以外のコミットで新しくなるからです。CI/CD は HEAD が 2025-11 でも、index.md の最終変更は 2023-02-22 でした。見るのは本文ファイルの変更日です。
archived が付いていても本文は clone して読めました。archived は本文の正誤を表しません。
手元で3つの信号を取る
macOS 26.5.2・git 2.50.1・curl 8.7.1、2026-09-28 10:17〜10:20 UTC に実行しました。リポジトリは git clone --filter=blob:none で取得、外部への要求はすべて未認証です。
$ (cd repos/Top10 && git log -1 --format=%ad --date=iso -- 2025/docs/en/0x00_2025-Introduction.md)2025-12-24 16:17:29 -0500$ (cd repos/Top10 && git log -1 --format=%ad --date=iso -- 2021/docs/en/0x00_2021-Introduction.md)$ (cd repos/API-Security && git log -1 --format=%ad --date=iso -- editions/2023/en/0x00-header.md)2023-06-05 14:21:06 +0100$ (cd repos/www-project-cloud-native-application-security-top-10 && git log -1 --format=%ad --date=iso -- index.md)2024-01-31 18:11:21 +0200$ (cd repos/www-project-top-10-ci-cd-security-risks && git log -1 --format=%ad --date=iso -- index.md)2023-02-22 10:39:45 +0200$ (cd repos/www-project-kubernetes-top-ten && git log -1 --format=%ad --date=iso -- README.md)2026-03-24 01:43:41 +0330
2つめのコマンド(2021 の導入文)は何も出していません。実際のファイル名は 0x00_2021-introduction.md(小文字の i)で、存在しないパスを渡すと git はエラーを出さずに正常終了します。出力が空なら、まずパスを疑います。
次は owasp.org の URL を curl で追った結果です。
https://owasp.org/Top10/2025/ run1 200 3 https://top10.owasp.org/2025/ 26117https://owasp.org/Top10/ run1 200 2 https://top10.owasp.org/ 326https://owasp.org/www-project-top-ten/ run1 200 2 https://owasp.org/projects/top-ten 91980https://owasp.org/www-project-api-security/ run1 404 2 https://owasp.org/projects/api-security 16504
owasp.org/Top10/ は 200 でも 326 バイトで、中身は meta refresh で 2025 版へ送るだけのページでした。curl は meta refresh を追いません。www-project-api-security/ は転送された先が 404 です(run2 では本文量が 16461 に揺れた)。200 は本文があることの証明ではなく、404 はその一覧が無いことの証明でもありません。 API の正本へは owasp.org/API-Security/ から転送されました。
Cloud-Native の index.md は「very much alive」と書き、GitHub API は `"archived": true` を返しました。扱いとして適切なのはどれですか。
Web 2025(RC から現行版へ)
導入文の履歴に RC 表示の除去が残っています。同じ 2025-12-24 に、owasp.org のページの元になるリポジトリにも現行版は 2025 という文言が入りました。final を宣言するコミットは無く、この2点から現行版と読みます。
cd2d585 2025-12-24 16:17:29 -0500 Removed RCd4d000e 2025-12-24 15:24:03 -0500 Remove RC notice6565ca1 2025-12-24 10:58:21 -0500 Fix Probely supporter typo2a2effd 2025-12-13 20:23:36 +0100 Fix #847: Rename A09 to 'Security Logging & Alerting Failures' Rename A09 from 'Logging & Alerting Failures' to 'Security Logging & Alerting Failures' and update all dependencies. INFO: Without redirects, as it is still a release candidate.160f841 2025-12-07 11:05:39 -0500 Reorganize 2021 and 2025 versions with backward-compatible redirects
Cloud-Native(本文は生きていると書く)
本文は生きていると書き、同じ文で最終更新を April 2022 としています。index.md の最終変更は 2024-01-31、GitHub の値は archived です。本文の表記とフラグが逆を向いています。
本文の表記 **Important Note:** This project is **very much alive**, and was last updates in April 2022.本文の変更 git log -1 -- index.md → 2024-01-31 18:11:21 +0200GitHub の値 "archived": true,
片方は履歴から現行版と読め、片方は信号が食い違いました。2つに共通する読み方は何でしょうか。
「生きている」「現行版」と書くとき、自分がどの信号を見たかを数えてみてください。
この章のまとめ
- 「Top 10」は十数本あり、数えたものが違う。Web 2025 はアプリの割合と調査、API 2023 は合意、LLM 2026 は投票 3/4 と事故記録 1/4、Proactive はやること、Kubernetes 2025 はデータなし。
- 番号は版を付けて読む(A03:2025、LLM08:2026)。版が変わると同じ番号が別の項目を指す。
- 更新の間隔は一覧ごとに違う。Serverless は 2018 の解釈版で止まり、CI/CD は本文(index・各項目)に版の年を書かない(ロードマップ欄には v1.0・2022年10月とある)。
- 生死は archived・本文ファイルの最終変更・本文の表記を並べて読む。本回は owasp.org の状態表示を見ていない。
- 空の出力、200 のスタブ、404 は、どれも「無い」「ある」の証明にならない。
自分の現場で確かめる
読んだだけでは身につきません。手元の環境で実際に見てみてください。
理解度チェック
読んだ直後は「分かった」と感じやすいものです。実際に解いて確かめてください。
`owasp.org/Top10/` を curl で取ると 200 で本文は 326 バイトでした。何が起きていますか。
用語集(3語)
- RC(Release Candidate)
- 公開前の候補版。Web 2025 は文書自身が RC を 2025年11月6日に公開したと書き、2025-12-24 のコミットでその表記を消した。
- archived
- GitHub のリポジトリに付く状態の値。API の応答では `"archived": true` のように出る。本文が正しいかどうかは表さない。
- 版つきの番号
- A03:2025、LLM08:2026 のように番号に版の年を付けた書き方。版が変わると同じ番号が別の項目を指すため、本コースは常にこの形で引く。
出典(一次ソース)
- OWASP Top 10:2025 Introduction(OWASP/Top10 @3a31f35、取得 2026-09-28) ↗
- OWASP Top Ten プロジェクトページ(owasp.org/projects/top-ten、取得 2026-09-28) ↗
- OWASP API Security Top 10 2023 — Release Notes / API Security Risks(OWASP/API-Security @33cea37、取得 2026-09-28) ↗
- OWASP GenAI LLM Top 10 2026 — LLM00 Preface(GenAI-Security-Project/GenAI-LLM-Top10 @9253e38、取得 2026-09-28) ↗
- OWASP Top 10 for Agentic Applications 2026(genai.owasp.org、Version 2026 December 2025、取得 2026-09-28) ↗
- OWASP API Security Top 10 2023 — Release Notes(OWASP/API-Security @33cea37、取得 2026-09-28) ↗
- OWASP Mobile Top 10 2024 — Methodology(@f2dc2d6、取得 2026-09-28) ↗
- OWASP Top 10 CI/CD Security Risks roadmap(@74b2c79、取得 2026-09-28) ↗
- OWASP Top 10 for LLM Applications 旧リポジトリ index(@99f4395、取得 2026-09-28) ↗
- OWASP Top 10 Privacy Risks index(@3b6bde4、取得 2026-09-28) ↗
- OWASP Mobile Top 10 index(@f2dc2d6、取得 2026-09-28) ↗
- OWASP Top 10 CI/CD Security Risks index(@74b2c79、取得 2026-09-28) ↗
- OWASP Kubernetes Top Ten README(@828cfa2、取得 2026-09-28) ↗
- OWASP Proactive Controls README(@4f5cb10、取得 2026-09-28) ↗
- OWASP Serverless Top 10 Project README(@760c497、取得 2026-09-28) ↗
- OWASP Cloud-Native Application Security Top 10 index(@1ff39ab、取得 2026-09-28) ↗