はじめに
こんにちは!アメリカで独学でソフトウェアエンジニアを目指しているものです。
現在webについて学んでいますが、Webの脆弱性診断をテーマに、脆弱性情報データベースやペネトレーションテスト(ペンテスト)などを中心とした記事の構成例をご紹介します。
Web脆弱性診断とは
Web脆弱性診断とは、Webアプリケーションやサイトに存在する脆弱性を事前に洗い出し、攻撃を受ける前に対策を講じるためのプロセスです。
具体的には以下のような観点から行われます。
- アプリケーションレイヤー: 入力値の検証不足やSQLインジェクション、XSSといった典型的な脆弱性のチェック
- サーバー設定・ミドルウェア: 不適切なサーバー設定や古いライブラリの使用などによるリスクの確認
- ネットワーク構成: 不要なポートの開放や不適切なファイアウォールルールなど、インフラ層での脆弱性
脆弱性が発見された場合は、修正(パッチ適用・コード修正)し、再テストを行うという流れを繰り返すことで安全性を向上させます。
脆弱性情報データベースとは
脆弱性情報データベース(Vulnerability Database)は、既知の脆弱性やセキュリティ問題に関する情報を集約し、公開しているプラットフォームです。
セキュリティ研究者、ベンダー、コミュニティなどが報告した脆弱性を体系的に整理・管理しています。
代表的な脆弱性情報データベース
以下にいくつか代表的な脆弱性情報データベースの例を載せておきます
-
CVE (Common Vulnerabilities and Exposures)
MITREが管理する脆弱性識別子システム。各脆弱性に「CVE-XXXX-XXXX」といったIDが付与され、世界的に認知されています。 -
NVD (National Vulnerability Database)
アメリカ国立標準技術研究所 (NIST) が運営するデータベース。CVE情報をベースにCVSS(Common Vulnerability Scoring System)のスコアなど追加情報を付加して提供しています。 -
JVN (Japan Vulnerability Notes)
IPA(独立行政法人情報処理推進機構)とJPCERT/CCが共同運営する日本の脆弱性情報ポータル。日本語での情報提供が主で、国内向け製品やサービスの脆弱性もカバーしています。 -
OSS Security Mailing Lists / GitHub Security Advisories など
オープンソースソフトウェアの脆弱性は、セキュリティ関連のメーリングリストやGitHubリポジトリのSecurity Advisoriesで報告されることも多いです。
ぺネトレーションテスト(ペンテスト)とは
ペネトレーションテスト(以下、ペンテスト)とは、悪意ある攻撃者の視点でシステムに対する疑似攻撃を実施し、実際に侵入や情報漏洩が可能かどうかを検証する手法です。
単なる診断ツールによるスキャンでは検出しきれない攻撃シナリオを洗い出すうえで非常に有用です。
ペンテストの種類
-
ブラックボックステスト
攻撃者視点に近く、システムの内部情報をほとんど知らない状態でテストを行う。実際の不正侵入に近い手法を取り、外部からの攻撃経路を探る場合に有効。 -
ホワイトボックステスト
システム内部の設計情報やソースコードを共有した状態でテストを行う。コードの脆弱性や設定ミスなどを詳細に調査できるため、より網羅的な検証が可能。 -
グレーボックステスト
部分的にシステム情報を共有した状態でのテスト。ブラックボックスとホワイトボックスの中間的手法として使われる。
ペンテストの流れ
- 要件定義と範囲設定
どのシステムや機能を対象にするか、攻撃手法の制限や期間などを明確化する。 - 情報収集
DNS情報、IPアドレス範囲、サービスバナーなどを調べて攻撃の足がかりを探る。 - 脆弱性スキャン
ツールや手動テストで脆弱性がないかチェック。 - 脆弱性の検証・侵入試行
見つかった脆弱性が本当に悪用可能かを確認し、侵入に成功した場合はどの範囲まで被害が拡大するかを調べる。 - レポート作成・対策提案
発見された脆弱性、攻撃手順、被害範囲、必要な対策などをまとめ、報告する。
代表的な診断ツール・ペンテストツール
オープンソースツール
-
OWASP ZAP (Zed Attack Proxy)
OWASPプロジェクトの一環で開発・提供されるオープンソースの脆弱性診断ツール。Webアプリケーションのスキャンだけでなく、プロキシ機能を使った手動検査にも役立つ。 -
Burp Suite (コミュニティ版)
プロキシを介してリクエストやレスポンスを解析し、脆弱性を検知する。無料のコミュニティ版でも基本的なテストが可能。
商用ツール
-
Acunetix / Netsparker / AppScan など
自動スキャンの精度が高く、レポート機能やCI/CDパイプラインとの連携機能を備えている。大規模・複雑なアプリケーションの診断や継続的セキュリティテストに有用。
APM/Observabilityツールとの併用
-
New Relic / Datadog / Sentry など
APMやロギングを活用することで、ペンテストや脆弱性診断の結果が稼働中のアプリケーションに与える影響をリアルタイムに把握できる。ボトルネックや異常動作も素早く検知が可能。
まとめ
この記事で一旦Webの勉強は終わりですが、これから「安全なWebアプリケーションの作り方」をしっかり見て、セキュリティ面にも当たり前に知っているエンジニアになれるよう引き続き勉強頑張りたいと思います