T08 · Insecure Dependencies
- Location
SKILL.md:13- Finding
Unpinned Global Installation of a Mutable Third-Party CLI
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This DeepMiner helper is mostly purpose-aligned, but it installs global software, stores credentials or raw results, and can forward full task data through background/session channels without enough scoping.
Review this skill before installing. Use it only with a trusted DeepMiner account and a least-privilege access key, avoid sending sensitive prompts or files unless intended, prefer a pinned/local CLI install, and do not run the bundled polling scripts with shared or arbitrary status paths or unverified destination sessions.
SKILL.md:13Unpinned Global Installation of a Mutable Third-Party CLI
SKILL.md:73Predictable Shared Temporary Cache Allows Symlink Attacks and Version Poisoning
scripts/dm-poll.sh:15Caller-Controlled Status Paths Permit File Clobbering and Sensitive Result Exposure
scripts/dm-poll-notify.sh:17Unvalidated Destination Enables Cross-Session Disclosure of Complete DeepMiner Results
This skill claims to be a general DM interaction primer, but the content goes further by directing active thread polling, result parsing, direct user notification, and state-specific control logic. Hidden operational behavior in a broadly triggered skill can cause users or calling agents to invoke capabilities they did not intend, including background monitoring and broad result disclosure.
This skill claims to be a general DM interaction primer, but the content goes further by directing active thread polling, result parsing, direct user notification, and state-specific control logic. Hidden operational behavior in a broadly triggered skill can cause users or calling agents to invoke capabilities they did not intend, including background monitoring and broad result disclosure.
The trigger language is extremely broad and instructs that any mention of DM/DeepMiner must load this skill first. Overbroad activation increases the likelihood that the skill will run in contexts where its installation, polling, forwarding, or background-session behaviors are unnecessary or unsafe.
The documentation instructs installation of a global package and initialization of credentials on the host, expanding from task guidance into host modification and secret handling. In an agent setting, this can lead to unnecessary software changes, persistence, and exposure of access keys without user awareness or proper safeguards.
The skill tells operators to initialize the CLI with an access key but provides no safety guidance on secret entry, storage, redaction, or output handling. In agent-operated terminals, this can expose credentials through command history, logs, screenshots, or downstream message forwarding.
The mandatory version-check workflow requires contacting an external site and caching data locally before every use, which exceeds the stated DM interaction purpose. This introduces an unnecessary outbound network dependency and trust chain that could be abused to influence behavior, leak usage patterns, or fail unpredictably in restricted environments.
The skill mandates verbatim forwarding of all user prompts to DM and verbatim return of all DM last_messages, forbidding summarization or filtering. That creates a direct natural-language exfiltration path for sensitive user data, internal instructions, secrets, and unreviewed third-party output, with no minimization or policy checks.
The skill gives conflicting instructions about whether subagents should directly message users or only emit output for the main agent to forward. In security-sensitive workflows, contradictory orchestration rules can cause duplicated, misrouted, or unintended disclosures, especially when results may contain sensitive content or file links.
The polling subagent is instructed to traverse all messages and emit all content and attachment links verbatim. This can disclose sensitive conversation history, internal tool outputs, and authenticated file URLs beyond the minimum needed for task completion, especially because the subagent operates automatically in the background.
Repeated instructions to always present original DM output and files establish a blanket disclosure policy with no sensitivity checks or contextual controls. In the context of a broadly triggered automation skill, this materially increases the risk of leaking confidential results, attachments, or access-controlled URLs to the wrong recipient or session.
The script forwards the full dm-cli thread result --json payload to another session via sessions_send, base64-encoding it but not minimizing or redacting content. If the DM result contains sensitive model output, internal metadata, secrets, or user data, this creates a cross-session data disclosure channel and can leak information to a broader or unintended audience; the DM skill context increases risk because this script is explicitly designed to bridge data from DeepMiner into a parent session.
The script documentation claims results are sent directly to the user without main-agent involvement, but the implementation also writes state and raw DM result data to local status files, including a separate JSON sidecar. This creates a confidentiality and expectation mismatch: operators may assume ephemeral notification-only behavior while the script actually persists potentially sensitive DM output on disk where other local processes or users could access it.
On completed, ask_human, and failed states, the script extracts DM response content and forwards it verbatim to a user-facing messaging channel. If DM results contain sensitive data, secrets, internal URLs, or untrusted text, this can cause unintended disclosure to users or other recipients of that channel without any sanitization, classification check, or explicit consent flow.
The script writes the full DM result JSON directly into a status file, which may include sensitive task output, prompts, internal metadata, or human-facing messages not intended for broad local exposure. If the status file is readable by other users, processes, logs, or downstream tooling, this creates an information disclosure risk without any minimization, redaction, or explicit operator warning.
The manifest description is written only in Chinese, which can indicate a fixed language presentation without offering users any language or locale choice. Under the policy, language constraints should either be optional for users or clearly justified as region-specific.
Comments and terminal output strings such as usage, status, warnings, and errors are written in Chinese only. This imposes a specific language/locale on users without offering a choice or documenting a justified locale restriction.
The script's natural-language documentation and operational messages are written exclusively in Chinese, with no indication that language is configurable or intentionally restricted to a China-specific audience. This can violate language/locale policy when a skill implicitly forces one language without user opt-in.