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 ファイルがインクルードされているという情報
手動再現例
- Web ブラウザの開発者ツールを開き、Network タブを選択します。
- Web サイトにアクセスし、JavaScript ファイルが異なるドメインからロードされているか確認します。
- 異なるドメインからロードされている 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 のリスクを低減してください。