Cross-Domain JavaScript Source File Inclusion

概要

  • 脆弱性の名前: Cross-Domain JavaScript Source File Inclusion (クロスドメイン JavaScript ソースファイルインクルージョン)
  • 問題の要点: 異なるドメインから提供される JavaScript ファイルを Web サイトに含めることで、悪意のあるスクリプトが実行されるリスクがある状態。
  • よくある発生シーン: CDN (コンテンツ配信ネットワーク) やサードパーティのライブラリを使用する際に、設定ミスや CDN の侵害によって発生することがあります。クラウド環境では、複数のサービスが連携して動作することが多いため、外部リソースの管理が不適切だと問題が発生しやすいです。

背景

Web サイトは、JavaScript を使用して動的なコンテンツや機能を提供することが一般的です。その際、CDN やサードパーティのライブラリを利用することがありますが、これらの外部リソースが侵害された場合、Web サイトのセキュリティに影響を及ぼす可能性があります。
Cross-Domain JavaScript Source File Inclusion は、このような外部リソースの利用におけるリスクを指摘するものです。
近年、サプライチェーン攻撃の増加に伴い、この脆弱性の重要性が高まっています。

セキュリティ上のリスク

  • クロスサイトスクリプティング (XSS) 攻撃。
  • Web サイトの改ざん。
  • ユーザー情報の窃取。
  • マルウェアの配布。

対処方法の具体例

Apache2

Content Security Policy (CSP) の設定

httpd.conf または .htaccess ファイルに CSP を設定し、許可された JavaScript のソースを制限します。

# httpd.conf または .htaccess
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted-cdn.example.com"

Nginx

Content Security Policy (CSP) の設定

nginx.conf ファイルに CSP を設定し、許可された JavaScript のソースを制限します。

# nginx.conf
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://trusted-cdn.example.com";

JavaScript

Subresource Integrity (SRI) の利用

外部 JavaScript ファイルをインクルードする際に、SRI を使用してファイルの整合性を検証します。

<script
  src="https://trusted-cdn.example.com/script.js"
  integrity="sha384-INTEGRITY_HASH"
  crossorigin="anonymous"
></script>

AWS

CloudFront の設定

CloudFront を使用している場合、オリジンへのアクセスを制限し、HTTPS でのみアクセスを許可するように設定します。

検出方法

OWASP ZAP での出力例

  • Alert 名: Cross-Domain JavaScript Source File Inclusion
  • リスク: Low
  • URL: JavaScript ファイルがインクルードされている URL
  • パラメータ: JavaScript ファイルの URL
  • 詳細: 異なるドメインから JavaScript ファイルがインクルードされているという情報

手動再現例

  1. Web ブラウザの開発者ツールを開き、Network タブを選択します。
  2. Web サイトにアクセスし、JavaScript ファイルが異なるドメインからロードされているか確認します。
  3. 異なるドメインからロードされている JavaScript ファイルがある場合、脆弱性が存在する可能性があります。

まとめ

  • CVSS 基本値: 4.7 (Medium)
  • 運用チームや開発者が意識すべきポイント:
    • 信頼できるソースからの JavaScript ファイルのみを使用する。
    • Subresource Integrity (SRI) を使用して、ファイルの整合性を検証する。
    • Content Security Policy (CSP) を設定し、許可された JavaScript のソースを制限する。
    • 外部 JavaScript ファイルの利用状況を定期的に見直し、不要なファイルは削除する。
  • 再発防止:
    • 開発プロセス全体でセキュリティを考慮する (Security by Design)。
    • コードレビューを実施し、外部 JavaScript ファイルの利用状況を確認する。
    • 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
    • 外部 JavaScript ファイルの利用に関するポリシーを策定し、遵守する。

補足資料・参考 URL

以上の対策と検出方法を活用して、Cross-Domain JavaScript Source File Inclusion のリスクを低減してください。