🇰🇷 한글 설명
Parse Server의 로그인 엔드포인트가 존재하지 않는 사용자에 대해서는 즉시 응답하고, 존재하는 사용자에 대해서는 bcrypt 비교 지연으로 인한 응답 시간 차이가 발생합니다. 이 타이밍 차이를 악용하여 인증 없이 유효한 사용자명을 열거할 수 있습니다.
💡 쉬운 설명
Parse Server의 로그인이 사용자가 존재하지 않으면 빠르고, 존재하면 느린 응답을 보내기 때문에 공격자가 유효한 사용자명을 찾아낼 수 있습니다. 이를 통해 공격자는 추가적인 공격(비밀번호 추측 등)의 대상을 미리 파악할 수 있습니다.
🇺🇸 원문 (English)
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to 9.8.0-alpha.6 and 8.6.74, he login endpoint response time differs measurably depending on whether the submitted username or email exists in the database. When a user is not found, the server responds immediately. When a user exists but the password is wrong, a bcrypt comparison runs first, adding significant latency. This timing difference allows an unauthenticated attacker to enumerate valid usernames. This vulnerability is fixed in 9.8.0-alpha.6 and 8.6.74.
📍 영향받는 시스템
Parse Server 9.8.0-alpha.6 미만 및 8.6.74 미만 버전
⚔️ 공격 벡터
다수의 사용자명을 로그인 엔드포인트에 제출하고 응답 시간을 측정하여 존재하는 사용자명 확인
🛡️ 대응 방법
Parse Server를 9.8.0-alpha.6 이상 또는 8.6.74 이상으로 업그레이드
🔧 검증 코드
명령어 결과에 표시된 버전이 9.8.0-alpha.6 이상이거나 8.6.74 이상이면 패치됨, 그 이하면 취약
npm ls parse-server 2>/dev/null | grep parse-server