🇰🇷 한글 설명
Parse Server의 코드 기반 인증 어댑터에서 로그인 시 외부 제공자의 인증 코드를 검증하지 않는 취약점이 발견되었습니다. 이로 인해 공격자는 검증되지 않은 외부 계정 정보를 자신의 계정에 연결하거나, 피해자의 계정을 미리 탈취할 수 있습니다.
💡 쉬운 설명
로그인할 때 진짜 그 사람인지 확인하는 과정을 건너뛰는 허점이 있습니다. 이를 통해 공격자가 남의 계정인 것처럼 속이거나, 나중에 피해자가 로그인할 때 공격자의 계정으로 접속되게 만들 수 있습니다.
🇺🇸 원문 (English)
Parse Server is an open-source backend server. In versions >= 9.0.0 < 9.10.1-alpha.10 and >= 8.0.2 < 8.6.91, the code-based authentication adapters (GitHub, Google Play Games, Instagram, LINE, LinkedIn, Microsoft, QQ, Spotify, WeChat, Weibo) verify the client's authorization code with the external provider on signup and on provider linking, but not when authentication data is supplied together with a username and password on the login endpoint. As a result, a low-privileged authenticated user can attach an arbitrary, unverified provider identity to their own account without the provider ever being contacted, spoofing an external identity toward application logic that trusts the linked provider ID. An attacker can also pre-hijack accounts: by claiming the provider ID of a victim who has not yet linked that provider, the victim's later legitimate sign-in with that provider resolves to the attacker's account. Only deployments configuring one of the affected code-based auth adapters are impacted. Versions 9.10.1-alpha.10 and 8.6.91 fix the issue by running the adapter's credential verification on the login and challenge endpoints and rejecting a provider identity already linked to another user. As a workaround, disable the affected code-based auth adapters.
📍 영향받는 시스템
Parse Server versions >= 9.0.0 < 9.10.1-alpha.10 and >= 8.0.2 < 8.6.91
⚔️ 공격 벡터
로그인 엔드포인트에 사용자 이름과 비밀번호와 함께 검증되지 않은 외부 제공자 ID를 전송하여 계정을 연결함
🛡️ 대응 방법
Parse Server를 9.10.1-alpha.10 또는 8.6.91 이상의 버전으로 업데이트하거나, 영향받는 인증 어댑터를 비활성화함
🔧 검증 코드
출력된 버전이 취약한 범위(9.0.0~9.10.1-alpha.10 미만 또는 8.0.2~8.6.91 미만)에 해당하면 취약한 상태입니다.
npm list parse-server | grep -E 'parse-server@(9\.[0-9]|8\.[0-8])'