CORS設定不備を初心者でも分かりやすく解説

あなたのWebAPIは、悪意あるサイトからも自由にアクセスできる状態になっていませんか?CORS設定不備は、「どのWebサイトからアクセスを許可するか」の設定ミスにより、本来守られるべきデータが外部から丸見えになってしまう危険な脆弱性です。Webサイト・APIの弱点の中でも、一つの設定ミスが大規模な情報流出につながる深刻な脅威です。本記事では、CORSがなぜ必要なのか、設定を間違えるとどんな被害が発生するのか、そして安全なクロスオリジン通信を実現するための実践的な対策について、専門知識がなくても理解できるように解説します。

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エラーや許可されているオリジンを確認することも重要です。

更新履歴

初稿公開

京都開発研究所

システム開発/サーバ構築・保守/技術研究

CMSの独自開発および各業務管理システム開発を行っており、 10年以上にわたり自社開発CMSにて作成してきた70,000以上のサイトを 自社で管理するサーバに保守管理する。