Back to skill

Security audit

Generate

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed local test-data generator with some ordinary local-write and history behavior users should understand before using.

Install only if you are comfortable with a local CLI that writes ~/.generate/data.jsonl and may create or overwrite CSV files where you direct it. Do not use its password output for real accounts or production secrets; use a dedicated cryptographic password generator instead. Periodically review or delete ~/.generate/data.jsonl if generated schemas or sample values are sensitive.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:547
Finding

Passwords Generated with a Non-Cryptographic Pseudorandom Number Generator

Content
View full analysis
?" for _ in range(count): pwd = ''.join(random.choices(chars, k=length)) # Ensure at least one of each required type if length >= 4: pwd_list = list(pwd) pwd_list[0] = random.choice(string.ascii_uppercase) pwd_list[1] = random.choice(string.ascii_lowercase) pwd_list[2] = random.choice(string.digits) if not no_special: pwd_list[3] = random.choice("!@#$%^&*()-_=+") random.shuffle(pwd_list) pwd = ''.join(pwd_list) print(pwd) ``` ### Technical Analysis The password command uses Python's `random` module for every security-relevant operation, including character selection and shuffling. This module uses the Mersenne Twister algorithm, which is designed for simulation rather than cryptographic security. Its internal state is deterministic, and future output can be predicted if that state is compromised or reconstructed from sufficient observations. Adding mandatory character classes does not correct the underlying predictability because the replacement characters and final shuffle also use the same non-cryptographic generator. Although the Skill is presented as a test-data generator, the command is explicitly named `password`, and its documentation does not warn users that its output is unsuitable for real credentials. ### Attack Path 1. A user invokes `bash scripts/script.sh password` and uses the result as an authentication credential or secret. 2. An attacker obtains sufficient information about the Python PRNG state, such as through state disclosure, predictable execution conditions, or a broader process compromise. 3. Because password character selection and shuff ...[truncated 843 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:440
Finding

Caller-Controlled CSV Output Path Permits Arbitrary File Overwrite

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (11)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared purpose frames the skill as a random test data generator, but the documented behavior includes persistent history logging, arbitrary file output, batch config processing, and additional sensitive generators such as passwords. This mismatch can cause unsafe use because operators may invoke the skill without realizing it stores outputs locally or writes to attacker-influenced paths.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises shell execution, file writing, and likely environment access via its documented CLI usage, but the manifest does not declare any tool scope or permissions. This creates a transparency and least-privilege problem: users or orchestrators cannot accurately assess that invoking the skill may execute commands and persist data to disk.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
91% confidence
Finding

Requiring write access to ~/.generate/ and persisting history introduces session-to-session state that can leak prior outputs, accumulate sensitive data, and change future risk assumptions for an otherwise simple generator. In this skill's context, persistence is more dangerous because the tool can generate passwords and structured datasets that users may mistakenly treat as ephemeral.

Content

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

md
- Python 3.8+
- `bash` shell
- Write access to `~/.generate/`

## Data Storage

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill documents that all generation events are stored in ~/.generate/data.jsonl, but the manifest description omits this persistent storage behavior. Hidden persistence is risky because generated content may contain sensitive mock data, proprietary schemas, or credentials-like values that remain on disk beyond the session.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

Because all generated data is logged to ~/.generate/data.jsonl, generated passwords are likely persisted in plaintext unless explicitly excluded. Storing secrets or secret-like values in an unqualified history log creates an obvious confidentiality risk if the local account, backups, or logs are accessed later.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill supports writing CSV output to a user-specified path and batch processing from a config file, yet this file-writing capability is understated in the manifest. Under-disclosed write behavior increases the risk of overwriting files, placing sensitive output in unsafe locations, or processing untrusted configs without user awareness.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script creates a hidden directory under the user's home folder and appends command metadata to a persistent JSONL file every time it runs, despite the skill being described only as a test-data generator. Undisclosed persistence is dangerous because it creates a behavioral log users do not expect, which can leak usage patterns and violates least surprise/minimal data collection for a local utility.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The hidden local datastore at ~/.generate/data.jsonl is unrelated to the core function of producing random values and records command metadata without necessity. In context, this makes the skill more dangerous because a simple generator is expected to be ephemeral; hidden state introduces privacy risk, retention risk, and trust-boundary expansion.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Persistently writing usage metadata to a hidden file without warning is a privacy and transparency issue. Even though the recorded fields appear limited, silent collection in a hidden location undermines informed consent and could expose sensitive workflow information such as what kinds of data a user generated and when.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The CSV subcommand accepts an arbitrary --output path and writes generated content directly to that location. In a skill whose stated purpose is only to generate test data, arbitrary file writes expand the capability boundary and can overwrite or create files anywhere the user has permission, which can be abused for data loss or unintended modification of local files.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The description specifies that the address command generates only "US-style addresses." This imposes a locale-specific output format without offering a user choice or explaining that the skill is intentionally US-only, which conflicts with the language/locale policy criteria.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.