Back to skill

Security audit

物料清单漏洞情报免费版

Security checks for vulnerabilities and agentic risk

Overview

The skill has a legitimate SBOM and dependency-vulnerability purpose, but its triggers are mismatched and broad, and it may run mutable third-party code through npx.

Review this skill before installing. Use it only for explicit SBOM or dependency-vulnerability tasks, avoid running it on private package names unless you accept OSV/npm/PyPI disclosure, and do not allow the unpinned `npx sbom-tool` command unless you replace it with a pinned and trusted tool.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Error
Location
SKILL.md:346
Finding

Unpinned Third-Party Package Download and Execution via npx

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 346–349
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: High

Vulnerable Code

bash
# Use npm to generate
npx sbom-tool generate -p . -o sbom.json 2>/dev/null || \
    echo "Use this tool's SBOM generation script"

Technical Analysis

The quick-start instructions invoke sbom-tool through npx without specifying an exact version, integrity hash, lockfile, or verified provenance. If the package is not already installed locally, npx may retrieve a mutable package version from the configured npm registry and immediately execute its CLI and applicable lifecycle behavior.

Consequently, the effective code executed by the Agent is not fully represented by the reviewed Skill. It can change after this audit due to a compromised package release, package ownership transfer, registry-account compromise, dependency compromise, or unexpected resolution through a malicious registry configuration. Suppressing standard error with 2>/dev/null also reduces visibility into installation warnings and execution failures.

Attack Path

  1. An attacker compromises the referenced npm package, one of its transitive dependencies, or the registry account used to publish it.
  2. The attacker publishes a malicious version that remains eligible for unversioned resolution.
  3. A user or Agent follows the Skill's quick-start instructions.
  4. npx resolves and downloads the malicious or compromised package from the configured npm registry.
  5. The downloaded package executes with the privileges and environment of the Agent process.
  6. The payload may access or modify files, inspect environment variables, invoke network services, or run additional commands within those privilege boundaries.

Impact Assessment

Successful exploitation provides arbitrary code execution with the same operating-system privileges as the user or Agent running the command. The affected scope can inc ...[truncated 335 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace the ambiguous package with a verified, officially maintained SBOM generator.
  2. Pin the dependency to an exact audited version rather than allowing mutable resolution:
    bash
    npx --yes verified-package@1.2.3 generate -p . -o sbom.json
    
  3. Record the package and transitive dependencies in a committed lockfile, and install them with a reproducible command such as npm ci.
  4. Verify registry provenance, package signatures or attestations, and published integrity metadata before execution.
  5. Configure npm to use an explicitly trusted registry and reject unexpected registry overrides.
  6. Disable package lifecycle scripts where compatible with the selected tool, and run the generator in a restricted sandbox with minimal filesystem, credential, and network access.
  7. Remove 2>/dev/null; preserve installation warnings and errors in audit logs.
  8. Prefer a preinstalled, administrator-approved binary whose checksum is verified before execution.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (13)

Vague Triggers

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger language is overly broad and overlaps with many ordinary development tasks, increasing the chance that the agent will activate a skill with exec and network access in contexts where the user did not specifically request scanning or external queries. In this skill, that matters because activation can lead to command execution and outbound transmission of dependency metadata.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
92% confidence
Finding

The capability keywords are expansive and loosely bounded, making accidental invocation likely across unrelated requests. Because the skill supports exec and external HTTP calls, over-triggering increases the chance of unnecessary command execution, metadata leakage, or file generation in the workspace.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description explicitly states '支持中文交互' and presents the skill as operating in Chinese, but it does not indicate that users may choose another language. That creates a language-policy concern because the skill appears to enforce a locale preference without opt-in or justification.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

This code posts package names and versions to the OSV API, which is an external transmission of repository/dependency metadata. In SBOM and vulnerability-scanning context this behavior is expected, but it still exposes information about the user's software stack to a third party and should be treated as sensitive in private or unreleased projects.

Content

Scanner excerpt · SKILL.md (reported line 136)May include surrounding context.

md
local ecosystem=$3  # npm 或 PyPI
    echo "检查: ${pkg}@${version} (${ecosystem})"

    RESULT=$(curl -s -X POST "https://api.osv.dev/v1/query" \
        -H "Content-Type: application/json" \
        -d "{
            \"package\": {

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

This code posts package names and versions to the OSV API, which is an external transmission of repository/dependency metadata. In SBOM and vulnerability-scanning context this behavior is expected, but it still exposes information about the user's software stack to a third party and should be treated as sensitive in private or unreleased projects.

Content

Scanner excerpt · SKILL.md (reported line 136)May include surrounding context.

md
local ecosystem=$3  # npm 或 PyPI
    echo "检查: ${pkg}@${version} (${ecosystem})"

    RESULT=$(curl -s -X POST "https://api.osv.dev/v1/query" \
        -H "Content-Type: application/json" \
        -d "{
            \"package\": {

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The markdown instructs creation of SBOM output files in the workspace without a clear warning or confirmation step. In an agent setting, silent file creation or overwrite can surprise users, alter repositories, or leak project metadata into generated artifacts that may later be shared or committed.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

The single-package assessment flow sends package metadata to OSV and also queries the npm registry, which transmits dependency information to external services. That is contextually aligned with the skill's purpose, but it can still leak technology choices or internal component names if used on nonpublic packages or internal mirrors.

Content

Scanner excerpt · SKILL.md (reported line 306)May include surrounding context.

md
VER=$(curl -s "https://registry.npmjs.org/${PACKAGE}" | jq -r '."dist-tags".latest')
fi

curl -s -X POST "https://api.osv.dev/v1/query" \
    -H "Content-Type: application/json" \
    -d "{\"package\": {\"name\": \"${PACKAGE}\", \"ecosystem\": \"npm\"}, \"version\": \"${VER}\"}" | \
    jq '.vulns | if . then "发现 \(length) 个漏洞" else "未发现已知漏洞" end'

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

The single-package assessment flow sends package metadata to OSV and also queries the npm registry, which transmits dependency information to external services. That is contextually aligned with the skill's purpose, but it can still leak technology choices or internal component names if used on nonpublic packages or internal mirrors.

Content

Scanner excerpt · SKILL.md (reported line 306)May include surrounding context.

md
VER=$(curl -s "https://registry.npmjs.org/${PACKAGE}" | jq -r '."dist-tags".latest')
fi

curl -s -X POST "https://api.osv.dev/v1/query" \
    -H "Content-Type: application/json" \
    -d "{\"package\": {\"name\": \"${PACKAGE}\", \"ecosystem\": \"npm\"}, \"version\": \"${VER}\"}" | \
    jq '.vulns | if . then "发现 \(length) 个漏洞" else "未发现已知漏洞" end'

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

L317-L325 的文档先说明该技能不适合处理若干数据库设计场景,但 L325 又明确写成“需要数据库操作、SQL查询、数据存储管理时使用”。这与全文其余内容和代码示例实际实现的 SBOM 生成、依赖扫描、OSV/npm/PyPI 查询能力明显矛盾,属于文档主动误导技能用途。

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The trigger section says '需要数据库操作、SQL查询、数据存储管理时使用', which does not match the documented SBOM and dependency-vulnerability functionality. This creates ambiguity about when the skill should activate and increases the risk of invocation in unrelated database contexts.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The skill invokes npx sbom-tool without pinning an exact package version, so execution may fetch whatever version is current at runtime. That creates supply-chain risk and can lead to unexpected code execution if the upstream package is compromised, replaced, or behavior changes.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The safety guidance claims user input should not be concatenated into shell commands, yet the examples repeatedly interpolate variables like package names and versions directly into shell and curl commands. If an agent passes untrusted input through these snippets, shell metacharacters or malformed values could trigger command injection or unsafe outbound requests.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

L003 的描述前半段将技能限定为 SBOM 生成与依赖漏洞检查工具,但后半段又把使用场景扩展到代码生成、编程辅助、调试测试、开发部署等宽泛开发活动。结合全文代码示例,实际能力仍集中在依赖读取、漏洞查询、SBOM 输出和相关命令执行,这些泛化用途并无对应实现支撑。

Content

No source excerpt is available for this finding.