GHSA-XX7M-69FF-9CRP: SurrealDB의 Poison Pill: 단일 문자열로 데이터베이스 충돌시키기

발행: (2026년 2월 13일 오전 10:10 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

개요

취약점 ID: GHSA-XX7M-69FF-9CRP
CVSS 점수: 6.5 (중간)
공개일: 2026-02-12

SurrealDB의 내장 JavaScript 엔진(QuickJS)에서 서비스 거부(DoS) 취약점이 존재합니다. 과도하게 큰 문자열 리터럴을 포함하는 스크립팅 함수를 정의하면, 컴파일 단계에서 널 포인터 역참조(CWE‑476) 가 발생합니다. 이는 Rust의 안전 보장을 우회하고 데이터베이스 프로세스가 세그멘테이션 폴트로 종료되게 합니다.

취약점 세부 정보

  • 구성 요소: QuickJS / rquickjs
  • 공격 벡터: 네트워크(인증 필요)
  • 영향: 프로세스 충돌(서비스 거부)
  • 익스플로잇 상태: 개념 증명(Proof‑of‑Concept) 제공

문제는 QuickJS가 컴파일 중 거대한 문자열 리터럴을 처리하는 방식에 있습니다. 공격자는 거대한 문자열을 생성하고 이를 JavaScript 엔진에 전달하는 맞춤형 SurrealQL 쿼리를 제출함으로써 즉시 충돌을 일으킬 수 있습니다.

영향을 받는 버전

제품영향을 받는 버전
SurrealDB Server (rquickjs < 0.11.0 사용)2026‑02‑02 이전 모든 빌드
SurrealDB Embedded (Rust crate)rquickjs < 0.11.0에 의존하는 버전들

해결 방안

의존성 업데이트

# Cargo.toml
dependencies:
- rquickjs = "0.6"
+ rquickjs = "0.11.0"
  • rquickjs ≥ 0.11.0을 포함하는 버전으로 SurrealDB를 업그레이드합니다.
  • 내장 스크립팅이 필요하지 않다면 비활성화합니다.
  • 실행 엔진에 도달하기 전에 과도하게 큰 문자열 리터럴을 차단하도록 쿼리 분석을 구현합니다.

운영 단계

  1. 현재 버전 확인
    surreal version
  2. 최신 Docker 이미지 가져오기
    docker pull surrealdb/surrealdb:latest
  3. 데이터베이스 인스턴스 재시작
  4. 수정 확인 – 테스트 환경에서 큰 문자열을 포함한 함수를 정의해 보세요. 이제 충돌 대신 오류가 반환되어야 합니다.

참고 자료

전체 보고서는 권고 웹사이트에서 인터랙티브 다이어그램 및 완전한 익스플로잇 분석과 함께 확인할 수 있습니다.

0 조회
Back to Blog

관련 글

더 보기 »