🇰🇷 한글 설명
PostgreSQL을 사용하는 Parse Server 환경에서 마스터 키를 가진 공격자가 조작된 필드 이름을 통해 SQL 인젝션을 수행할 수 있는 취약점입니다. $regex 쿼리 연산자의 필드 이름이 매개변수화되지 않은 문자열 보간 방식으로 처리되어 데이터베이스 수준에서 쿼리 조작이 가능합니다.
💡 쉬운 설명
데이터베이스를 사용하는 특정 서버 프로그램에서 공격자가 명령어를 몰래 끼워 넣어 데이터를 조작할 수 있는 문제입니다. 마스터 권한을 가진 사람이 특수한 검색 조건을 사용하면 데이터베이스의 보안을 우회할 수 있습니다.
🇺🇸 원문 (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.10 and 8.6.36, an attacker with access to the master key can inject malicious SQL via crafted field names used in query constraints when Parse Server is configured with PostgreSQL as the database. The field name in a $regex query operator is passed to PostgreSQL using unparameterized string interpolation, allowing the attacker to manipulate the SQL query. While the master key controls what can be done through the Parse Server abstraction layer, this SQL injection bypasses Parse Server entirely and operates at the database level. This vulnerability only affects Parse Server deployments using PostgreSQL. This vulnerability is fixed in 9.6.0-alpha.10 and 8.6.36.
📍 영향받는 시스템
Parse Server 9.6.0-alpha.10 및 8.6.36 미만 버전 (PostgreSQL 사용 시)
⚔️ 공격 벡터
마스터 키를 이용해 $regex 쿼리 연산자의 필드 이름에 악성 SQL 구문을 삽입하여 공격
🛡️ 대응 방법
Parse Server를 9.6.0-alpha.10 또는 8.6.36 이상의 버전으로 업데이트
🔧 검증 코드
명령어 결과에 보안 패치가 적용된 버전(9.6.0-alpha.10 또는 8.6.36 이상)이 표시되는지 확인합니다.
npm list parse-server | grep -E 'parse-server@(9\.6\.0-alpha\.10|8\.6\.36)'