Back to skill

Security audit

Startup Validator

Security checks for vulnerabilities and agentic risk

Overview

The skill is a local startup-validation helper, but it silently stores user-provided startup inputs and its commands overstate what the bundled script actually does.

Review this skill before installing if you would enter proprietary startup ideas or market details. It appears to keep data local and does not show exfiltration or destructive behavior, but it silently records your inputs and does not perform the full validation work its command names imply.

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

Note
Location
SKILL.md:17
Finding

Unnecessary and Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 17–23
Vulnerability Type: Unpinned third-party dependency and unnecessary supply-chain exposure
Risk Level: Low

Vulnerable Code

markdown
## Prerequisites

```bash
pip install requests

(Optional if you extend the tool to call external APIs; the bundled script uses the Python stdlib.)

text

### Technical Analysis

The documented prerequisite instructs users to install `requests` without specifying a reviewed version or enforcing package integrity through hashes. The bundled Python script only imports standard-library modules and does not use `requests`, making this installation unnecessary for the current functionality.

Installing an unpinned package causes `pip` to resolve the package and its transitive dependencies at installation time. This makes the resulting environment dependent on mutable external package-registry state. If the package registry, a maintainer account, a release artifact, or a transitive dependency were compromised, installation could introduce attacker-controlled code.

The package name is legitimate, and the audit found no evidence that the project intentionally references a malicious or typosquatted package. Therefore, this is a supply-chain hardening issue rather than evidence of an active malicious dependency.

### Attack Path

1. A user follows the prerequisite documented in `SKILL.md`.
2. The user runs `pip install requests`.
3. `pip` contacts the configured package index and dynamically resolves the current `requests` release and its transitive dependencies.
4. If any resolved distribution or package-index response has been compromised, attacker-controlled content is installed into the user’s Python environment.
5. Malicious package behavior could execute during installation or when the affected package is subsequently imported or invoked.

This exploitation path depends on an upstream package, account, reg
...[truncated 779 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove pip install requests from the prerequisites because the current script uses only the Python standard library.
  2. If future optional HTTP functionality requires requests, document the dependency only for that feature.
  3. Pin reviewed dependency and transitive-dependency versions in a lock file or constraints file.
  4. Require package hashes, such as through pip install --require-hashes -r requirements.txt, to verify artifact integrity.
  5. Install dependencies from an explicitly trusted package index and review dependency changes before updating locked versions.
  6. Avoid privileged or system-wide installation; use an isolated virtual environment with the minimum necessary permissions.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The function docstring says it runs a startup/idea validation flow, and the returned message claims the validation step completed. In reality, the function does not validate anything; it just stores the provided arguments in persistent JSON data and returns a canned success response.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

User-supplied CLI arguments are written verbatim to a persistent JSON file, which can unintentionally store sensitive business ideas, credentials, API keys, or other confidential data entered on the command line. In a skill context centered on startup validation, users are especially likely to provide proprietary or sensitive inputs, making silent persistence a meaningful privacy and data-handling risk.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The docstrings and user-facing messages say these functions run competitive analysis and MVP scaffold flows, but the code performs no analysis or scaffolding. It only appends a record containing timestamp, command, input, and status, then returns static metadata and reference URLs.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The legacy migration silently reads and rewrites prior local data into the new file format without user notice or consent. While this is not an active compromise vector, it can extend the lifetime and visibility of previously stored sensitive records and undermines user expectations around local data handling.

Content

No source excerpt is available for this finding.