Description-Behavior Mismatch
- Category
- MCP Tool Poisoning
- Confidence
- 99% confidence
- Finding
ListPoliciesV5 查询的是 IAM 策略,AttachUserPolicyV5 则会更改用户的策略绑定,可能授予权限。这与声明的 ECS 只读查询用途不符,也不是完成 ECS 查询所需的只读实现细节。命令中的用户和策略 ID 虽为占位符,但其体现的写操作能力仍构成明确不匹配。
- Content
Security audit
Security checks for vulnerabilities and agentic risk
This read-only cloud query skill requires a downloaded command wrapper whose data handling and persistent installation are insufficiently explained.
Review the required quality wrapper before installing or supplying credentials. Its implementation is not bundled, so its logging, reporting and credential exposure cannot be determined from this package. Prefer a version that removes the requirement or makes an authenticated, pinned wrapper optional with clear data controls. Use dedicated read-only cloud credentials, protect the configuration file, and have an administrator handle any IAM grants separately. No malicious behavior was established in the bundled query code.
ListPoliciesV5 查询的是 IAM 策略,AttachUserPolicyV5 则会更改用户的策略绑定,可能授予权限。这与声明的 ECS 只读查询用途不符,也不是完成 ECS 查询所需的只读实现细节。命令中的用户和策略 ID 虽为占位符,但其体现的写操作能力仍构成明确不匹配。
Installing the mandatory quality wrapper adds persistent executable software that is unnecessary for the declared ECS-query function. Local dependency installation is not inherently inconsistent with read-only cloud operations, but this unrelated, unverified dependency materially expands the trust boundary.
The documentation mandates an unrelated quality CLI around credential-bearing cloud commands and permits bootstrapping it outside that wrapper. The supplied installer downloads unverified executable artifacts into a persistent executable directory, introducing a supply-chain dependency beyond ECS querying; compromise could expose local files and cloud credentials.
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
API_URL="https://skillsapi.developer.myhuaweicloud.com/api/quality/cli/latest"
OBS_BASE="https://obs-skills-repository.obs.cn-north-4.myhuaweicloud.com/skill-quality-cli"
V=$(curl -s "${API_URL}" | python3 -c 'import sys,json;print(json.load(sys.stdin)["version"])' 2>/dev/null)
if [ -z "$V" ]; then
echo "警告: 无法获取 skill-quality-cli 最新版本,跳过安装" >&2
exit 0
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
API_URL="https://skillsapi.developer.myhuaweicloud.com/api/quality/cli/latest"
OBS_BASE="https://obs-skills-repository.obs.cn-north-4.myhuaweicloud.com/skill-quality-cli"
V=$(curl -s "${API_URL}" | python3 -c 'import sys,json;print(json.load(sys.stdin)["version"])' 2>/dev/null)
if [ -z "$V" ]; then
echo "无法获取 skill-quality-cli 最新版本" >&2
exit 1
Without declared permissions the skill's intent is opaque and cannot be validated.
The recommended commands download a mutable remote shell script and execute it without release pinning or integrity verification. HTTPS and an apparent official hosting domain reduce interception risk but do not prevent a compromised distribution endpoint from supplying code that can access local cloud credentials.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
}
}
resp = requests.post(
url,
json=body,
headers={"Content-Type": "application/json"},
This bootstrapper downloads a remotely selected release without checking a signature or trusted digest, extracts it, and installs executable components into ~/.local/bin. Compromise of the release service or artifact store could therefore introduce persistent code that later runs with the user's access, including access to cloud credentials.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
tar xzf "${TMPDIR}/sqc.tar.gz" -C "${TMPDIR}"
mkdir -p ~/.local/bin/skill-quality-cli.d
cp "${TMPDIR}/skill-quality-cli" ~/.local/bin/ 2>/dev/null
cp "${TMPDIR}/skill-quality-cli.bin" ~/.local/bin/ 2>/dev/null
cp "${TMPDIR}/skill-quality-cli.d/cli_entry.py" ~/.local/bin/skill-quality-cli.d/ 2>/dev/null
Although manually triggered, this installer trusts a mutable remote version response and installs downloaded executable artifacts without signature or digest verification. A compromised distribution source could install persistent code with the user's privileges; manual invocation does not authenticate the software being installed.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
curl -fsSL -o "${TMPDIR}/sqc.tar.gz" "${OBS_BASE}/v${V}/skill-quality-cli-v${V}-linux-${ARCH}.tar.gz"
tar xzf "${TMPDIR}/sqc.tar.gz" -C "${TMPDIR}"
mkdir -p ~/.local/bin/skill-quality-cli.d
cp "${TMPDIR}/skill-quality-cli" ~/.local/bin/ 2>/dev/null
cp "${TMPDIR}/skill-quality-cli.bin" ~/.local/bin/ 2>/dev/null
cp "${TMPDIR}/skill-quality-cli.d/cli_entry.py" ~/.local/bin/skill-quality-cli.d/ 2>/dev/null
The criterion explicitly requires server-status to return the status with a Chinese explanation (「中文说明」). This prescribes an output language without user opt-in or a documented justification for the restriction.
The expected-result specification explicitly requires the status column to include Chinese explanations. This imposes a specific output language without user opt-in or a documented locale-specific reason.