CVE-2026-55098 json
Arc: DuckDB I/O aliases bypass database RBAC after CVE-2026-47735
published 2026-10-30 9 d ago modified 2026-11-05 3 d ago also GHSA-93cm-2v4m-c56c , GO-2026-6913 , EUVD-2026-114443
- cvss
- 6.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 25%
- public exploits
- 0
- none known
Summary
Arc is an open, SQL-native time-series database for telemetry. Prior to the repository-verified 26.06.2 repair, the remediation of `CVE-2026-47735` leaves a cross-database authorization bypass through DuckDB table-valued I/O functions. In `internal/database/sandbox.go`, `allowed_directories` uses `cfg.LocalStorageRoot`, configured by `storage.local_path`, while `enable_external_access=false` blocks access outside that entire multi-tenant root. `GetStoragePath` in `internal/storage/util.go` stores all databases beneath it. In `internal/api/query.go`, `extractTableReferences` skips names followed by an opening parenthesis and `checkQueryPermissions` allows queries with no extracted table references, including tokens with `permissions: []`. The `userSQLReadParquetPattern` denylist catches literal `read_parquet(` and the earlier protection also blocks `arc_partition_agg(`, but misses the `parquet_scan` alias and `glob`, `parquet_metadata`, `parquet_schema`, `read_blob`, `read_csv_auto`, `read_json` and `read_text`. A request to `POST /api/v1/query` using these unblocked functions passes `ValidateSQLRequest` and `convertSQLToStoragePaths` without tenant authorization, allowing reads and enumeration of other databases' time-series data, schema and per-column value-range statistics within the allowlisted root. The sandbox still blocks out-of-root OS files and HTTP SSRF, and the sibling SQLite token database outside the root is not exposed by this mechanism. The earlier 26.06.1 remediation does not comprehensively deny these I/O functions. Repository tag 26.06.2 contains the I/O-function repair and supplies the provisional remediation boundary; conflicting advisory affected-version statements require curator adjudication.
Patch / fix
- go github.com/basekick-labs/arc 0.0.0-20260610131716-5dc8f53b70a3
- github.com/Basekick-Labs/arc@5dc8f53 commit
- github.com/Basekick-Labs/arc#495 pull request
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 6 d ago
Exploit prediction
0.32% chance of exploitation in the next 30 days, higher than 25% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/Basekick-Labs/arc/security/advisories/GHSA-93cm-2v4m-c56c referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N |
| GitHub | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| go | github.com/basekick-labs/arc | <0.0.0-20260610131716-5dc8f53b70a3 |
0.0.0-20260610131716-5dc8f53b70a3 |
Affected products
- Basekick-Labs arc
Classification
References
-
github.com
/Basekick-Labs/arc/pull/495
web
-
github.com
/Basekick-Labs/arc/commit/5dc8f53b70a3871b16b0cebf328f07c578af7a45
web, patch
-
github.com
/Basekick-Labs/arc/security/advisories/GHSA-93cm-2v4m-c56c
exploit, web, advisory
-
github.com
/Basekick-Labs/arc/tree/v26.06.2
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-55098
advisory
-
github.com
/Basekick-Labs/arc
package
Sources
- CVE List CVE-2026-55098
- GitHub Advisory GHSA-93cm-2v4m-c56c
- NVD CVE-2026-55098
- OSV GO-2026-6913
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.