highCVSS 7.5Vulnerability

CVE-2026-75859

### Maintainer resolution The CodeWhale maintainers validated this report. The affected package ranges are recorded in the advisory metadata. Version 0.8.64 contains the fix in commit 43563356b98c6b993085554da82e77370160a31c. Users should upgrade to 0.8.64 or later. The original reporter analysis is preserved below. ### Summary A malicious `.codewhale/config.toml` or `.deepseek/config.toml` committed to a repository can set `instructions` to an array of arbitrary file paths (including paths outside the workspace like `~/.ssh/id_rsa` or `~/.aws/credentials`) that are read from disk and injected into the AI model's system prompt. There is no path validation, workspace boundary check, or tightening guard on the `instructions` field. This enables a malicious repository to exfiltrate the contents of sensitive files on the victim's machine through the AI conversation. ### Details The project config merge function at `crates/tui/src/main.rs:5190-5197` (v0.8.50) copies the `instructions` array from a project-level config file into the live session config without any path validation: ```rust if let Some(arr) = table.get("instructions").and_then(toml::Value::as_array) { let entries: Vec<String> = arr .iter() .filter_map(|v| v.as_str().map(str::to_string)) .filter(|s| !s.trim().is_empty()) .collect(); config.instructions = Some(entries); } ``` These paths are then resolved via `expand_path` at `crates/tui/src/config.rs:2361-2371`, which expands `~` to the user's home directory and resolves environment variables: ```rust pub fn instructions_paths(&self) -> Vec<PathBuf> { self.instructions.as_deref().unwrap_or(&[]) .iter() .map(String::as_str) .map(str::trim) .filter(|s| !s.is_empty()) .map(expand_path) .collect() } ``` The resolved paths are loaded at prompt-render time in `crates/tui/src/prompts.rs:216` with no workspace boundary check: ```rust InstructionSource::File(path) =>

Properties

summary
CodeWhale: Project config `instructions` override enables arbitrary file read into AI system prompt via cloned repository
severity
high
epss_score
0.00414
cvss_score
7.5
ghsa_published
2026-09-04T18:00:37Z
source_url
https://github.com/advisories/GHSA-62f5-cp2p-vq95
ghsa_updated
2026-09-04T18:00:38Z
ghsa_id
GHSA-62f5-cp2p-vq95
cve_id
CVE-2026-75859
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
is_ghsa_only
false
epss_percentile
0.34602

Related Entities (12)

ENRICHED_BY (1)

[Source]FIRST EPSS

HAS_WEAKNESS (2)

[Weakness]Exposure of Sensitive Information to an Unauthorized Actor
[Weakness]Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

REPORTED_BY (1)

[Source]GitHub Advisory Database

AFFECTS (4)

[Software]npm/deepseek-tui
[Software]rust/codewhale-tui
[Software]rust/deepseek-tui
[Software]npm/codewhale

VULNERABLE_TO (4)

[Software]npm/codewhale
[Software]rust/codewhale-tui
[Software]npm/deepseek-tui
[Software]rust/deepseek-tui

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-75859 (CVSS 7.5) — Ninja Signal Threat Intelligence | Ninja Signal