自衛のためのサイバー攻撃の仕組み講座(AI時代・エンジニア水準)
区分3 Webサイトとサーバーを狙う攻撃★★★OWASP(オワスプ)は、Webの安全を高めるための非営利の団体です。 Top 10 は、その団体が数年おきに出している「よく起きる弱点の10分類」です。最新は2025年版で、No.07 で見た入力の話も、この10分類の一部に入っています。
地図と同じで、すべての道は載っていません。 でも「どの地域で事故が多いか」が分かるので、点検の順番を決めるときに使えます。
10個すべてを同じ深さで覚える必要はありません。 この表は、自分のサイトを点検するときに「どの引き出しを開けるか」を決める道具です。 順位は、見つかった頻度と深刻さを元にした目安で、あなたのサイトで1位が一番危ないとは限りません。
2025年版では、前回(2021年版)から次の変更がありました。
自分で書いたコードよりも、「そもそも誰に見せるか」「どう設定するか」の問題です。小さな会社のサイトで、一番起きやすい所でもあります。
1位です。「ログインした人に、見せてはいけない物まで見える」状態をいいます。
たとえば、会員ページのURLの番号を1つ変えるだけで、他の会員の画面が開いてしまう。 管理者だけのはずの画面が、ログインしていれば誰でも開ける。 どちらも、サーバーが「この人に許していいか」を確かめていないことが原因です。
自分のサイトなら、次の所を見ます。
守りの基本は「初期値は拒否、必要な人にだけ許す」です。 画面でボタンを隠すだけでは足りません(No.07 第1章②)。
2位です。部品は正しくても、設定が甘くて穴になる状態です。
自分のサイトなら、次の所を見ます。
wp-config.php の権限「足し算より引き算」が効く領域です。No.09 で詳しくやります。
設計の段階で、守りが考えられていない状態です。コードを直しても治りません。 たとえば、パスワードを忘れた人の確認が「生年月日だけ」の設計は、どれだけ丁寧に作っても弱いままです。
自分でWebアプリを作るときは、作る前に「この機能を悪用するとしたら?」を一度考えます。No.03 の脅威モデルの小さい版です。
他人が作った物、守りの道具そのもの、更新の信用に関する問題です。
3位で、2025年版の新顔です。自分が使う部品、作る道具、配る経路のどこかが壊されて、そこから入られる問題です。
WordPress で言えば、プラグインの脆弱性は代表例です。 更に広く、拡張機能、パッケージ、ビルドの仕組みなども含みます。
OWASP が書いている守りは、次の通りです。
詳しい攻撃の流れは No.12 で扱います(後で出ます)。この回では「自分が使っている部品の一覧を持つこと」だけ持ち帰ってください。
暗号化が無い、弱い、使い方が間違っている状態です。
自分のサイトなら、HTTPS が全ページで効いているか、設定ファイルや控えのファイルが外から見えないか、を見ます。 自分で暗号の仕組みを作るのは避け、WordPress や言語の標準の物を使います。
7位です。本人確認の仕組みが弱い状態です。使い回し、弱いパスワード、何度でも試せる、2段階認証が無い、などが入ります。
これは No.05・No.06 の内容そのままです。 Web側の守りとして足すのは、次の3つです。
「届いた物が、本当に正しい物か」を確かめていない状態です。
自分のサイトなら、外のサービスのスクリプト(広告や解析のタグ)が入っている数と、提供元を確かめます。 外のスクリプトは、提供元が壊れると、あなたのページで動いてしまうからです。
5位です。No.07 第2章で見た「データが命令として読まれる」弱点がここに入ります。 SQLインジェクション、XSS、OSコマンドインジェクションなどです。
守りは、No.07 第3章の通りです。命令と値を分けて渡し、出す所でエスケープします。 自作のプラグインや、AIに書かせたコードでは、ここが一番の確認対象です。
9位です。何が起きたかの記録が無い、あっても誰も見ない状態です。 OWASP は、名前を「監視」から「警告」に改めました。記録を取るだけでなく、気づいて動くところまでが対策だからです。
自分のサイトなら、次の所を見ます。
気づく仕組みは No.15 で作ります。
2025年版の新顔です。想定外のこと(通信が途切れた、入力が異常に大きい、権限が足りない)が起きたとき、アプリの動きが壊れる問題です。
OWASP が挙げる例は次の通りです。
守りの考え方は「失敗したときは、閉じる側に倒す」です。 権限の確認がエラーで落ちたなら、通さずに断ります。
ここまでの10項目を、あなたの環境に当てはめた表です。 右端の「最初の一手」は、自分のサイトで今日できる範囲だけを書いています。
| 項目 | 一言で | あなたの環境で見る所 | 最初の一手 |
|---|---|---|---|
| A01 アクセス制御 | 見せてはいけない人に見せる | 会員ページ、共有リンク、WordPress の権限 | 未ログインで、会員ページのURLを開いてみる |
| A02 設定 | 設定が甘い | 使っていないプラグイン、開いた入口、残ったファイル | 使っていないプラグインを削除する |
| A03 サプライチェーン | 使う部品・道具が壊れる | プラグイン、テーマ、拡張機能、パッケージ | 部品の一覧を書き出す |
| A04 暗号化 | 守りの暗号が無い・弱い | HTTPS、鍵、バックアップの置き場 | 全ページが HTTPS か確かめる |
| A05 インジェクション | データが命令になる | 自作プラグイン、フォーム、検索窓 | 外の値をつなげて使う書き方を探す |
| A06 設計 | 作りが弱い | パスワード再設定、会員の本人確認 | 再設定の手順を、自分で一度たどる |
| A07 認証 | 本人確認が弱い | WordPress、SSH、各種管理画面 | 2段階認証を、すべての管理画面で有効にする |
| A08 完全性 | 本物かを確かめない | 更新、外部スクリプト、復元 | 読み込んでいる外部スクリプトを数える |
| A09 ログ・警告 | 気づけない | アクセスログ、ログイン失敗の通知 | ログが何日分残るか確かめる |
| A10 例外 | 想定外で壊れる | エラー画面、失敗時の動き | 存在しないURLを開き、エラー画面に内部情報が出ないか見る |
この表を見て、右端の一手がすぐ出来そうな物から手を付けると、順番が決まります。 優先は、A02(引き算)・A07(2段階認証)・A03(更新と一覧)の3つです。コストが小さく、効きが大きいからです。
○ 受講生によく聞かれる質問:「Top 10 を全部対策すれば安全ですか」
→ 答え方:いいえ。Top 10 は、よく起きる物の地図で、すべての弱点の一覧ではありません。OWASP 自身も、これだけで十分とは言っていません
○ 関係する単元:No.07 Webの仕組み、No.09 WordPressとVPS、No.12 サプライチェーン攻撃(後で出ます)、No.15 気づく仕組み(後で出ます)
Top 10 は「10の引き出し」。まず自分のサイトで、設定の引き算(A02)・本人確認(A07)・部品の一覧と更新(A03)を見る。インジェクション(A05)は、命令と値を分ければ塞げる。
問1 会員制のページで、ログインした会員が、URLの番号を変えただけで他の会員の画面を見られました。どの項目に当たりますか?
問2 2025年版で新しく入った項目は、どの組み合わせですか?
問3 小さな会社のWordPressサイトで、まず手を付けるものとして適切なのはどれですか?
問4 A10「例外的な状態の誤った扱い」の守りの考え方として、正しいのはどれですか?
出典:OWASP Top 10:2025(https://top10.owasp.org/2025)/同「Introduction(2021年版からの変更)」(https://top10.owasp.org/2025/0x00_2025-Introduction/)/同 A03:2025 Software Supply Chain Failures(https://top10.owasp.org/2025/A03_2025-Software_Supply_Chain_Failures/)/同 A10:2025 Mishandling of Exceptional Conditions(https://top10.owasp.org/2025/A10_2025-Mishandling_of_Exceptional_Conditions/)/同 A01:2025 Broken Access Control(https://top10.owasp.org/2025/A01_2025-Broken_Access_Control/)/同 A09:2025 Security Logging and Alerting Failures(https://top10.owasp.org/2025/A09_2025-Security_Logging_and_Alerting_Failures/)/IPA「安全なウェブサイトの作り方」(https://www.ipa.go.jp/security/vuln/websecurity/about.html)