CORS設定不備とは?
CORS設定不備とは、Webブラウザのセキュリティ機能であるCORS(Cross-Origin Resource Sharing:オリジン間リソース共有)の設定が適切でないため、悪意あるWebサイトから重要なデータにアクセスされてしまう脆弱性です。Webサイト・APIの弱点の中でも設定ミスによる脅威の代表例で、「どのWebサイトからのアクセスを許可するか」の設定を緩くしすぎたり、「*」(すべて許可)にしてしまったりすることで発生します。本来は信頼できるサイトからのみアクセスを許可すべきAPIやデータが、攻撃者のサイトからも自由にアクセスできる状態になり、認証情報やプライベートデータが盗まれる危険があります。
CORS設定不備を簡単に言うと?
マンションのオートロックに例えると、住人の友人だけを通すはずのオートロックを「誰でも入れる」設定にしてしまったような状態です。普通、マンション(あなたのWebサイト)は、信頼できる訪問者(特定のWebサイト)だけに部屋の中の情報を見せます。でも、CORS設定を「*(全員OK)」にすると、悪意ある訪問者(攻撃者のサイト)も自由に入れて、住人の個人情報や貴重品(データ)を持ち出せてしまいます。さらに厄介なのは、住人(ユーザー)が知らないうちに、悪意ある訪問者が住人の名前を使って(認証情報付きで)部屋に入れてしまうこと。まるで、合鍵を全員に配ってしまったような危険な状態なのです。
CORS設定不備で発生する被害は?
CORS設定不備により、クロスサイトでのデータ窃取、認証トークンの悪用、内部APIの不正利用などが発生します。Webサイト・APIの弱点を突かれることで、ユーザーが悪意あるサイトを訪問しただけで、別サイトの個人情報が盗まれたり、勝手に操作されたりする可能性があります。特に、認証情報を含むリクエストを許可している場合、深刻なセキュリティ侵害につながります。
CORS設定不備で発生する直接的被害
- ユーザーデータの大量流出
悪意あるサイトを訪問したユーザーの、別サービスでの個人情報、購入履歴、メッセージなどが自動的に攻撃者に送信される
- 認証済みセッションの悪用
ログイン中のユーザーが攻撃サイトを開くと、そのユーザーの権限で勝手にAPIが実行され、データ変更や削除が行われる
- 内部APIエンドポイントの露出
本来公開すべきでない内部APIの構造や機能が外部から探索され、より深刻な攻撃の準備情報として使われる
CORS設定不備で発生する間接的被害
- フィッシング攻撃の成功率向上
正規サイトのデータを取得できることで、より本物らしい偽サイトが作られ、ユーザーが騙される可能性が高まる
- サプライチェーン攻撃への発展
パートナー企業のAPIにアクセスできることで、取引先全体に被害が波及し、信頼関係が崩壊する
- 規制違反と法的責任
クロスオリジンでの不適切なデータ共有により、GDPRや個人情報保護法に違反し、巨額の制裁金を科される
CORS設定不備の対策方法
CORS設定不備への対策は、オリジンの厳格な指定、認証情報を含むリクエストの制限、最小権限の原則の適用が基本となります。Webサイト・APIの弱点を補強するために、信頼できるドメインのみをホワイトリスト化、Access-Control-Allow-Credentialsの慎重な使用、動的オリジン検証の実装が重要です。また、定期的な設定監査、セキュリティヘッダーの包括的な管理により、設定ミスを防ぐことができます。
CORS設定不備の対策を簡単に言うと?
家の来客管理に例えると、まず玄関で「あなたは誰ですか?」と必ず確認し(オリジン検証)、信頼できる人のリスト(ホワイトリスト)に載っている人だけを家に入れます。「みんな入っていいよ」(*)という設定は絶対にしません。大切な部屋(認証が必要なAPI)には、たとえ知り合いでも特別な許可がないと入れないようにします(Credentials制限)。来客記録(ログ)をつけて、誰がいつ来たかを確認できるようにし、定期的に「この人はまだ信頼できるか?」と見直します(定期監査)。また、部屋ごとに入れる人を変える(エンドポイント別設定)など、きめ細かな管理をすることで、安全性と利便性のバランスを保つのです。
CORS設定不備に関連した攻撃手法
Webサイト・APIの弱点において、CORS設定不備と密接に関連する3つの攻撃手法を解説します。
- XSS(クロスサイトスクリプティング)
CORS設定不備とXSSが組み合わさると、攻撃の威力が倍増します。XSSで悪意あるスクリプトを埋め込み、CORS設定不備を利用して他サイトのデータを盗むという連携攻撃が可能になります。両者は「クロスサイト」という共通点を持つ危険な組み合わせです。
- CSRF(Cross-Site Request Forgery)
CORS設定不備は、CSRFと似た攻撃を可能にしますが、より危険です。CSRFは「書き込み」攻撃が中心ですが、CORS設定不備では「読み取り」も可能になり、データの窃取まで行えてしまいます。
- SSRF(Server-Side Request Forgery)
CORS設定不備により取得した内部APIの情報を使って、SSRF攻撃の精度を高めることができます。クライアント側(CORS)とサーバー側(SSRF)の両面から攻撃することで、システム全体の侵害が可能になります。
CORS設定不備のよくある質問
公開API で認証不要なデータの場合は問題ありませんが、認証が必要なAPIや個人情報を扱う場合は絶対に避けるべきです。特にAccess-Control-Allow-Credentials: true との併用は致命的です。
いいえ、攻撃者が DNS Rebinding などの手法を使って localhost や内部ドメインになりすます可能性があります。開発環境でも本番と同じセキュリティレベルを保つべきです。
プリフライトリクエストは一定の保護を提供しますが、単純なGETリクエストはプリフライト不要で実行されます。また、プリフライトの応答設定も適切でないと意味がありません。
危険です。サブドメインテイクオーバーの脆弱性があると、攻撃者がサブドメインを乗っ取ってCORS制限を回避できます。サブドメインも個別に検証すべきです。
SPA(シングルページアプリケーション)では、APIサーバーのドメインと厳密に一致するオリジンのみを許可し、認証にはSameSite Cookieや適切なトークン管理を併用することが重要です。
異なるドメインからcurlやPostmanでリクエストを送信し、応答ヘッダーを確認します。また、ブラウザの開発者ツールでCORSエラーや許可されているオリジンを確認することも重要です。
更新履歴
- 初稿公開