CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N
realtime-collaboration-platform プロジェクトには、Appwriteバックエンド設定におけるCORS設定ミスが存在していました。
サーバーは:
この組み合わせにより、攻撃者が制御するドメインは以下を実行できました:
これにより、以下の情報が漏洩しました:
バックエンドは Origin ヘッダーを適切に検証・制限できていませんでした。
不適切な設定:
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
または、任意のオリジンを動的に反映する設定。
これはCORSのセキュリティ原則に違反します。なぜなら:
ブラウザは、オリジンが明示的に信頼されている場合にのみ、認証情報付きクロスオリジンリクエストを許可します。
しかし、このアプリケーションは任意のオリジンを信頼しており、クロスオリジンデータ流出のベクトルを生み出していました。
| 影響領域 | 影響 |
|---|---|
| 機密性 | HIGH |
| 完全性 | None |
| 可用性 | None |
| スコープ | Changed |
攻撃者は以下を実行できました:
直接の特権は不要です。
これは、現実世界での悪用可能性を伴う強力なクライアントサイド攻撃となります。
fetch("https://target-appwrite-endpoint/v1/account", {
credentials: "include"
})
.then(res => res.json())
.then(data => {
console.log("Exfiltrated:", data);
});
被害者がログインしている場合、セッションCookieが自動的に含まれます。
緩いCORS設定のため、攻撃者はレスポンスを読み取ることができます。
適切な緩和策には以下が必要です:
正しい設定例:
Access-Control-Allow-Origin: https://trusted-domain.com
Access-Control-Allow-Credentials: true
または:
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: false
CORS設定ミス + 認証情報 = データ漏洩。
以下を決して許可しないでください:
* + credentials=true