openviking-context
The skill contains an undocumented curl|bash remote script execution pattern for installing a Rust CLI component, combined with plaintext API key storage and shell RC modifications, creating a significant supply-chain and credential-theft attack surface.
scripts/install.sh line 65 executes 'curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash' without any user prompt or disclosure in SKILL.md. This classic 'curl|bash' pattern allows arbitrary code execution from a remote URL. While the URL points to a legitimate ByteDance (Volcengine) GitHub repository, the pattern is inherently dangerous and completely undeclared in documentation.
scripts/install.sh:65 Why this conclusion was reached
3/4 dimensions flagged2 undeclared or violating capabilities were inferred.
2 high-risk artifacts or egress signals were extracted.
The report includes 4 attack-chain steps and 4 severe findings.
2 dependency or supply-chain issues need attention.
Attack Chain
Entry · scripts/install.sh:65
supply_chain · scripts/install.sh:65
Escalation · scripts/setup-config.sh:85
Impact · ~/.openviking/ov.conf
What drove the risk score up
SKILL.md never mentions that install.sh will pipe curl output into bash for the Rust CLI (ov_cli). This is the highest-risk pattern in the skill.
setup-config.sh writes API keys in cleartext to ~/.openviking/ov.conf. No encryption, no masking, no secrets manager integration.
install.sh uses 'pip install openviking --upgrade --force-reinstall' without version pinning, and cargo install from a git URL.
install.sh silently appends OPENVIKING_CONFIG_FILE and OPENVIKING_CLI_CONFIG_FILE exports to ~/.zshrc or ~/.bashrc without clear disclosure.
Accesses ~/.openviking/ov.conf where API keys are stored in plaintext, creating credential theft surface if directory is compromised.
Most important evidence
Undeclared curl|bash remote script execution
scripts/install.sh line 65 executes 'curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash' without any user prompt or disclosure in SKILL.md. This classic 'curl|bash' pattern allows arbitrary code execution from a remote URL. While the URL points to a legitimate ByteDance (Volcengine) GitHub repository, the pattern is inherently dangerous and completely undeclared in documentation.
scripts/install.sh:65 Plaintext API key storage with no encryption or masking
scripts/setup-config.sh writes the user's API key in plaintext directly into ~/.openviking/ov.conf under the 'api_key' field. There is no encryption, no use of a secrets manager (keychain, envsecrets), and the key is readable by anyone with filesystem access. Additionally, the default placeholder 'YOUR_API_KEY_HERE' remains in the script as a hardcoded string reference.
scripts/setup-config.sh:85 Unpinned pip install with --force-reinstall allows package substitution
scripts/install.sh uses 'pip install openviking --upgrade --force-reinstall' without specifying a version. Combined with --force-reinstall, this means any version of the openviking package (including a maliciously substituted one from a compromised PyPI account or typosquatting) could be installed on every run.
scripts/install.sh:41 cargo install from git URL without commit hash pinning
scripts/install.sh uses 'cargo install --git https://github.com/volcengine/OpenViking ov_cli' without pinning to a specific commit, tag, or version. This allows a compromised or hijacked Git repository to serve different code than expected.
scripts/install.sh:63 Shell RC modification is completely undeclared in SKILL.md
scripts/install.sh silently appends 'export OPENVIKING_CONFIG_FILE=...' and 'export OPENVIKING_CLI_CONFIG_FILE=...' to ~/.zshrc or ~/.bashrc (lines 101-107). This is a form of persistence mechanism that modifies user shell configuration without explicit disclosure or user consent in the documentation.
scripts/install.sh:96 Server startup commands use nohup with PID tracking, could create orphaned processes
SKILL.md documents starting openviking-server and openviking.console.bootstrap with nohup and >> logfile redirects. No PID file management or systemd/service integration means processes can become orphaned or run indefinitely.
SKILL.md:94 Declared capability vs actual capability
SKILL.md documents filesystem writes for config and workspace scripts/install.sh:65 executes 'curl | bash' from remote URL; not declared in SKILL.md SKILL.md documents remote API calls for model providers install.sh:101-107 silently modifies ~/.zshrc/~/.bashrc with export statements No skill invocation capability found Suspicious artifacts and egress
curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/crates/ov_cli/install.sh | bash scripts/install.sh:65
API_KEY="YOUR_API_KEY_HERE" scripts/setup-config.sh:85
https://www.openviking.ai README.md:119
https://docs.openclaw.ai/tools/creating-skills README.md:120
https://clawhub.ai README.md:121
http://127.0.0.1:1933 SKILL.md:98
https://docs.litellm.ai/docs/providers SKILL.md:237
https://build.nvidia.com/ SKILL.md:238
https://ark.cn-beijing.volces.com/api/v3 scripts/setup-config.sh:48
https://integrate.api.nvidia.com/v1 scripts/setup-config.sh:56
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| openviking | * (unpinned) | pip | No | No version pinned; --upgrade --force-reinstall allows any version |
| ov_cli | * (unpinned) | cargo/git | No | cargo install from git without commit hash pinning |
File composition
scripts/demo-token-compare.py SKILL.md scripts/setup-config.sh scripts/install.sh README.md