🇰🇷 한글 설명
Parse Server의 LiveQuery 구독 기능에서 인증된 사용자가 protectedFields 클래스 수준 권한 설정을 우회할 수 있는 취약점입니다. 공격자가 배열 대신 숫자 키와 length 속성을 가진 '배열 유사 객체'를 사용하여 $or, $and, $nor 연산자를 전송하면 보호된 필드에 접근할 수 있습니다. 이 취약점은 구독 이벤트 발생 여부를 통해 보호된 필드의 값을 추론하는 바이너리 오라클 공격으로 이어질 수 있습니다.
💡 쉬운 설명
권한이 있는 사용자가 특수한 형태의 데이터를 보내 시스템의 보안 규칙을 속이고 숨겨진 정보를 알아낼 수 있는 문제입니다. 마치 질문에 대한 '예/아니오' 답변을 통해 금지된 정보를 하나씩 알아내는 것과 같습니다.
🇺🇸 원문 (English)
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to versions 8.6.70 and 9.7.0-alpha.18, an authenticated user with find class-level permission can bypass the protectedFields class-level permission setting on LiveQuery subscriptions. By sending a subscription with a $or, $and, or $nor operator value as a plain object with numeric keys and a length property (an "array-like" object) instead of an array, the protected-field guard is bypassed. The subscription event firing acts as a binary oracle, allowing the attacker to infer whether a protected field matches a given test value. This issue has been patched in versions 8.6.70 and 9.7.0-alpha.18.
📍 영향받는 시스템
Parse Server 8.6.70 미만 및 9.7.0-alpha.18 미만 버전
⚔️ 공격 벡터
배열 대신 숫자 키와 length 속성을 가진 배열 유사 객체를 이용한 LiveQuery 구독 요청
🛡️ 대응 방법
Parse Server를 8.6.70 또는 9.7.0-alpha.18 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 parse-server의 버전이 8.6.70 또는 9.7.0-alpha.18 이상인지 확인하십시오.