CVE-2026-47735: Github.com/basekick labs/arc Arc Has An Authenticated Arbitrary Vulnerability
HIGHCVE-2026-47735 is a HIGH arc has an authenticated arbitrary vulnerability (CWE-918: Server-Side Request Forgery (SSRF)) affecting Github.com/basekick labs/arc libraries in the Go ecosystem. The issue involves arc has an authenticated arbitrary local-file read via duckdb i/o functions that bypasses rbac table-level checks. Remediation is available by upgrading affected packages to version 0.0.0-20260520141557-91bdc29d1a02.
CVE-2026-47735 at a Glance
How to Fix CVE-2026-47735
To remediate this vulnerability, upgrade all affected Github.com/basekick labs/arc dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade github.com/basekick-labs/arc to 0.0.0-20260520141557-91bdc29d1a02
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for github.com/basekick-labs/arc
How to Check if You Are Affected
To determine whether your application is affected by CVE-2026-47735, inspect your project dependencies for Github.com/basekick labs/arc:
inspect dependencies for github.com/basekick-labs/arc
Analyze the terminal output to locate any version of Github.com/basekick labs/arc in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.0.0-20260520141557-91bdc29d1a02), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-918: Server-Side Request Forgery (SSRF), where the web server receives a url or similar request from an upstream component and retrieves the contents of this url, but it does not sufficiently ensure that the request is being sent to the expected destination. In Github.com/basekick labs/arc, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-47735 Affected Github.com/basekick labs/arc Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
github.com/basekick-labs/arc
|
Go |
< 0.0.0-20260520141557-91bdc29d1a02
|
0.0.0-20260520141557-91bdc29d1a02
|
References
Frequently Asked Questions
What is CVE-2026-47735?
Which Github.com/basekick labs/arc versions are affected?
What version fixes CVE-2026-47735?
Is github.com/basekick-labs/arc affected?
What CWE is associated with CVE-2026-47735?
How can I check Go dependencies for CVE-2026-47735?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-p2j4-c4g6-rpf5",
"modified" : "2026-06-08T23:51:19Z",
"published" : "2026-06-08T23:51:19Z",
"aliases" : [ "CVE-2026-47735" ],
"summary" : "Arc has an authenticated arbitrary local-file read via DuckDB I/O functions that bypasses RBAC table-level checks",
"details" : "### Summary\n\nArc'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.\n\n### Impact\n\nAny authenticated user, including a token with `permissions: []`, can read arbitrary local files via:\n\n```\nPOST /api/v1/query\nAuthorization: Bearer <token>\n{\"sql\": \"SELECT * FROM read_csv_auto('/etc/passwd', header=false, columns={'l':'VARCHAR'}) LIMIT 5\"}\n```\n\nConfirmed reachable targets:\n\n- `auth.db` — bcrypt hashes for every API token, plus legacy SHA-256 rows.\n- `arc.toml` — S3 secrets, TLS keys.\n- `/proc/self/environ` — environment-variable secrets.\n- Cross-tenant Parquet files — bypasses RBAC because the tenant scope is enforced at the table layer, not on raw file paths.\n- SSRF when `httpfs` is loaded (any S3-backed deployment) — `read_csv_auto('http://169.254.169.254/latest/meta-data/...')` reaches instance metadata IPs.\n\n### Patches\n\nFixed in 2026.06.1 (PR #442) via a structural sandbox at the DuckDB layer:\n\n1. `SET GLOBAL allowed_directories = [...]` enumerates Arc's legitimate filesystem prefixes (storage roots + tier prefixes + import upload dir + compaction temp).\n2. `SET GLOBAL enable_external_access = false` (one-way at runtime).\n3. Verified by reading back the flag.\n\nAfter lockdown, DuckDB refuses to open any file outside the allowlist and refuses further `INSTALL`/`LOAD`. Already-loaded extensions remain callable.\n\n### Workarounds\n\n- Restrict API access to known-trusted networks via firewall rules.\n- Temporary mitigation: add `read_csv*`/`read_json*`/`glob` etc. to `dangerousSQLPattern` in `internal/api/query.go` pending 2026.06.1.\n\n### Credits\n\nReported by Alex Manson ([@NeuroWinter](https://github.com/NeuroWinter), https://neurowinter.com/) on 2026-05-19.",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/basekick-labs/arc"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "0.0.0-20260520141557-91bdc29d1a02"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/Basekick-Labs/arc/security/advisories/GHSA-p2j4-c4g6-rpf5"
}, {
"type" : "WEB",
"url" : "https://github.com/Basekick-Labs/arc/pull/442"
}, {
"type" : "WEB",
"url" : "https://github.com/Basekick-Labs/arc/commit/91bdc29d1a02178ccf8c66375eccf85203108dfb"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/Basekick-Labs/arc"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-200", "CWE-22", "CWE-918" ],
"severity" : "HIGH",
"github_reviewed" : true,
"github_reviewed_at" : "2026-06-08T23:51:19Z",
"nvd_published_at" : null
}
}