Back to skill

Security audit

Senior Qa

Security checks for vulnerabilities and agentic risk

Overview

This skill overpromises automated QA capabilities while shipping placeholder scripts and broad setup/deployment commands, so users should review it before installing.

Install only if you are comfortable with a mostly placeholder QA skill. Do not rely on it for real test generation, coverage analysis, or E2E setup without inspecting and replacing the stub logic. Run any npm, pip, Docker, or kubectl commands only in a trusted project and review changes before allowing an agent to scaffold files or apply fixes.

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:123
Finding

Uncontrolled Dependency Installation in an Unverified Working Directory

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 123–126
Vulnerability Type: Unverified and unpinned third-party dependency installation
Risk Level: Medium

Vulnerable Code:

bash
# Install dependencies
npm install
# or
pip install -r requirements.txt

Technical Analysis

The setup instructions direct users or agents to install dependencies from package manifests in the current working directory without validating their origin, integrity, or version constraints. The audited Skill does not include a package.json, package-manager lockfile, or requirements.txt, so these commands necessarily depend on files supplied by another project or present in an unrelated working directory.

Running npm install can execute package lifecycle scripts such as preinstall, install, and postinstall. Python packages installed through pip may execute build backends or other installation-time logic. Consequently, a malicious or compromised dependency manifest can turn these instructions into a local code-execution path.

No malicious dependency, installation payload, or remote source is embedded in the audited repository itself. Exploitation requires the instructions to be followed in a directory containing an attacker-controlled or compromised manifest.

Attack Path

  1. An attacker supplies or modifies a target project containing a malicious package.json, requirements.txt, lockfile, or referenced dependency.
  2. A user or automated agent follows the generic setup instructions while its current directory is the attacker-controlled project.
  3. npm install retrieves dependencies and executes an installation lifecycle script, or pip invokes package build or installation logic.
  4. The malicious installation code executes with the privileges of the user or CI process running the command.
  5. The payload can access files, environment variables, source code, and credentials available to that process ...[truncated 632 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove generic dependency-installation commands unless the Skill supplies and maintains the corresponding manifests.
  2. Explicitly require users to change into a verified, trusted project directory before running any package manager.
  3. Require reviewed lockfiles and use deterministic installation modes, such as npm ci, instead of unconstrained npm install.
  4. Disable npm lifecycle scripts with --ignore-scripts when installation hooks are unnecessary.
  5. Pin Python dependencies to reviewed versions and hashes, and install them with hash verification enabled.
  6. Inspect package manifests, lockfiles, local path dependencies, registry configuration, and installation hooks before installation.
  7. Run dependency installation in an isolated, least-privileged container or sandbox without production credentials.
  8. Avoid running package managers as root or with administrative privileges.
  9. Add an explicit warning that manifests originating from untrusted projects may execute code during installation.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (12)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description promises a broad QA/testing skill with substantive capabilities such as test automation support, coverage analysis, E2E setup, and quality metrics for specific web application stacks. The supplied code is only a scaffolded command-line utility: it checks whether a path exists, populates a placeholder results object with an empty findings list, and prints or serializes that data. There is no logic for parsing codebases, measuring coverage, generating tests, configuring test tools, or analyzing React/Next/Node projects. This is a material description-versus-behavior mismatch because the primary declared purpose is not actually carried out by the code.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description promises a broad QA/testing capability set, especially around automation and E2E setup. The supplied code is only a generic command-line template: it checks that the target path exists, sets static result fields, prints a simple report, and optionally serializes results to JSON. There is no substantive testing logic, framework integration, code analysis, coverage computation, test generation, or strategy support. This is therefore a material description-behavior mismatch due to the code's much narrower and mostly placeholder functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description promises a broad, feature-rich QA/testing skill, but the supplied code only provides a generic command-line skeleton. Its actual behavior is limited to checking whether the target path exists, populating a trivial results object, printing a report, and optionally outputting JSON to stdout or a file. There is no logic for generating tests, analyzing source code, measuring coverage, setting up end-to-end tests, computing quality metrics, or performing any React/Next/Node-specific testing tasks. This is a material mismatch in primary purpose and implemented capabilities.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

pip install -r requirements.txt

Configure environment

cp .env.example .env

text

### 2. Run Quality Checks

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill advertises scripts that can scaffold tests and apply automated fixes, which implies file-writing behavior, but it does not declare any tool scope such as permissions or allowed-tools. This creates an authorization and review gap: an agent may invoke the skill without clear user-visible constraints on filesystem modification, increasing the risk of unintended writes to project files.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The invocation wording is extremely broad and could cause the skill to trigger for many generic QA or testing requests. Overbroad routing increases the chance that a skill with file-modifying scripts is invoked in situations where the user expected only advice, leading to unnecessary exposure to write-capable automation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation promises automated scaffolding and automated fixes but does not warn that project files may be created or modified. In an agent setting, omission of modification warnings can mislead users into authorizing actions with side effects they did not expect, increasing the risk of unintended code changes or repository pollution.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The module docstring and manifest position this skill as a comprehensive QA/testing utility, specifically an E2E test scaffolder. In the actual implementation, analyze() only sets static fields (status, target, findings) and no code generates test files, inspects application structure, configures frameworks, or performs QA-related automation.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The analyze() docstring says it will 'Perform the main analysis or operation', and the surrounding class/module naming implies meaningful E2E scaffolding behavior. However, the body contains a comment # Main logic here and only assigns canned values, so the documentation actively overstates what the function does.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module docstring and manifest position this file as a 'Test Suite Generator' for senior QA work, implying real test-generation or testing-analysis functionality. In practice, the code's analyze() method only sets static fields and an empty findings list, so the actual behavior does not match the claimed purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The script writes JSON output directly to a user-supplied path using normal write mode, which will create or overwrite files without any confirmation, safety check, or path restriction. In a CLI QA utility this is not inherently malicious, but it can still cause accidental data loss or unintended modification of files if the operator provides the wrong path or an attacker influences the arguments in an automated workflow.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The docstring for analyze() states it will 'Perform the main analysis or operation,' and surrounding comments imply real analysis results are being added. However, the method only populates hardcoded status/target fields and an empty findings list, which contradicts the documented intent of substantive analysis.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.