Skip to content

v1.0.3

Choose a tag to compare

@nanasess nanasess released this 06 Aug 08:44
· 29 commits to main since this release
37f7ea3

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 呼び出しの実行時の両方で検証

その他

  • 配布パッケージから開発用ファイル(phpunit.xml.dist)を除外(#50)
  • 依存パッケージの更新(#42, #43, #44)

⚠️ アップグレード時の注意

許可リストの導入により、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