Outline、SSO連携でアカウント乗っ取りの恐れ 1.11.0で修正
Summary
社内wikiのOutlineに、複数のログイン方式(SSO/OIDC)を併用していると、別の方式からのログインで他人のアカウントに入れてしまう弱点が見つかりました。自社でOutlineを運用していて、Googleなど複数のログイン方式を有効にしている組織が影響を受けます。修正版は1.11.0なので、該当する場合は更新し、ログイン方式の設定を確認してください。
AI summary
Written by an external AI model and may contain mistakes. Check the original description and references below before acting on it.
社内wikiのOutlineに、複数のログイン方式(SSO/OIDC)を併用していると、別の方式からのログインで他人のアカウントに入れてしまう弱点が見つかりました。自社でOutlineを運用していて、Googleなど複数のログイン方式を有効にしている組織が影響を受けます。修正版は1.11.0なので、該当する場合は更新し、ログイン方式の設定を確認してください。
Affected packages
| Ecosystem | Package | Affected | Fixed |
|---|---|---|---|
| other | Outline |
< 1.11.0 |
1.11.0 |
Original description The description as published by the source.
Vulnerability Details
File: server/commands/userProvisioner.ts
Line: 76-114
CWE: CWE-287 — Improper Authentication
Severity: Critical
CVSS: 9.1 — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Root Cause
userProvisioner() looks up an existing UserAuthentication record purely by providerId (the external user ID reported by whichever OAuth/OIDC provider is being used, e.g. a Google sub claim, a Slack member ID, a Discord snowflake, or a custom OIDC sub) and team:
const auth = authentication
? await UserAuthentication.findOne({
where: { providerId: String(authentication.providerId) },
include: [{ model: User, as: "user", where: { teamId }, required: true }],
})
: undefined;
if (auth && authentication) {
const { user } = auth;
// We found an authentication record that matches the user id, but it's
// associated with a different authentication provider... Auto-migrate to the new provider.
if (auth.authenticationProviderId !== authenticationProviderId) {
await auth.update({ authenticationProviderId });
}
if (user) {
if (emailVerified === true) {
await user.update({ email });
}
await auth.update(rest);
return { user, authentication: auth, isNewUser: false };
}
}
providerId values are only guaranteed unique within their own provider's namespace — nothing in the code or database guarantees uniqueness across different provider types. I confirmed directly: the actual DB…
Source: GitHub Repository Security Advisories (Game のスタック) GitHub Advisory OSV
References
- GITHUB_REPO_ADVISORY outline/outline