About

Security Scanner とは

自社開発の30以上のWebアプリケーションを包括的にセキュリティ診断するために構築した、 自分専用のセキュリティ診断ツールです。外部サービスに依存せず、 完全なコントロール下で脆弱性を検出・管理します。

開発の背景

個人で30以上のWebアプリケーションを開発・運用する中で、各サイトのセキュリティ状況を 一元的に把握する手段がないことが課題でした。

外部のセキュリティ診断サービスは、診断対象のURLや結果を第三者サーバーに送信する必要があり、 情報漏洩や信頼性の懸念がありました。特に自分のインフラ構成やドメイン一覧が外部に渡ることは避けたいと考えました。

そこで、完全に自分のコントロール下で動作するセキュリティ診断ツールを構築。 8つの診断モジュールで多角的にWebアプリの脆弱性を検出し、A-Fグレードで可視化する仕組みを実装しました。

課題

  • - 30+サイトのセキュリティ状況が把握できない
  • - 外部ツールは情報漏洩・信頼性の懸念
  • - 手動チェックは非効率で漏れが生じる

解決策

  • - 自社専用ツールで完全なコントロール
  • - 8モジュールで自動的に多角診断
  • - ポートフォリオとURL自動同期

8つの診断モジュール

各モジュールが並列実行され、数十秒で包括的な診断結果を返します。

01.セキュリティヘッダー診断

HTTPレスポンスヘッダーのセキュリティ設定を包括的に検査します。

重要度: 中〜高

チェック項目

  • Content-Security-Policy (CSP) — XSSやデータインジェクション攻撃を防止
  • Strict-Transport-Security (HSTS) — HTTPS通信の強制
  • X-Content-Type-Options — MIMEタイプスニッフィング防止
  • X-Frame-Options — クリックジャッキング攻撃防止
  • X-XSS-Protection — ブラウザ組み込みXSSフィルター
  • Referrer-Policy — リファラー情報の漏洩制御
  • Permissions-Policy — ブラウザ機能のアクセス制御

02.SSL/TLS証明書診断

暗号化通信の安全性を証明書レベルで検証します。

重要度:

チェック項目

  • 証明書の有効期限チェック(残日数の把握)
  • 証明書発行者情報の確認(信頼されたCAか)
  • プロトコルバージョン検証(TLS 1.2 / 1.3対応)
  • 証明書チェーンの完全性検証
  • ホスト名の一致確認

03.XSS(クロスサイトスクリプティング)検出

反射型XSSおよびHTMLインジェクションの脆弱性を検出します。

重要度:

チェック項目

  • 反射型XSSテストペイロードの送信と検証
  • HTMLインジェクションの可能性検出
  • フォーム入力のサニタイズ状況確認
  • URLパラメータへのペイロード注入テスト

04.SQLインジェクション診断

SQLペイロードテストによるデータベース攻撃の脆弱性を診断します。

重要度:

チェック項目

  • 基本的なSQLiペイロードによるテスト
  • エラーメッセージからのDB情報漏洩確認
  • ブラインドSQLi兆候の検出
  • 数値パラメータ・文字列パラメータの両方をテスト

05.情報漏洩チェック

機密ファイルやサーバー情報の意図しない露出を検出します。

重要度:

チェック項目

  • /.env, /.git, /wp-admin など機密パスのアクセステスト
  • サーバーヘッダー露出(X-Powered-By, Server等)
  • エラーページでの詳細スタックトレース表示
  • robots.txt / sitemap.xml の機密情報チェック
  • バックアップファイル(.bak, .sql, .zip等)の露出

06.Cookie設定診断

Cookie属性の適切な設定を確認し、セッションハイジャックリスクを評価します。

重要度:

チェック項目

  • Secure フラグ — HTTPS通信でのみ送信されるか
  • HttpOnly フラグ — JavaScriptからのアクセス制限
  • SameSite 属性 — CSRF攻撃の防止設定
  • Cookie名からのフレームワーク推測リスク

07.ポートスキャン

不要に公開されたポートを検出し、攻撃面を可視化します。

重要度: 中〜高

チェック項目

  • SSH (22), HTTP (80), HTTPS (443) の基本ポート
  • データベースポート (3306, 5432, 27017) の公開チェック
  • 開発用ポート (3000, 8080, 8443) の外部公開
  • 管理ポート (9090, 2222等) の検出

08.オープンリダイレクト診断

URLリダイレクト機能の悪用可能性を診断し、フィッシングリスクを評価します。

重要度:

チェック項目

  • URLパラメータを使ったリダイレクトの検出
  • 外部ドメインへの無制限リダイレクト検証
  • リダイレクトチェーンの追跡
  • フィッシング攻撃への悪用可能性の評価

スコアリングシステム

各診断モジュールの結果を100点満点で算出し、A-Fの5段階でグレード付与します。

グレードスコア範囲評価推奨アクション
A90 - 100優秀現状維持。定期的な監視を継続
B80 - 89良好軽微な改善推奨。優先度は低い
C70 - 79改善推奨中程度のリスク。1ヶ月以内の対応推奨
D50 - 69要対応高リスク。1週間以内の対応が必要
F0 - 49危険重大な脆弱性あり。即時対応が必要

スコア算出方法

各モジュールが個別にスコアを算出し、それらの加重平均で総合スコアを決定。 重要度の高い項目(SSL/TLS、XSS、SQLi)は高い重みが割り当てられます。 グレードは総合スコアに基づいて自動的に付与されます。

技術アーキテクチャ

モダンな技術スタックで構築された、高速かつ安全な診断基盤です。

レイヤー技術役割
フロントエンドNext.js 15 (App Router) + TypeScript + Tailwind CSS 4ダッシュボード、スキャン画面、レポート表示のWeb UI
認証Supabase Auth (@supabase/ssr)ユーザー認証・セッション管理。自分専用のアクセス制御
スキャンエンジンNode.js (tls / net / fetch API)8つの診断モジュールを並列実行。Streaming APIでリアルタイム進捗表示
データSupabase (PostgreSQL)スキャン履歴・レポートの永続化。テーブルプレフィックス: ss_
デプロイVercel + nextcode.ltd サブドメインエッジネットワークで高速配信。security.nextcode.ltd
CLInpx tsx cli.tsターミナルからの一括スキャン実行。JSON出力対応

CLI(コマンドライン)対応

Webダッシュボードに加え、ターミナルからの一括スキャンにも対応しています。

Terminal

# 単一サイトスキャン

$ npx tsx cli.ts https://samune-maker.nextcode.ltd

# 複数サイト一括スキャン(URLファイル指定)

$ npx tsx cli.ts --urls urls.txt

# JSON形式で結果出力

$ npx tsx cli.ts https://example.com --json

主な機能

リアルタイム進捗表示

Streaming APIで各モジュールの診断進捗をリアルタイムに表示

URL自動同期

ポートフォリオのworks.tsからURL一覧を自動取得し、一括スキャン可能

スキャン履歴

過去の診断結果を保存し、セキュリティ状況の推移を追跡

改善提案

検出された脆弱性ごとに具体的な修正方法を提示

認証保護

Supabase Authによるアクセス制御。自分専用の管理ツール

レスポンシブUI

デスクトップ・モバイル両方で快適に操作可能

ログインして診断を開始

管理者アカウントでログインし、Webアプリケーションのセキュリティ状況を確認しましょう。