Back to skill

Security audit

Skills Summarize Audit

Security checks across malware telemetry and agentic risk

Overview

The skill is mostly an audit and recommendation helper, but it also scans sensitive session histories and one helper script runs local diagnostic commands beyond the read-only description.

Install only if you are comfortable with a skill auditing local skills, plugins, project files, MCP config, and session history. Before running extract_usage_signals.py, scope the session directories and consider removing or disabling the headroom live probe unless you trust your PATH and local headroom binary. Treat lifecycle/action outputs as plans that require your explicit confirmation, backups, and review before any agent changes files or configuration.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (38)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
pass

        # 2. Find headroom binary
        which_result = subprocess.run(
            ["which", "headroom"] if sys.platform != "win32" else ["where", "headroom"],
            capture_output=True, text=True, timeout=10,
        )
Confidence
97% confidence
Finding
which_result = subprocess.run( ["which", "headroom"] if sys.platform != "win32" else ["where", "headroom"], capture_output=True, text=True, timeout=10, )

subprocess module call

Medium
Category
Dangerous Code Execution
Content
# 3. Run headroom perf
        if headroom_bin:
            perf_result = subprocess.run(
                [headroom_bin, "perf"], capture_output=True, text=True, timeout=30,
            )
            if perf_result.returncode == 0:
Confidence
99% confidence
Finding
perf_result = subprocess.run( [headroom_bin, "perf"], capture_output=True, text=True, timeout=30, )

subprocess module call

Medium
Category
Dangerous Code Execution
Content
process_found = False
        try:
            if sys.platform == "win32":
                proc = subprocess.run(
                    ["tasklist", "/FI", "IMAGENAME eq python.exe", "/V"],
                    capture_output=True, text=True, timeout=10,
                )
Confidence
95% confidence
Finding
proc = subprocess.run( ["tasklist", "/FI", "IMAGENAME eq python.exe", "/V"], capture_output=True, text=True, timeout=10, )

subprocess module call

Medium
Category
Dangerous Code Execution
Content
if "headroom" in proc.stdout.lower():
                    process_found = True
            else:
                proc = subprocess.run(
                    ["ps", "aux"],
                    capture_output=True, text=True, timeout=10,
                )
Confidence
95% confidence
Finding
proc = subprocess.run( ["ps", "aux"], capture_output=True, text=True, timeout=10, )

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill claims to be 'default read-only', but its instructions explicitly allow file writes, cache cleanup, config changes, and even controlled application mode. When a skill can read files, invoke shell/scripts, use network-adjacent workflows, and write local state without an explicit permission declaration, users and policy layers may misjudge its effective authority.

Description-Behavior Mismatch

High
Confidence
96% confidence
Finding
The installer performs state-changing actions such as cloning into a skills directory and pulling updates, which directly contradicts the skill metadata claiming the skill is 'default read-only' and does not install or update anything. This mismatch can mislead users and security reviewers about the actual behavior, increasing the risk of unintended code deployment from a remote repository.

Context-Inappropriate Capability

Medium
Confidence
84% confidence
Finding
The script enumerates several agent-specific directories and environment indicators to decide where to place code, which expands its awareness of the host environment beyond the stated audit/summarization purpose. While this is common in installers, in this skill context it creates unnecessary platform probing and broadens the blast radius by enabling deployment into multiple agent ecosystems.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The skill metadata promises a default read-only audit capability, but this schema explicitly defines mutating operations and states that a downstream manager will execute them. That creates a capability-boundary mismatch: a user or integrator may trust the skill as non-mutating while its outputs are designed to trigger installs, updates, or archival actions in another component.

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
The documented schema goes beyond summarization and audit into operational change orchestration by specifying install, update, and archive actions for external execution. In an agent ecosystem, this expands the attack surface because generated audit output can become an instruction channel for supply-chain changes or destructive lifecycle actions.

Intent-Code Divergence

Medium
Confidence
92% confidence
Finding
The document claims the skill is read-only and 'does not act', yet later includes concrete agent instruction templates that perform state-changing operations such as moving skill directories, editing config files, and appending archive reasons. This mismatch can mislead users and downstream agents into treating the skill as safe for passive auditing while still enabling operational changes through embedded playbooks.

Intent-Code Divergence

Low
Confidence
80% confidence
Finding
The cross-tool section frames the file as a generalized health-evaluation checklist, but the scheduled guidance introduces persistent local history writing to a JSONL audit file. Even if low risk, hidden persistence expands the skill's effective behavior beyond pure assessment and can surprise users or leak operational metadata over time.

Intent-Code Divergence

Medium
Confidence
94% confidence
Finding
The document claims the skill is strictly read-only, but then provides ready-to-run prompts that instruct another agent to perform installation, deletion, migration, and config edits. This creates a deceptive trust boundary: users may rely on the 'read-only' claim while being handed operationally dangerous write actions that can be executed with little additional scrutiny.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The skill claims a default read-only posture, but later defines learning and unlearning flows that persist data to local glossary and log files. This creates a misleading trust boundary: operators may permit the skill under read-only assumptions while it is designed to influence or trigger stateful writes, increasing the risk of unauthorized configuration drift or data retention.

Intent-Code Divergence

Medium
Confidence
88% confidence
Finding
The document says the workflow is 'guidance only' but then uses language such as '已学习', '写入', and '记录', implying that persistence has already occurred or should occur as part of normal operation. This ambiguity can cause downstream agents or users to treat advisory output as approved state-changing instructions, which weakens safeguards around file modification and auditability.

Description-Behavior Mismatch

Medium
Confidence
98% confidence
Finding
The code and metadata describe a default read-only scanner, yet this block performs live host inspection and external command execution. That mismatch is security-relevant because users may grant trust based on a passive-audit expectation while the script actually probes processes and executes a locally discovered binary.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
Process discovery and `headroom perf` probing are not necessary to extract usage signals from session directories, so they introduce avoidable risk and privilege use. In this skill context, the unjustified active behavior makes the script more dangerous because the advertised purpose is static auditing of installed tools and session data.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The test document explicitly exercises snapshot creation, rollback, and retention-based deletion, which are state-changing operations that conflict with the skill's declared default read-only behavior. This mismatch is dangerous because an agent or maintainer may rely on the metadata for safety expectations while the implementation or test guidance normalizes destructive filesystem actions under a benign-sounding audit command.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The document directs a user-controlled agent to perform external searches using tool names and local evidence fields, but it does not clearly require consent prompts, data minimization, or warnings that internal inventory/context may be disclosed to third-party services. In a skill that audits installed skills, MCPs, and agents, even tool names, usage state, and local evidence can reveal sensitive internal stack details or project focus, creating avoidable metadata leakage.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The markdown provides batch archival instructions that move installed skills, modify local configuration references, and create archive metadata, but it does so without a clear safety warning, backup guidance, or confirmation checkpoint. In practice, such instructions can cause accidental loss of functionality, broken agent setups, or difficult-to-reverse changes if copied into an agent workflow blindly.

Missing User Warnings

Low
Confidence
77% confidence
Finding
The scheduled checkup section recommends appending audit history to a local JSONL file without explaining privacy implications, retention, or who can read the file. This can unintentionally accumulate sensitive metadata about installed skills, usage patterns, and security posture on disk.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The trigger list includes short, generic phrases such as '技能问题' and '插件问题' that can easily appear in ordinary user conversation. This can cause unintended invocation of the skill, leading to scope confusion, incorrect routing, or disclosure of installed-skill/plugin metadata in contexts where the user did not explicitly request an audit.

Missing User Warnings

Medium
Confidence
83% confidence
Finding
The script scans local session transcripts from multiple agent ecosystems, which can contain sensitive prompts, tool inputs, project names, and metadata. In an audit skill, that collection may be expected, but the absence of an explicit runtime warning or consent notice increases the risk of unintentional privacy exposure, especially when users assume a narrow scope.

Missing User Warnings

Low
Confidence
87% confidence
Finding
The script performs live subprocess-based headroom detection without warning the user at the point of execution. In context, this is less severe than arbitrary command injection, but it still violates the principle of transparent consent for a tool marketed as read-only and may surprise users with host inspection behavior.

Ssd 3

Medium
Confidence
94% confidence
Finding
The skill instructs itself to mine prior session transcripts as 'usage evidence'. Session history commonly contains prompts, secrets, internal paths, tool outputs, and other sensitive user content; repurposing it for audits increases the chance of over-collection, cross-task data leakage, and inclusion of private material in reports.

Ssd 3

Medium
Confidence
95% confidence
Finding
These lines repeatedly mandate scanning `.zcode/cli/agents/sess_*/transcript.jsonl` to infer agent/tool/MCP usage. The repeated requirement makes the data access central rather than incidental, increasing the likelihood that sensitive historical interactions are processed even when unnecessary for the user's immediate request.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
tests/test_analyze_project_profile.py:15

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
tests/test_audit_skill_plugin_issues.py:21

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
tests/test_collect_codex_display_candidates.py:25