T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:164- Finding
Unpinned npm Package Retrieval and Execution
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This looks like a real Helios Kanban remote-control skill, but it grants broad task, agent, approval, install, and local execution authority with under-scoped safeguards.
Install only if you trust the Helios Kanban server, repository, and npm package source. Pin versions or commits before installation, avoid running the sudo and npx commands automatically, keep the server behind an authenticated private network, confirm deletes and approvals manually, and treat tag content as untrusted before sending it to a coding agent.
SKILL.md:164Unpinned npm Package Retrieval and Execution
INSTALL.md:81Mutable Development Branch Installed Without Integrity Verification
scripts/hk.sh:5Sensitive Remote-Control Operations Use a Plaintext Channel Without Client Authentication
scripts/hk.sh:160Server-Controlled Tag Content Is Injected Into Coding-Agent Prompts
Chaining privileged package-manager commands with && encourages unattended execution of multiple system-modifying steps as a single action. In an agent context, this reduces opportunities for review or intervention and amplifies harm if the first step succeeds in an unsafe environment.
brew install jq
sudo apt-get update && sudo apt-get install -y jq
---
Referenced artifact was not completely inspected
bash scripts/hk.sh <command> [args]
Referenced artifact was not completely inspected
bash scripts/hk.sh <command> [args]
Referenced artifact was not completely inspected
bash scripts/hk.sh <command> [args]
Referenced artifact was not completely inspected
bash scripts/hk.sh <command> [args]
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
cmd_tasks_delete() {
require_jq
api DELETE "/tasks/$1"
}
cmd_tasks_cancel() {
The guide explicitly instructs the agent to autonomously clone repositories, run shell commands, modify local files, and complete installation without human manual steps. For a remote kanban-control skill, these broad local actions exceed narrow task usage and create unnecessary risk if followed by an agent in a sensitive environment.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
REPO_DIR="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
test -f "$REPO_DIR/skills/helios-kanban-remote/SKILL.md" || {
echo "error: skill not found in current repo"; exit 1
}
echo "Using local repo: $REPO_DIR"
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
REPO_DIR="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
test -f "$REPO_DIR/skills/helios-kanban-remote/SKILL.md" || {
echo "error: skill not found in current repo"; exit 1
}
echo "Using local repo: $REPO_DIR"
The installation step uses rm -rf to delete the existing skill directory and then overwrites it without backup or confirmation. This is destructive behavior that can remove local customizations or prior installations and is unsafe for an autonomous agent to perform silently.
The guide instructs the agent to install missing dependencies using system package managers, including privileged sudo commands. This expands the blast radius from skill setup to host-level modification and could alter the user's system without informed approval.
The guide includes sudo apt-get update && sudo apt-get install -y jq, instructing the agent to run privileged commands. Any autonomous use of sudo materially raises risk because it permits host-wide changes and makes compromise of the installation flow far more impactful.
brew install jq
sudo apt-get update && sudo apt-get install -y jq
---
The installer tells the agent to persist environment configuration by editing shell profile files. Persistent modification of user startup files is a sensitive local change that can affect future sessions and is not strictly necessary for immediate skill operation.
Persisting configuration by appending to shell profile files without an explicit warning or approval creates lasting side effects in the user's environment. Even if the value is benign, silent profile edits violate least surprise and can cause configuration drift or conflicts.
The guide instructs the agent to start a server-side/local process with npx helios-kanban, which is beyond simple remote control of an existing kanban service. Running new services locally can expose ports, consume resources, and execute unreviewed code in the user's environment.
The install guide tells the agent to run npx helios-kanban without pinning a specific package version or integrity source. That allows execution of whatever package version is current at install time, increasing supply-chain risk if the package is compromised, renamed, or unexpectedly changed.
The uninstall instructions irreversibly delete the skill directory with rm -rf and provide no warning, backup, or path validation guidance. Autonomous execution of such deletion can remove data unexpectedly if variables are mis-set or if the user expected a reversible uninstall.
The skill explicitly instructs the agent to run shell commands (bash scripts/hk.sh ...) and even to self-install from GitHub, but it declares no permissions or allowed-tools scope. That creates an authorization gap where a host agent may grant broader shell capability than intended, increasing the blast radius of prompt-induced command execution or destructive task operations.
The manifest description includes broad activation cues like creating tasks, starting agents, or checking progress remotely, which can match common project-management requests outside a clearly confirmed Helios Kanban context. Misactivation is risky here because this skill has shell/network operational power and can trigger state-changing actions against a remote service.
The skill tells operators to start the service with npx helios-kanban and later references helios-kanban@latest for MCP, which pulls code that is not pinned to a reviewed version. This introduces supply-chain risk: a compromised package, malicious update, or breaking change could be executed automatically in a privileged environment.
The 'Response format for chat' section specifies output labels entirely in Chinese, and nearby examples are also Chinese-centric. There is no indication that the language should match user preference or that other locales are supported, which can violate language/locale choice expectations.
The examples explicitly show approval, stop, and cancel operations that can change execution state or terminate work without any caution, confirmation guidance, or role/authorization caveats. In a remote-control skill intended for phone/chat use, this increases the chance of accidental or socially engineered destructive actions because users may copy commands directly from examples.
The cmd_tasks_delete function issues a DELETE request to /tasks/$1 immediately, with no confirmation prompt, warning message, or other user-facing disclosure in the code path. Because deletion is an irreversible operation and the command name alone is not sufficient disclosure under this rule, this should warn or require confirmation before proceeding.
SQP-3 applies to all file types and includes language or locale policy violations. The natural-language instructions in the README are written in Chinese only, with no indication that users may choose another language or that the repository is intentionally limited to a Chinese-speaking audience.
This is a markdown file, so SQP-2 applies to omissions in user-facing safety disclosures. The README lists actions that can modify or delete boards and cards and synchronize data with a backend, but it does not warn users about data loss, overwrites, or external data transfer implications.
Detected: suspicious.exposed_resource_identifier