v1.0.3
What's Changed
- chore(deps): Bump actions/setup-node from 6 to 7 by @dependabot[bot] in #42
- chore(deps-dev): Bump @playwright/test from 1.61.1 to 1.62.0 by @dependabot[bot] in #44
- chore(deps): Bump anthropics/claude-code-action from 1.0.159 to 1.0.183 by @dependabot[bot] in #43
- fix: id_token の署名・iss・aud を検証してから管理者セッションを確立する (EcAuthDocs#101) by @nanasess in #49
- chore(release): v1.0.3 のバージョン更新とパッケージング修正 by @nanasess in #50
変更点
セキュリティ修正 (High)
管理画面のパスキーログインで、EcAuth から受け取った id_token を署名検証せずに sub を採用していた問題を修正しました(#49)。トークン応答を差し込める攻撃者が任意の sub で管理者になりすませる状態でした。
- JWKS による RS256 署名検証と、
iss/aud/exp/nbf/iatの検証を追加 algは RS256 のみ許可(alg=none/ HS256 への差し替えを拒否)expが欠落したトークンを拒否(従来は「存在する場合のみ」の判定で、削除されると無期限に通っていました)azpを検証し、別クライアント向けに発行されたトークンの使い回しを防止
あわせて、EcAuth URL のホストを許可リストで制限しました。EcAuth URL はトークン交換先かつ JWKS の取得先になるため、ここが攻撃者のホストに向くと署名検証ごと無効化されます。
- 既定は
ec-auth.ioのサブドメインのみ - 環境変数
ECAUTH_ALLOWED_HOSTS(カンマ区切り)で上書き可能 - 設定画面での保存時と、API 呼び出しの実行時の両方で検証
その他
⚠️ アップグレード時の注意
許可リストの導入により、ec-auth.io 配下に無いホストを EcAuth URL に設定している環境では、環境変数 ECAUTH_ALLOWED_HOSTS に完全なホスト名の追加が必要です。設定されていない場合、パスキーログインができなくなります。
ECAUTH_ALLOWED_HOSTS=.ec-auth.io,ecauth-example.your-domain.example
.example.com のような共有ホスティングのサフィックス指定は避けてください。そのサービスの全利用者を信頼することになり、本修正の意味が失われます。
Full Changelog: 1.0.2...1.0.3