Back to skill

Security audit

keyword-report

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a normal SEO keyword-reporting guide, but it tells the agent to run an unbundled validator from a dynamically located skills root without integrity checks.

Review before installing. The SEO reporting behavior is coherent, but only use this skill in an environment where the Groundcrew validator path is trusted and controlled, or require the validator to be bundled or pinned before allowing the command to run.

Vulnerability Patterns
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • 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)

T07 · Tool Hijacking and Spoofing

Error
Location
SKILL.md:7
Finding

Execution of an Unverified Out-of-Package Validation Tool

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 7
Vulnerability Type: T07: Tool Hijacking and Spoofing
Risk Level: High

Vulnerable Code Snippet

markdown
Read `references/provider-selection.md` before choosing a source. Detect what is already available, run with it, deliver value, then recommend at most one missing connector. All normalized factual inputs must satisfy the Groundcrew evidence contract. Locate the active skills root and run `<skills-root>/.groundcrew/groundcrew-doctor.py --evidence <record.json>` before using them in a conclusion. Output follows `references/reporting.md`: shared skeleton, SHIP/FIX/BLOCK/UNDECIDED verdict, Measured/User-provided/Estimated labels.

Technical Analysis

The skill instructs the agent to discover an “active skills root” and execute groundcrew-doctor.py from that location. The executable is not included in the audited package, and the instruction does not require verification of its ownership, integrity, permissions, signature, or cryptographic digest.

The security of this operation therefore depends on how the active root is resolved and who can modify it. If an attacker can influence root discovery or write to <skills-root>/.groundcrew/, they can replace the expected validator with an attacker-controlled program. The resulting command would appear legitimate because it uses the documented filename and path layout, while actually invoking substituted code.

This is a local tool-spoofing risk rather than confirmed embedded malware: the audited artifact contains no malicious script, but its documented execution procedure lacks a trust-boundary check.

Attack Path

  1. The attacker obtains write access to a candidate skills root or influences the mechanism used to select the active skills root.
  2. The attacker creates or replaces <skills-root>/.groundcrew/groundcrew-doctor.py with a malicious Python program.
  3. A user invokes this keyword-report skill.
  4. The agent follows `S ...[truncated 1235 chars]
Remediation
View remediation

Remediation Suggestions

  1. Bundle the validator inside the reviewed package, or install it through a trusted and version-pinned distribution mechanism.
  2. Resolve the validator from an explicit, immutable path rather than dynamically discovering an “active skills root.”
  3. Before execution, verify the validator against a pinned cryptographic digest or trusted digital signature.
  4. Reject the validator when its file, parent directory, or resolved root is writable by untrusted users or groups.
  5. Resolve symlinks and confirm that the canonical path remains within an approved directory.
  6. Execute the validator with a fixed interpreter and argument array rather than constructing a shell command.
  7. Run it in a sandbox with minimal filesystem access, no unnecessary credentials, and network egress disabled.
  8. Prefer a non-executable local schema validator when evidence validation does not require arbitrary program logic.
  9. Fail closed if the trusted validator is missing or fails integrity checks; do not search fallback paths.
  10. Document the approved validator version, source, expected digest, and trust assumptions directly in the skill package.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/connectors.md (reported line 48)May include surrounding context.

md
- **Tier 1.** Google Suggest for expansion (unofficial endpoint; treat as hints, `confidence: low`). A SERP the user pastes or fetches is an observation for that query, locale, device, and date — record all four.
- **DataForSEO.** Paid, per-request. Read `dataforseo.md`; show the cost preflight and get approval for each batch.
- **Ahrefs MCP** (`https://api.ahrefs.com/mcp/mcp`, API key on a plan that includes MCP) and **Semrush MCP** (`https://mcp.semrush.com/v1/mcp`, OAuth or API key). Use only when the user already pays for the tool and has configured the MCP in their client. Label rows `source: "ahrefs"` / `"semrush"`, `confidence` per the vendor's own accuracy notes; these are third-party estimates, not the user's own data.
- **TrustGrowth.** `keywords` (typed opportunities with volume, difficulty, intent, current position, scores) for the verified site. SERP snapshots per keyword are scheduled (TEC-7796).

### `~~link database` — backlinks and authority