Back to skill

Security audit

Loop Polish

Security checks for vulnerabilities and agentic risk

Overview

This skill is a powerful but disclosed automated QA and code-fixing workflow intended for dev or staging projects, with notable operational risks but no artifact-backed deception or malicious behavior.

Install and run this only for projects you trust and preferably in an isolated dev/staging workspace. Disable db_verify if you do not want the agent reading database config, avoid production databases, review generated diffs before merging, and pin or preinstall Playwright/dependencies when reproducibility matters.

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

Warning
Location
SKILL.md:83
Finding

Automatic Installation and Execution of Untrusted Project Dependencies

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 83–90
Vulnerability Type: Unreviewed third-party dependency installation and execution
Risk Level: Medium

Complete Code Snippet

text
3. Start backend (if project has backend, by type):
   Java:   mvn clean package -DskipTests -q ; java -jar target/*.jar
   Node:   npm install ; node server.js
   Python: pip install -r requirements.txt ; python app.py
   Go:     go build ; ./app
   After startup, poll /health or /actuator/health or GET root path, up to 60s
   If none reachable, poll process port (netstat/lsof to confirm port is listening)

4. Start frontend (if project has frontend):
   npm install (if no node_modules) ; npm run dev

The related prerequisite at SKILL.md, line 348, also permits automatic browser dependency installation:

text
- `npx playwright install chromium` (auto-install on first run if missing)

Technical Analysis

The Skill instructs the Agent to install dependencies declared by the target project and immediately execute project entry points. It does not require dependency review, trusted registries, version and hash verification, lockfile enforcement, lifecycle-script suppression, or execution inside an isolated environment.

npm install may execute package lifecycle hooks such as preinstall, install, and postinstall. Python dependency installation may execute build backend or package setup logic. Maven and Go builds can also retrieve and process remote dependencies or plugins. After installation, commands such as node server.js, python app.py, npm run dev, and ./app directly execute repository-controlled code.

Although npx playwright install chromium ordinarily installs browser binaries for Playwright, the instructions do not pin an approved Playwright package version or require a previously verified local installation. Depending on local tool state and package-manager behavior, this can introduce additional mutable supply- ...[truncated 2058 chars]

Remediation
View remediation

Remediation Suggestions

  1. Require explicit user approval before installing, building, or executing dependencies from an unreviewed target repository.
  2. Run target projects in an ephemeral, low-privilege container or virtual machine with:
    • A read-only host filesystem outside a disposable workspace.
    • No host credential mounts or SSH agent forwarding.
    • Restricted outbound network access.
    • Resource, process, and execution-time limits.
    • A non-root user and no privileged container capabilities.
  3. For Node.js projects:
    • Require a reviewed lockfile and use npm ci rather than npm install.
    • Initially use npm ci --ignore-scripts.
    • Review lifecycle scripts before allowing them in a separate sandbox.
    • Configure an approved registry and package allowlist where practical.
  4. For Python projects:
    • Require exact version pins and hashes, such as pip install --require-hashes -r requirements.txt.
    • Prefer pre-reviewed wheels from an approved index.
    • Disable build isolation or source builds only when doing so is compatible with a trusted, controlled package workflow.
  5. For Maven and Go projects:
    • Enforce dependency checksum and lock controls.
    • Use approved mirrors or proxies.
    • Review build plugins, Maven wrapper files, Go directives, and repository-controlled build scripts before execution.
  6. Pin Playwright tooling to an approved version and install browser assets during preparation of a trusted runner image rather than dynamically during the audit.
  7. Separate source analysis from execution. Perform static inspection first and stop for approval if manifests, lifecycle hooks, wrappers, plugins, or entry points contain unexpected executable behavior.
  8. Avoid exposing database credentials or authentication tokens to the application sandbox unless a specific verification step requires them. Use short-lived, least-privilege test credentials when required.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (6)

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The README instructs users to run npx playwright install chromium without pinning a specific package version, which can cause execution of whatever playwright version is resolved at install time. In a skill that performs broad automation and code modification, this increases supply-chain risk and reduces reproducibility, especially if a compromised or incompatible package version is fetched.

Content

No source excerpt is available for this finding.

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Content

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

md
For every write operation (POST/PUT/DELETE):

0. Safety notice: Before accessing database credentials, output "This step will read database credentials from config files. Continue?" Do NOT write database passwords or connection strings to reports, logs, or state files.
   If db_verify=false or mode=preflight: skip this entire step 2.3.

1. Get database connection info (search by priority):
   - application.yml / application.properties: spring.datasource.url

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly searches configuration files for database credentials and performs direct CLI database queries to validate writes. This materially expands the skill's privilege and data-access scope beyond ordinary UI/API polish, increasing the chance of credential exposure, unintended access to sensitive data, and destructive interaction with real databases if run in the wrong environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The skill instructs use of npx playwright without pinning a specific package version, which can pull whatever version is current at execution time. That creates a supply-chain and reproducibility risk: a compromised upstream release or breaking change could alter behavior or execute unreviewed code during automated verification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The mandated report/output examples and fixed status strings are presented only in English, and the document does not offer a user opt-in or locale choice for alternative languages. Under the stated policy, language constraints should be optional or clearly justified when imposed.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

Line L357 states that preflight mode is read-only and suitable for CI usage, but the interrupt recovery section says the skill auto-saves a state file on interrupt. Writing a state file is a side effect that contradicts the read-only claim, even if it does not mutate project code or application data.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.