投稿に戻る
研究アーカイブ

SafeBase トラストセンターを通じた内部セキュリティ検出

公開されたSafeBaseトラストポータルとNucleiヘッドレススキャンを使用して、公開向けセキュリティコントロールを抽出し、保証主張を検証し、大規模な変更検出を自動化します。

osintnucleidetectionsafebasecompliance

はじめに — セキュリティ保証と OSINT の探索

公開されている SafeBase ポータル は同時に二つの対象者にサービスを提供します:

  • セキュリティ体制の証明を必要とする見込み顧客
  • セキュリティ研究者(ブルーチームおよびレッドチーム)

グリーンチェックマーク は(おそらく)現在存在するコントロールを示しており、チェックマークが欠けている箇所は、存在しないものへの同様に明確なヒントとなります。


この検出手法が行うこと

本記事で説明するアプローチは以下を実行します:

  • Nuclei のヘッドレスモード を使用して HTML ボディから各コントロールのタイトルを直接 収集 する
  • 単一の正規表現ベースのテンプレートを通じてそれらのタイトルを機械可読な検出結果に 正規化 する
  • 内部セキュリティコントロールの JSON/CLI マッチングを 出力 する

なぜこのデータを収集するのか?

以下のようなコンプライアンスフレームワーク:

  • ISO 27001
  • SOC 2
  • PCI-DSS
  • 地域のプライバシー規制

…はセキュリティコントロールが導入され機能していることの 証拠 を要求します。

SafeBase は、無数のメールのやり取りや文書要求の必要性を排除することでこれを簡素化します。

自社の Trust Centre をスクレイピングする理由は?

自分で構築した場合でも、十分な理由があります:

  • 継続的な保証
    監査人はリアルタイムの継続的な証拠をますます期待するようになっています

  • 変更の検出
    コントロール名、グループ化、またはポリシーはアップデートや買収後に変更される可能性があります

  • サードパーティへのマッピング
    JSON 出力により NIST 800-53 などのフレームワークへのマッピングが可能になります


ブルーチーム vs. レッドチームの価値

チーム メリット
ブルーチーム 公開されている主張が正確であり続けることを確保する
レッドチーム 内部コントロールライブラリとの比較によりギャップを特定する

検出

手動レビューは機能しますが、スケールしません。

代わりに、このアプローチは YAML テンプレートで動作する高速スキャンツールである ProjectDiscovery / Nuclei を使用します。

なぜ Nuclei なのか?

  • テンプレート駆動の検出
  • 高速スキャン
  • 容易にカスタマイズ可能
  • 大規模な自動化に最適

Matchers

テンプレートには 70 個の matcher が含まれています。

正規表現 Matcher の例

- type: regex
  name: firewall
  regex: ['(?i)Firewall(?:[\s\S]{0,600}?data-testid="enabled")?']

- type: regex
  name: incident-response-policy
  regex: ['(?i)Incident\s+Response\s+Policy(?:[\s\S]{0,600}?data-testid="enabled")?']

使用している正規表現テクニック

問題 対処法
大文字・小文字の違い (?i) フラグ
スペース・改行の混在 \s+
タイトルとアイコン間の不明な空白 [\s\S]{0,600}?

誤検知の排除

DSL matcher により精度を高めます:

- type: dsl
  name: names
  dsl:
    - 'status_code == 200'
    - 'contains_any(body, "Powered by SafeBase")'
  condition: and

確認内容

両方の条件が真でなければなりません:

  • レスポンスのステータスコードが 200
  • HTML に "Powered by SafeBase" が含まれている

Cloudflare WAF のバイパス

ほとんどの SafeBase ポータルは Cloudflare WAF の背後に位置しており、スクレイピングの試みをブロックします。

解決策:ヘッドレスモード

Nuclei の ヘッドレス Chromium 実行を使用することで:

  • JavaScript チャレンジを実行する
  • Cloudflare Managed Challenge をバイパスする
  • 動的コンテンツをレンダリングする

ヘッドレス設定

headless:
  - steps:
      - action: navigate
        args:
          url: "{{BaseURL}}"
      - action: sleep
        args:
          duration: 1s

詳細説明

  • navigate
    Chromium を起動してターゲット URL を読み込む

  • sleep (1s)
    以下を可能にします:

    • JavaScript の実行
    • Cookie の設定
    • ページの完全なレンダリング

HTML が不完全に見える場合は遅延を増やしてください。


トラブルシューティング

結果が欠けている場合:

  • IP がブロックされている可能性があります
  • 必要に応じてプロキシを使用してください

大規模スキャン

1. ターゲットリストの構築

# domains.txt
https://trust.gitlab.com
https://security.projectdiscovery.io
https://trust.your-vendor-here.com

以下も含めることができます:

  • サブドメイン
  • クロールされたエンドポイント

2. 並列処理で Nuclei を実行する

nuclei \
  -t safebase-checks-enabled.yaml \
  -headless \
  -l matches.txt \
  -c 50 \
  -o safebase-scan.json

主要フラグ

フラグ 目的
-l 入力ファイル
-c 50 並列ブラウザ(リソース集約型)
-o 出力ファイル

出力オプション

  • JSON
  • CSV
  • Stdout

結果を以下に転送することができます:

  • S3
  • Slack
  • SIEM

テンプレートリポジトリ

https://github.com/rxerium/internal-security-detect


3. CI/CD による自動化

GitHub Actions の例

jobs:
  safebase-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          nuclei -t safebase-checks-enabled.yaml -headless -l domains.txt -c 50 -o results.json
      - name: Upload artefact
        uses: actions/upload-artifact@v4
        with:
          name: safebase-results
          path: results.json

最後に

この技術は SafeBase を使用している組織に限定されますが、強力なコンセプトを示しています:

パッシブな OSINT はコンプライアンス、保証、そして検出と交差することができます。

公開されているトラストポータルを活用することで、研究者は以下を実現できます:

  • コントロールフレームワークの分析
  • セキュリティ主張の検証
  • 変更の自動検出

…これらすべてが 認証やシステムへの直接アクセスなしに 可能です。