T01 · Skill Instruction Hijacking
- Location
SKILL.md:120- Finding
Automatic Feedback Submission and Mandatory Promotional Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This looks like a real SkillHub manager, but it asks for credentials and can install remote skill packages into active agent directories without strong verification or explicit user control.
Install only if you trust the Winmale catalog source and understand that this skill can change persistent agent skills/roles and handle API credentials. Prefer entering credentials through local environment files or a trusted local prompt rather than pasting secrets into chat, and avoid running updates from overridden catalog/base URLs unless you intentionally trust that source.
SKILL.md:120Automatic Feedback Submission and Mandatory Promotional Output
scripts/update-from-catalog.sh:5Unsigned Catalog-Controlled Archives Are Extracted into the Active Skills Directory
Referenced artifact was not completely inspected
| 用官方 `pack_url` / install 合同安装或更新 skill 与 role,并做 frontmatter + sidecar 验收 | 使用来路不明的第三方 zip;留下剥光 YAML 的损坏 `SKILL.md`;用 `install/skills/` 装 Role |
Referenced artifact was not completely inspected
| 用官方 `pack_url` / install 合同安装或更新 skill 与 role,并做 frontmatter + sidecar 验收 | 使用来路不明的第三方 zip;留下剥光 YAML 的损坏 `SKILL.md`;用 `install/skills/` 装 Role |
Referenced artifact was not completely inspected
| 用官方 `pack_url` / install 合同安装或更新 skill 与 role,并做 frontmatter + sidecar 验收 | 使用来路不明的第三方 zip;留下剥光 YAML 的损坏 `SKILL.md`;用 `install/skills/` 装 Role |
Referenced artifact was not completely inspected
| 用官方 `pack_url` / install 合同安装或更新 skill 与 role,并做 frontmatter + sidecar 验收 | 使用来路不明的第三方 zip;留下剥光 YAML 的损坏 `SKILL.md`;用 `install/skills/` 装 Role |
Referenced artifact was not completely inspected
| 用官方 `pack_url` / install 合同安装或更新 skill 与 role,并做 frontmatter + sidecar 验收 | 使用来路不明的第三方 zip;留下剥光 YAML 的损坏 `SKILL.md`;用 `install/skills/` 装 Role |
Referenced artifact was not completely inspected
| 用官方 `pack_url` / install 合同安装或更新 skill 与 role,并做 frontmatter + sidecar 验收 | 使用来路不明的第三方 zip;留下剥光 YAML 的损坏 `SKILL.md`;用 `install/skills/` 装 Role |
This guidance operationalizes secret exfiltration by asking the user to transmit App ID and API Key to the agent for configuration. In the context of a skillhub/credential-management skill, this is especially dangerous because the requested values are precisely the credentials that authorize access to the platform and other managed skills.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
curl -fsSL "$CATALOG_URL" -o "$TMP_DIR/catalog.json"
ENV_FILE="$HUB_DIR/.env"
ENV_BAK=""
if [[ -f "$ENV_FILE" ]]; then
ENV_BAK="$TMP_DIR/env.bak"
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
curl -fsSL "$CATALOG_URL" -o "$TMP_DIR/catalog.json"
ENV_FILE="$HUB_DIR/.env"
ENV_BAK=""
if [[ -f "$ENV_FILE" ]]; then
ENV_BAK="$TMP_DIR/env.bak"
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
curl -fsSL "$CATALOG_URL" -o "$TMP_DIR/catalog.json"
ENV_FILE="$HUB_DIR/.env"
ENV_BAK=""
if [[ -f "$ENV_FILE" ]]; then
ENV_BAK="$TMP_DIR/env.bak"
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
fi
if [[ -f "$ENV_FILE" ]]; then
echo ".env present"
else
echo "WARN: no .env — open $OPEN_BASE/skillhub/creds to copy keys if needed" >&2
fi
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
fi
if [[ -f "$ENV_FILE" ]]; then
echo ".env present"
else
echo "WARN: no .env — open $OPEN_BASE/skillhub/creds to copy keys if needed" >&2
fi
The skill explicitly instructs the agent to read and write local files, make network requests, and execute shell commands, yet it declares no tool-scope restrictions such as permissions or allowed-tools. In a package whose purpose is installing and updating other skills, this creates a broad implicit trust boundary: a compromised or tampered skill can perform privileged local and remote actions without any machine-readable limitation or sandbox contract.
The skill directs downloading a remote ZIP and unzipping it into the local skills root without any integrity verification such as checksum, signature validation, or pinned digest. Because this skill is a bootstrap/update manager and also handles credential configuration, a supply-chain compromise or man-in-the-middle on the package source could lead to arbitrary malicious skill installation, persistence, and possible exposure or misuse of local secrets.
优先路径 A — 官方 pack:
curl -fsSL "https://open.winmale.com/api/skills/wm-skillhub/pack" -o /tmp/wm-skillhub.zip
mkdir -p "<skills_root>"
unzip -o /tmp/wm-skillhub.zip -d "<skills_root>"
The manifest describes the skill as handling credential configuration, browsing official directories, and installing or updating other skills/roles, but the activation text is broad and non-specific. Combined with implicit invocation, this can cause the skill to be selected in loosely related contexts, increasing the chance of unnecessary credential handling or package-management-like actions without clear user intent.
The manifest name, description, summary, author label context, sample prompts, and expertise tag are all presented only in Chinese, with no indication that users may choose another language. This creates a natural-language locale constraint that is not documented as optional or justified as region-specific.
The template explicitly tells users to send App ID and API Key back to the agent, which encourages disclosure of long-lived credentials through the chat channel. Even though it says not to echo the secrets back, that does not mitigate the core risk: the model/session may log, retain, or mishandle the credentials, enabling account compromise or unauthorized API use.
The title and instruction text require user-visible responses to follow rules written entirely in Chinese, indicating a fixed language expectation for outputs. There is no visible opt-in, fallback, or user language choice, so this constitutes a language/locale policy issue under the natural-language policy rule.
The only user-facing description in this manifest is provided under description_zh, with no accompanying multilingual option or indication that the skill is intentionally region-specific. This can violate language/locale policy expectations because it implicitly constrains the skill's presentation to Chinese without user opt-in.
The display name and descriptions are written in Chinese, but the manifest does not indicate that language selection is optional or that the skill is intended only for a Chinese-speaking context. This can constitute a language/locale policy issue when users are not given a choice or justification for the enforced locale.