SAMPLE
VibeGuard
CONFIDENTIAL — 取扱注意

セキュリティ診断レポート

バイブコーディング セキュリティ診断 — STANDARDプラン

対象システム ○○○管理ダッシュボード
診断日 2026年3月20日 〜 3月24日
診断対象 ソースコード+公開サーバー
報告書バージョン v1.0
VibeGuard

1. エグゼクティブサマリー

35
/100

セキュリティスコア: 35 / 100(危険)

複数の重大な脆弱性が発見されました。特にサーバー設定とAPI認証に深刻な問題があり、早急な対応が必要です。コード品質は概ね良好ですが、インフラ設定に大きな穴があります。

2
CRITICAL
3
HIGH
4
MEDIUM
3
LOW

検出された主な問題

2. 診断範囲

2.1 コード診断

カテゴリ対象結果
フレームワークNext.js 14 (App Router)確認済み
データベースSQLite (better-sqlite3)確認済み
認証JWT + bcrypt問題あり
APIエンドポイント24エンドポイント問題あり
外部API連携Google Ads, Meta, Yahoo!, Microsoft確認済み

2.2 サーバー診断

カテゴリ対象結果
OSUbuntu 24.04 LTS確認済み
Webサーバーnginx 1.24要改善
ファイアウォールufw問題あり
SSH設定OpenSSH 9.6要改善
SSL/TLSLet's Encrypt確認済み
侵入検知fail2ban未導入
ポートスキャン外部からのnmap診断問題あり

3. 脆弱性一覧

ID カテゴリ 脆弱性 重要度 対象
VG-001 認証 APIエンドポイント認証バイパス CRITICAL コード
VG-002 インフラ 開発用ポートのインターネット公開 CRITICAL サーバー
VG-003 Webサーバー セキュリティヘッダー未設定 HIGH サーバー
VG-004 認証 ブルートフォース対策の欠如 HIGH コード
VG-005 インフラ fail2ban未導入 HIGH サーバー
VG-006 エラー処理 詳細エラーメッセージの露出 MEDIUM コード
VG-007 認証 JWT有効期限の設定不備 MEDIUM コード
VG-008 インフラ SSHパスワード認証が有効 MEDIUM サーバー
VG-009 Webサーバー nginxバージョン情報の露出 MEDIUM サーバー
VG-010 フロントエンド CSP(Content Security Policy)未設定 LOW サーバー
VG-011 認証 パスワードポリシーの緩さ LOW コード
VG-012 インフラ 自動セキュリティアップデート未設定 LOW サーバー

4. 脆弱性詳細

VG-001 CRITICAL APIエンドポイント認証バイパス 📂 コード / 認証

📋 概要

24個のAPIエンドポイントのうち18個で認証チェックが実装されておらず、ログイン画面を迂回して直接アクセスすることで全データの取得・変更が可能な状態でした。

🔍 再現手順(PoC)

# 認証なしでAPIにアクセス → 全アカウントデータが取得可能 $ curl https://example.com/api/accounts # → 200 OK: [{"id":1,"name":"クライアントA","budget":500000}, ...] # 認証なしでデータ変更も可能 $ curl -X POST https://example.com/api/sync -d '{"account_id":"123"}' # → 200 OK: {"success":true}

⚠️ 影響

第三者が全クライアントの広告データ(予算・売上・コンバージョン等)を閲覧・操作可能。広告設定の不正変更による金銭的被害のリスクあり。

✅ 推奨対策

全APIエンドポイントにJWT認証ミドルウェアを適用。共通の認証チェック関数を作成し、各route.tsの冒頭で呼び出す構成を推奨。

// 推奨実装: 全APIルートに認証チェックを追加 import { verifyAuth } from '@/lib/auth'; export async function GET(request) { const user = verifyAuth(request); if (!user) { return NextResponse.json( { error: '認証が必要です' }, { status: 401 } ); } // ... 以降の処理 }
VG-002 CRITICAL 開発用ポートのインターネット公開 📂 サーバー / インフラ

📋 概要

外部ポートスキャンにより、本番アプリケーションのポート(3100)がnginxを介さず直接インターネットに公開されていることを確認。認証・セキュリティヘッダーが一切適用されない状態でアプリに直接アクセス可能でした。

🔍 再現手順(PoC)

# 外部からのポートスキャン結果 $ nmap -p 3000-3500 xxx.xxx.xxx.xxx PORT STATE SERVICE 3100/tcp open unknown ← 本番アプリ 3200/tcp open unknown ← テスト環境 3300/tcp open unknown ← 別アプリ # nginx を迂回して直接アクセス可能 $ curl http://xxx.xxx.xxx.xxx:3100/api/accounts # → 200 OK(セキュリティヘッダーなし、認証なし)

⚠️ 影響

nginxで設定した認証・セキュリティヘッダー・HTTPS強制が全て無効化される。攻撃者はnginxを完全にバイパスしてアプリケーションに直接アクセス可能。

✅ 推奨対策

ufwファイアウォールで必要なポート(80, 443, 22)のみ許可し、アプリケーションポートへの外部アクセスを遮断。

# ファイアウォール設定 $ sudo ufw default deny incoming $ sudo ufw allow 22/tcp # SSH $ sudo ufw allow 80/tcp # HTTP $ sudo ufw allow 443/tcp # HTTPS $ sudo ufw enable
VG-005 HIGH fail2ban未導入 📂 サーバー / インフラ

📋 概要

SSH・HTTPに対する攻撃試行を検知・遮断する仕組みが導入されていません。auth.logを確認したところ、直近1週間で複数のIPアドレスからSSHブルートフォース攻撃の痕跡を確認しました。

🔍 検出根拠

# SSHログにブルートフォース攻撃の痕跡 $ grep "Failed password" /var/log/auth.log | wc -l 1,847 ← 直近7日間の失敗ログイン試行数 $ grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -5 423 103.xxx.xxx.xxx 387 45.xxx.xxx.xxx 291 192.xxx.xxx.xxx ...

✅ 推奨対策

fail2banを導入し、SSH・nginx-http-authのjailを有効化。5回の失敗で30分BAN、再犯は段階的にBAN期間を延長する設定を推奨。

※ 以下 VG-003〜VG-004、VG-006〜VG-012 の詳細は省略(サンプルのため)

5. サーバー設定チェック結果

5.1 ポート・ネットワーク

チェック項目結果詳細
不要ポートの公開NGポート3100,3200,3300がインターネットに公開
ファイアウォール(ufw)NGufw inactive(未有効化)
HTTPS強制OKHTTP→HTTPS 301リダイレクト設定済み
SSL証明書有効期限OKLet's Encrypt 自動更新設定済み
TLSバージョンOKTLS 1.2/1.3のみ許可

5.2 SSH設定

チェック項目結果詳細
パスワード認証要改善PasswordAuthentication yes(鍵認証のみに変更推奨)
rootログイン要改善PermitRootLogin yes(prohibit-password推奨)
SSHポートOKデフォルトポート22(変更は任意)

5.3 Webサーバー(nginx)

チェック項目結果詳細
X-Frame-OptionsNG未設定(クリックジャッキング攻撃のリスク)
X-Content-Type-OptionsNG未設定(MIMEスニッフィングのリスク)
Strict-Transport-SecurityNG未設定(HTTPS強制が不完全)
Content-Security-Policy要改善未設定(XSS緩和策として推奨)
server_tokens要改善off未設定(nginxバージョン情報が露出)

5.4 侵入検知・監視

チェック項目結果詳細
fail2banNG未インストール
ログ監視要改善ログは出力されているが監視・アラートなし
自動セキュリティアップデートNGunattended-upgrades未設定

6. 対応優先度

以下の順序での対応を推奨します。優先度1は即座に対応、優先度2は1週間以内、優先度3は1ヶ月以内を目安としてください。

1

ファイアウォール有効化 + 不要ポート遮断(VG-002)

最も即効性が高く、対応も簡単です。ufwを有効化し、80/443/22のみ許可。所要時間: 約10分。

1

全APIエンドポイントへの認証適用(VG-001)

共通認証ミドルウェアを作成し、全route.tsに適用。所要時間: 約2〜4時間。

2

fail2ban導入 + nginxセキュリティヘッダー設定(VG-003, VG-005)

サーバーの防御力を大幅に向上。導入後は自動で攻撃をブロック。所要時間: 約1時間。

2

ブルートフォース対策 + エラーメッセージマスキング(VG-004, VG-006)

ログイン試行制限の実装とエラー情報の隠蔽。所要時間: 約1〜2時間。

3

SSH設定強化 + 自動アップデート + その他(VG-007〜VG-012)

防御の多層化。鍵認証のみに変更、unattended-upgrades導入、CSP設定等。所要時間: 約2〜3時間。

7. 付録

7.1 使用ツール

7.2 参考基準

7.3 重要度の定義

レベル定義対応期限目安
CRITICAL攻撃者が即座に悪用可能。データ漏洩・システム乗っ取りのリスク即座に対応
HIGH攻撃の容易性は高いが、一定の条件が必要1週間以内
MEDIUM攻撃には複数の条件が必要だが、対策すべき1ヶ月以内
LOW直接的な攻撃リスクは低いが、改善が望ましい次回メンテナンス時