Back to skill

Security audit

skill-registry

Security checks for vulnerabilities and agentic risk

Overview

This is a local skill-registry generator with disclosed filesystem behavior, though its manifest should not claim filesystem access is false.

Before installing, treat this as a local filesystem tool: run it only on skill directories you intend to inventory, and choose output paths carefully because existing registry.json or registry.md files may be overwritten. The publisher should correct the filesystem permission metadata.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Scope Creep

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The manifest states filesystem: false, but the documented behavior explicitly requires reading a skills directory and writing registry.json and registry.md. This mismatch can mislead reviewers, policy engines, or sandboxing layers into granting trust based on inaccurate declared capabilities, creating a governance and security blind spot.

Content

No source excerpt is available for this finding.

Dynamic import via __import__()

Medium
Category
Dangerous Code Execution
Confidence
75% confidence
Finding

Dynamic import() can load arbitrary modules at runtime, bypassing static analysis and potentially importing malicious code.

Content

Scanner excerpt · scripts/registry.py (reported line 23)May include surrounding context.

python
if not os.path.exists(sm):
            continue
        text = open(sm, encoding="utf-8", errors="replace").read()
        m = __import__("re").match(r"^---\n(.*?)\n---", text, __import__("re").S)
        fm = {}
        if m:
            for line in m.group(1).splitlines():

Dynamic import via __import__()

Medium
Category
Dangerous Code Execution
Confidence
75% confidence
Finding

Dynamic import() can load arbitrary modules at runtime, bypassing static analysis and potentially importing malicious code.

Content

Scanner excerpt · scripts/registry.py (reported line 27)May include surrounding context.

python
fm = {}
        if m:
            for line in m.group(1).splitlines():
                mm = __import__("re").match(r"^([A-Za-z_][\w-]*):\s*(.*)$", line)
                if mm:
                    fm[mm.group(1)] = mm.group(2).strip().strip('"')
        entries.append({

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The file presents all key user-facing guidance in a fixed Chinese/English bilingual format, which is a language policy choice visible in natural-language content. There is no indication that users can opt into a preferred language or that the locale constraint is required for a region-specific purpose.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This file presents core descriptions and usage in both English and Chinese, and the metadata includes Chinese-only values such as the category and read_when entries. Under the policy criteria, language or locale constraints should either offer user choice or be clearly documented as region-specific; here the bilingual/mixed-language presentation is not framed as an explicit user opt-in or justified locale requirement.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The top-level natural-language description is written primarily in Chinese with no indication that users may choose another language or locale. The policy scope for SQP-3 includes language/locale constraints expressed in natural language, and this file presents the skill as Chinese-localized by default without documenting any opt-in or alternative.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.