🇰🇷 한글 설명
SurrealDB 3.1.0 미만 버전에서 SELECT 문 등의 WHERE 절이 권한 제한보다 먼저 실행되는 순서 결함이 발견되었습니다. 인증된 사용자는 이 취약점을 이용해 테이블 수준의 권한 검사를 우회하고 데이터베이스 내 모든 테이블의 전체 내용을 읽을 수 있습니다.
💡 쉬운 설명
데이터를 보여주기 전에 '누가 볼 수 있는지'를 먼저 확인해야 하는데, 순서가 바뀌어 데이터 내용을 먼저 확인해버리는 문제입니다. 이로 인해 권한이 없는 사용자도 몰래 데이터베이스의 모든 정보를 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
SurrealDB before 3.1.0 evaluates user-supplied WHERE clauses in SELECT statements (and SET/MERGE/CONTENT/PATCH clauses in UPDATE, UPSERT, INSERT ON DUPLICATE KEY UPDATE, and RELATE update-variant statements) against full record data before enforcing PERMISSIONS FOR SELECT WHERE restrictions. An authenticated user — including Record and Scope users — can exploit this ordering flaw to read the full contents of any table in the database they are authenticated against, bypassing table-level permission checks. Exfiltration is most direct when scripting functions are enabled (--allow-scripting), but is also possible via SurrealQL's THROW statement and timing-based side channels without scripting. The vulnerability is confined to the attacker's current database and does not cross namespace or database isolation boundaries.
📍 영향받는 시스템
SurrealDB versions before 3.1.0
⚔️ 공격 벡터
인증된 사용자가 조작된 WHERE 절을 포함한 SurrealQL 쿼리를 실행하여 권한 검사를 우회하고 데이터를 탈취함
🛡️ 대응 방법
SurrealDB를 3.1.0 버전 이상으로 즉시 업데이트하십시오.
🔧 검증 코드
명령어 결과가 'Vulnerable'로 나오거나 버전이 3.1.0 미만이면 취약한 상태입니다.
surreal version | grep -E '3\.[1-9]' || echo 'Vulnerable'