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 为什么得出这个结论
3/4 个维度触发发现 2 项声明之外的能力或越权行为。
提取到 2 个高危 IOC 或外联信号。
报告包含 4 步攻击链,另有 4 项高危或严重发现。
发现 2 项需要关注的依赖或供应链线索。
攻击链
初始入口 · scripts/install.sh:65
supply_chain · scripts/install.sh:65
权限提升 · scripts/setup-config.sh:85
最终危害 · ~/.openviking/ov.conf
风险分是怎么被拉高的
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.
最关键的证据
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 声明能力 vs 实际能力
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 可疑产物与外联
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
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| openviking | * (unpinned) | pip | 否 | No version pinned; --upgrade --force-reinstall allows any version |
| ov_cli | * (unpinned) | cargo/git | 否 | cargo install from git without commit hash pinning |
文件构成
scripts/demo-token-compare.py SKILL.md scripts/setup-config.sh scripts/install.sh README.md