🇰🇷 한글 설명
Parse Server의 LiveQuery 구독 기능에서 발생하는 취약점으로, 공격자가 보호된 필드에 대한 WHERE 절을 사용하여 해당 필드의 값을 추론할 수 있습니다. 점 표기법이나 정규식을 활용해 조건에 맞는 객체가 전달되는지 여부를 확인함으로써 보호된 데이터를 유출하는 불리언 오라클 공격이 가능합니다.
💡 쉬운 설명
데이터베이스의 비밀번호처럼 숨겨져 있어야 할 정보를 직접 보지 않고도 질문을 던져 맞는지 틀린지 확인하는 방식으로 알아낼 수 있는 문제입니다. 특정 조건에 맞는 데이터가 나타나는지 관찰함으로써 숨겨진 값을 하나씩 찾아낼 수 있습니다.
🇺🇸 원문 (English)
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to 9.6.0-alpha.9 and 8.6.35, an attacker can exploit LiveQuery subscriptions to infer the values of protected fields without directly receiving them. By subscribing with a WHERE clause that references a protected field (including via dot-notation or $regex), the attacker can observe whether LiveQuery events are delivered for matching objects. This creates a boolean oracle that leaks protected field values. The attack affects any class that has both protectedFields configured in Class-Level Permissions and LiveQuery enabled. This vulnerability is fixed in 9.6.0-alpha.9 and 8.6.35.
📍 영향받는 시스템
Parse Server 9.6.0-alpha.9 및 8.6.35 미만 버전
⚔️ 공격 벡터
LiveQuery 구독 시 보호된 필드를 참조하는 WHERE 절(dot-notation 또는 $regex)을 사용하여 데이터 노출 여부 확인
🛡️ 대응 방법
Parse Server를 9.6.0-alpha.9 또는 8.6.35 이상의 버전으로 업데이트
🔧 검증 코드
출력된 parse-server의 버전이 9.6.0-alpha.9 또는 8.6.35보다 낮은지 확인