🇰🇷 한글 설명
Arc 시계열 데이터베이스의 SQL 검증 로직 결함으로 인해, 특정 I/O 함수를 이용한 비정상적인 파일 접근이 가능합니다. 기존의 정규식 기반 차단 방식이 DuckDB의 다양한 I/O 함수를 모두 커버하지 못해 발생한 보안 취약점입니다.
💡 쉬운 설명
데이터베이스가 허용되지 않은 파일을 읽을 수 있는 구멍이 발견되었습니다. 공격자가 이 구멍을 통해 시스템 내부의 민감한 파일을 몰래 읽어갈 수 있습니다.
🇺🇸 원문 (English)
Arc is an open, SQL-native time-series database for telemetry. Prior to version 26.06.1, Arc's user-SQL validator (`internal/api/query.go:ValidateSQLRequest`) blocked only `read_parquet(` and `arc_partition_agg(` via regex denylist. The broader DuckDB I/O function family — `read_csv_auto`, `read_csv`, `read_json`, `read_json_auto`, `read_text`, `read_blob`, `glob`, `parquet_metadata`, `parquet_schema`, `read_xlsx`, etc. — was not blocked. RBAC table-reference extraction inspected only `FROM`/`JOIN` clauses, so scalar table functions in the `SELECT` list slipped past both layers. This is fixed in 2026.06.1 via a structural sandbox at the DuckDB layer. After lockdown, DuckDB refuses to open any file outside the allowlist and refuses further `INSTALL`/`LOAD`. Already-loaded extensions remain callable. Some workarounds are available. Restrict API access to known-trusted networks via firewall rules or, as a temporary mitigation, add `read_csv*`/`read_json*`/`glob` etc. to `dangerousSQLPattern` in `internal/api/query.go`.
📍 영향받는 시스템
Arc database versions prior to 26.06.1
⚔️ 공격 벡터
SELECT 절에 차단되지 않은 DuckDB I/O 함수(read_csv, glob 등)를 포함한 SQL 쿼리를 실행하여 임의 파일 접근
🛡️ 대응 방법
Arc를 26.06.1 버전 이상으로 업데이트하거나, 방화벽을 통해 API 접근을 제한하고 소스 코드의 dangerousSQLPattern에 위험 함수를 추가합니다.
🔧 검증 코드
명령어 결과에 26.06.1 이상의 버전이 출력되면 취약점이 해결된 상태입니다.
arc --version 2>/dev/null | grep -E '26.06.1'