Webアプリケーションが最大の攻撃対象である現実

企業のWebアプリケーションは、インターネットに公開されている以上、世界中の攻撃者から常に狙われています。IPA(情報処理推進機構)の「情報セキュリティ10大脅威」でも、Webアプリケーションの脆弱性を突いた攻撃は毎年上位に位置しています。

特に中小企業が運営するWebアプリケーションは、大企業と比較してセキュリティ対策が手薄になりがちです。限られた予算と人材の中で、どの脆弱性から優先的に対処すべきかの判断基準が必要です。

その判断基準として最も広く参照されているのが、OWASP(Open Worldwide Application Security Project)が公表する「OWASP Top 10」です。

OWASP Top 10とは

OWASPは、Webアプリケーションセキュリティの向上を目的とする国際的な非営利団体です。OWASP Top 10は、Webアプリケーションにおける最も重大なセキュリティリスクを10項目にまとめたもので、数年ごとに改訂されています。

現行の最新版は「OWASP Top 10:2021」です。以下、各項目の概要と具体的な対策を解説します。

A01:アクセス制御の不備(Broken Access Control)

概要

2021年版で1位に浮上した脆弱性です。認証済みのユーザーが、本来アクセスを許可されていないデータや機能にアクセスできてしまう問題を指します。

具体例

  • URLのパラメータを書き換えるだけで、他のユーザーの個人情報が閲覧できる(IDOR:Insecure Direct Object Reference)
  • 一般ユーザーが管理者用APIエンドポイントを直接呼び出せる
  • JWTトークンの改ざんにより、権限昇格が可能になる

対策

  • サーバーサイドで必ずアクセス権限を検証する(クライアント側の制御だけに頼らない)
  • デフォルトで全リソースへのアクセスを拒否し、明示的に許可する設計を採用する
  • リソースのIDに推測可能な連番を使わず、UUIDなどを採用する
  • 自動テストでアクセス制御のテストケースをカバーする

A02:暗号化の失敗(Cryptographic Failures)

概要

機密データの保護に適切な暗号化が行われていない、または暗号化の実装に欠陥がある問題です。旧版では「機微なデータの露出」と呼ばれていました。

具体例

  • パスワードがMD5やSHA-1などの脆弱なハッシュアルゴリズムで保存されている
  • データベース接続にTLS/SSLが使用されていない
  • APIキーやデータベースのパスワードがソースコードにハードコーディングされている
  • HTTPSを使用していない、またはHTTPからHTTPSへのリダイレクトが不完全

対策

  • パスワードのハッシュにはbcrypt、scrypt、またはArgon2を使用する
  • 通信は全てTLS 1.2以上で暗号化する
  • 機密情報は環境変数や専用のシークレット管理サービスで管理する
  • 不要な機密データはそもそも保存しない

A03:インジェクション(Injection)

概要

SQLインジェクション、NoSQLインジェクション、コマンドインジェクション、LDAPインジェクションなど、外部からの入力がそのまま命令として解釈・実行されてしまう脆弱性です。

具体例:SQLインジェクション

ログインフォームのユーザー名欄に以下のような文字列を入力されることで、認証をバイパスされるケースがあります。

これは、入力値がSQL文にそのまま組み込まれる場合に発生します。

対策

  • パラメータ化クエリ(プリペアドステートメント)を必ず使用する
  • ORMを使用する場合も、生SQLの混在がないか確認する
  • 入力値のバリデーションを実施する(ホワイトリスト方式が望ましい)
  • データベースアカウントの権限を最小限に制限する

A04〜A06:設計・設定・コンポーネントの脆弱性

A04:安全でない設計(Insecure Design) は2021年版で新設されたカテゴリです。実装のバグではなく、設計段階でのセキュリティ上の欠陥を指します。決済処理でクライアント側の金額をそのまま信用する設計、レート制限のないログイン機能などが該当します。対策として、設計段階での脅威モデリングとセキュリティ要件の明文化が重要です。

A05:セキュリティの設定ミス(Security Misconfiguration) は、デバッグモードの有効化、デフォルト管理者アカウントの放置、エラーメッセージへのスタックトレース表示など、設定の不備に起因する脆弱性です。本番デプロイ前のチェックリスト実施と、設定のコード化(IaC)による管理が有効です。

A06:脆弱で古いコンポーネント(Vulnerable and Outdated Components) は、既知の脆弱性を持つライブラリやフレームワークの使用リスクです。npm audit、Snyk、Dependabotなどの脆弱性スキャンツールをCI/CDに組み込み、定期的なアップデートを運用ルール化してください。

A07〜A10:認証・整合性・ログ・SSRFの脆弱性

A07:識別と認証の失敗 では、MFAの実装、ブルートフォース対策のレート制限、ログイン後のセッションID再生成が基本対策です。

A08:ソフトウェアとデータの整合性の不具合 は、CI/CDパイプラインへのサプライチェーン攻撃を含みます。外部ライブラリの整合性検証(SRIハッシュ、署名確認)が対策の柱です。

A09:セキュリティログとモニタリングの不備 では、認証の成功・失敗やアクセス制御の拒否をログに記録し、異常パターンを検知するアラートを設定してください。

A10:SSRF(サーバーサイドリクエストフォージェリ) は、クラウド環境でメタデータサービスへのアクセスにより認証情報が窃取されるリスクがあります。IMDSv2の強制とURLホワイトリストの定義が対策です。

中小企業のWebアプリに多い脆弱性パターン

OWASP Top 10の全項目を理解した上で、中小企業のWebアプリケーションで特に発生頻度が高い脆弱性パターンを整理します。

受託開発時のセキュリティ要件不足 -- 要件定義書にセキュリティ要件が明記されず、機能面は問題なくてもセキュリティ面では脆弱なアプリケーションが納品されるケースが頻発しています。

CMSの管理画面の露出 -- WordPressの/wp-admin/がIPアドレス制限なしで公開されている状態は、ブルートフォース攻撃の格好の標的です。

古いPHP/フレームワークの放置 -- サポート終了済みのPHPやフレームワークが、セキュリティパッチ未適用のまま稼働し続けているケースです。

APIのアクセス制御不備 -- SPA構成のアプリケーションで、APIエンドポイントのアクセス制御が不十分なケースが増加しています。

WAF導入の実践ガイド

WAFとは

WAF(Web Application Firewall)は、Webアプリケーションへの通信を監視し、SQLインジェクションやXSSなどの攻撃パターンを検知・遮断するセキュリティ製品です。

WAFにはクラウド型(AWS WAF、Cloudflare WAF、SiteGuardなど)とアプライアンス型があり、中小企業にはクラウド型が最適です。ただしWAFは万能ではなく、ビジネスロジックの悪用などは防げません。「多層防御の一つ」として、アプリケーション自体の対策と並行して導入してください。

導入時は、まず検知モード(ログのみ)で誤検知を確認し、除外ルールを整備した上でブロックモードに切り替えるステップが推奨されます。

脆弱性診断の活用

脆弱性診断の種類

自動診断(ツール診断) OWASP ZAP、Burp Suite、Nessusなどのツールを使って自動的に脆弱性をスキャンする方法です。広範囲を短時間でチェックできますが、ビジネスロジックの脆弱性は検出が困難です。

手動診断(専門家による診断) セキュリティエンジニアが手動で脆弱性を検証する方法です。自動ツールでは発見できない複雑な脆弱性を検出できますが、コストと時間がかかります。

診断の頻度と対応方針

最低でも年1回、可能であれば四半期に1回の診断を推奨します。大規模なリリースやアーキテクチャ変更があった場合は、追加で診断を実施してください。

脆弱性は重大度(Critical、High、Medium、Low、Informational)で分類されます。CriticalとHighは即座に対処し、Mediumは次回リリースまでに対処、Lowは計画的に対処というのが一般的な優先順位です。

今すぐ確認すべきセキュリティチェックリスト

自社のWebアプリケーションについて、以下の項目を確認してください。

  • 全ての入力値に対してバリデーションとサニタイズを実施しているか
  • SQLクエリにパラメータ化クエリ(プリペアドステートメント)を使用しているか
  • 通信はHTTPSで暗号化されているか(HTTP→HTTPSのリダイレクトを含む)
  • パスワードはbcryptやArgon2などの安全なアルゴリズムでハッシュ化されているか
  • 管理画面へのアクセスはIPアドレス制限やVPNで保護されているか
  • エラーメッセージに内部情報(スタックトレース、DB情報)が含まれていないか
  • 使用しているフレームワークやライブラリのバージョンは最新か
  • 不要なHTTPメソッドやデバッグ機能は無効化されているか
  • 認証機能にMFAまたはブルートフォース対策が導入されているか
  • セキュリティログの取得と異常検知の仕組みが整備されているか

上記のうち3つ以上に「いいえ」と答えた場合、早急にセキュリティ対策の見直しが必要です。特にCriticalとHighに該当する脆弱性がある場合は、事業継続のリスクとして経営層に報告し、優先的に対処してください。

まとめ

Webアプリケーションのセキュリティは、OWASP Top 10を出発点として体系的に取り組むことが効果的です。全ての脆弱性を一度に対処することは難しいですが、アクセス制御の不備(A01)、インジェクション(A03)、セキュリティ設定ミス(A05)の3つは優先的に対応してください。

WAFの導入と定期的な脆弱性診断を組み合わせることで、多層的な防御体制を構築できます。セキュリティは「完璧な状態」を目指すものではなく、「許容可能なリスクレベルまで低減する」プロセスです。まずは自社のWebアプリケーションの現状を正確に把握することから始めてください。

自社のWebアプリ、脆弱性は大丈夫ですか?

GXOでは、OWASP Top 10に基づいたWebアプリケーションの脆弱性診断を実施しています。専門のセキュリティエンジニアが貴社のシステムを調査し、リスクと具体的な対策を報告します。まずは無料相談からお気軽にどうぞ。

脆弱性診断の無料相談を申し込む

※ 営業電話はしません | オンライン対応可 | 相談だけでもOK