Back to skill

Security audit

Elite To Expertpack

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local memory converter, but it overstates conversion completeness and secret protection before telling users to publish sensitive exported memory.

Review this skill before installing. It does not appear to exfiltrate data or persist in the system, but it exports sensitive local memory into files and its automatic secret removal is incomplete. Treat generated packs as private until you manually review all output, run a real secret scanner, and confirm omitted sources like LanceDB/cloud memory are handled separately.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/convert.py:25
Finding

Incomplete Secret Redaction Can Expose Sensitive Memory Data

Content
View full analysis
tuple[str, list[str]]: """Strip secret patterns from text. Returns (cleaned_text, warnings).""" warnings = [] for pat in SECRET_PATTERNS: matches = pat.findall(text) if matches: warnings.append(f"Stripped {len(matches)} potential secret(s) matching {pat.pattern[:40]}...") text = pat.sub("[REDACTED]", text) return text, warnings ``` ```python # --- Collect all warnings --- for ep_dir in ["mind", "facts", "summaries", "operational", "relationships"]: dir_path = output / ep_dir if not dir_path.exists(): continue for f in dir_path.glob("*.md"): content = f.read_text(errors="replace") _, file_warnings = strip_secrets(content) all_warnings.extend(file_warnings) ``` The documentation subsequently advises users to publish the generated data: ```markdown **Secrets are automatically stripped** (sk-*, ghp_*, tokens, passwords). Warnings emitted for any found. ## Post-Conversion Steps 1. `cd ~/expertpacks/my-agent-pack` 2. Verify content files are 400–800 tokens each (Schema 2.5 — retrieval-ready by design) 3. Measure EK ratio: `python3 /path/to/expertpack/tools/eval-ek.py .` 4. Review `overview.md` and `manifest.yaml` 5. Commit to git and publish to ClawHub ``` ### Technical Analysis The converter processes sensitive long-term agent data from `SESSION-STATE.md`, `MEMORY.md`, daily journals, topic files, Git-Notes JSONL records, an ...[truncated 2524 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/convert.py:20
Finding

Unpinned PyYAML Installation Creates Supply-Chain Risk

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill description overclaims what the converter does, including full 5-layer migration, YAML frontmatter on all content, and EK measurement, while the implementation reportedly skips or only partially performs those actions. For a migration/export tool handling long-term memory, this can mislead users into believing data was fully migrated or sanitized when important sources were omitted, resulting in silent data loss, incomplete backup, or unsafe downstream assumptions.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill advertises a conversion workflow that reads from local memory sources and writes exported content, but it does not declare any explicit tool scope or permissions boundaries. In a skill that handles sensitive memory data, missing scope declarations increases the chance of unintended file access or broader-than-expected reads/writes, reducing transparency and enforceability of least privilege.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This skill reads from memory stores that may contain sensitive user or agent data and exports that material into a new directory, yet the description does not prominently warn about the privacy and secret-handling implications. Even if some secrets are stripped, users may still export confidential notes, preferences, internal reasoning artifacts, or partially missed credentials into a portable package that is later committed, shared, or published.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest description says the converter migrates the '5-layer memory system' including the LanceDB warm store. In the generated overview, the code marks 'Warm Store (LanceDB)' as skipped and notes it is not directly converted. This means the implementation does not perform the full migration scope claimed by the skill description.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill manifest explicitly states that the Obsidian-compatible output 'includes YAML frontmatter on all content files'. However, write_content_file emits Markdown beginning directly with a heading and lead summary, with no YAML frontmatter block. This is a direct mismatch between the advertised output format and the actual conversion behavior.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.