🇰🇷 한글 설명
Parse Server 8.5.0-alpha.5 이전 버전에서 마스터 키 인증 없이 MongoDB explain() 메서드를 실행할 수 있어 데이터베이스 스키마, 인덱스 설정, 필드명 등이 노출됩니다. 8.5.0-alpha.5부터 databaseOptions.allowPublicExplain 옵션으로 제한 가능하며, 향후 메이저 버전에서 기본값이 false로 변경될 예정입니다.
💡 쉬운 설명
Parse Server의 보안 인증 없이 데이터베이스 구조와 쿼리 최적화 정보를 노출시키는 결함입니다. 공격자가 이 정보를 악용하여 데이터베이스 공격을 계획할 수 있습니다.
🇺🇸 원문 (English)
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. The MongoDB `explain()` method provides detailed information about query execution plans, including index usage, collection scanning behavior, and performance metrics. Prior to version 8.5.0-alpha.5, Parse Server permits any client to execute explain queries without requiring the master key. This exposes database schema structure and field names, index configurations and query optimization details, query execution statistics and performance metrics, and potential attack vectors for database performance exploitation. In version 8.5.0-alpha.5, a new `databaseOptions.allowPublicExplain` configuration option has been introduced that allows to restrict `explain` queries to the master key. The option defaults to `true` for now to avoid a breaking change in production systems that depends on public `explain` availability. In addition, a security warning is logged when the option is not explicitly set, or set to `true`. In a future major release of Parse Server, the default will change to `false`. As a workaround, implement middleware to block explain queries from non-master-key requests, or monitor and alert on explain query usage in production environments.
📍 영향받는 시스템
Parse Server < 8.5.0-alpha.5
⚔️ 공격 벡터
인증 없이 explain() 메서드를 호출하여 데이터베이스 쿼리 실행 계획 및 스키마 정보 조회
🛡️ 대응 방법
Parse Server를 8.5.0-alpha.5 이상으로 업그레이드하고 databaseOptions.allowPublicExplain을 false로 설정
🔧 검증 코드
parse-server 버전이 8.5.0-alpha.5 이상이면 안전하며, 더 낮은 버전이거나 설치되지 않았으면 조치 필요
npm list parse-server 2>/dev/null | grep parse-server