外部スクリプトの危険性 - サードパーティスクリプトのリスク
アクセス解析・広告・チャットなどの外部スクリプトが持つセキュリティリスク。Magecart 型攻撃によるフォーム情報窃取が代表例。
概念図
攻撃シナリオ
一般的な外部スクリプトの読み込み
bash
<!-- 典型的なサードパーティスクリプトの例 -->
<script src="https://analytics.example.com/tracker.js"></script>
<script src="https://ads.example.com/ad-loader.js"></script>
<script src="https://chat.example.com/widget.js"></script>
<!-- これらのスクリプトは自サイトと同じ権限で実行される -->サードパーティスクリプトの影響を制限する方法
bash
<!-- CSP でスクリプトの読み込み元を制限 -->
Content-Security-Policy: script-src 'self' https://trusted-analytics.com
<!-- sandbox 属性付き iframe で外部ウィジェットを隔離 -->
<iframe src="https://chat.example.com" sandbox="allow-scripts allow-forms"></iframe>リスクの種類
Formjacking(Magecart 攻撃): 決済フォームに悪意あるスクリプトを注入し、クレジットカード情報を窃取する。British Airways や Ticketmaster の大規模被害が有名
データ漏洩: アクセス解析タグがユーザーの行動データを過剰に収集し、意図しないデータ共有が発生する
サプライチェーン攻撃: 外部スクリプトの配信元が侵害され、全利用サイトにマルウェアが配布される
パフォーマンス劣化: 大量の外部スクリプトがページ読み込み速度を低下させ、ユーザー体験を損なう
プライバシー侵害: 広告ネットワークによるクロスサイトトラッキングが GDPR 等の規制に抵触する可能性がある
対策
- CSP で読み込み元を制限:
script-srcで許可するドメインを明示的に列挙する - SRI でハッシュ検証: 外部スクリプトに integrity 属性を付与して改ざんを検知する
- iframe サンドボックス: 外部ウィジェットを
sandbox属性付き iframe で隔離する - 定期的な監査: 読み込んでいるサードパーティスクリプトの一覧を管理し、不要なものを削除する
- Tag Manager の権限管理: Google Tag Manager 等のアクセス権を最小限にし、承認フローを設ける
