Back to skill

Security audit

Blog Writing

Security checks for vulnerabilities and agentic risk

Overview

This SEO writing skill is mostly coherent, but it asks agents to run with full execution privileges and bypass normal approval gates for a blog-writing workflow.

Review before installing. The workflow is useful for SEO content production, but only run it in a constrained workspace, confirm which files it may read and write, and do not grant full execution privileges unless you trust the referenced QA scripts and the network requests they make.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:12
Finding
Mandatory Unrestricted Execution Violates Least-Privilege Boundaries## Vulnerability Details **File Location**: `SKILL.md`, lines 12–29 **Vulnerability Type**: `T05: Unauthorized Access and Privilege Escalation` **Risk Level**: High **Vulnerable instruction:** ```markdown ## Execution Model (IMPORTANT) This skill requires running shell commands (Phase 5 link verification, Phase 6 QA runner). It **must** be executed in a context with full exec permissions. **Always spawn the writing subagent with `security: "full"`:** ``` sessions_spawn( task: "[full article brief]", runtime: "subagent", security: "full" ← REQUIRED — without this, exec approval gates block Phase 5 & 6 ) ``` If running in main session directly (fallback only), exec permissions are already sufficient — proceed normally. **Never spawn without `security: "full"` — the subagent will silently skip QA and deliver an unverified draft.** ``` ### Technical Analysis The skill explicitly requires its writing subagent to run with unrestricted execution permissions and characterizes execution approval gates as barriers that must be avoided. This conflicts with the principle of least privilege. The documented workflow only requires narrowly scoped operations: executing a known local Python QA script, reading and writing content files in expected project directories, and performing outbound HTTP requests to verify links. These operations do not require unrestricted access to every command and resource available to the host agent. Granting `security: "full"` to the entire subagent also applies to operations influenced by article briefs, local context files, URLs, and scripts outside this package. Because the referenced `seo-geo-qa` scripts are not included in the audited project, their implementation and safety cannot be verified. Unrestricted execution therefore unnecessarily expands the trust boundary around unreviewed code and potentially attacker-controlled content. ### Attack Path 1. An attacker supplies ...[truncated 1830 chars]
Remediation
## Remediation Suggestions 1. Remove the instructions that mandate `security: "full"` and prohibit normal approval gates. 2. Run the writing workflow with the default restricted security profile. 3. Grant only the capabilities required by each phase: - Read access to explicitly approved product, brand, and planning files. - Write access limited to designated article and QA-report directories. - Execution permission limited to an approved Python interpreter and a pinned, reviewed QA script. - Outbound HTTP access limited to link-verification operations where practical. 4. Require explicit approval before executing unreviewed scripts or commands outside an allowlist. 5. Review and vendor the referenced `seo-geo-qa` scripts with the skill, or pin them to an integrity-verified version. 6. Pass paths, keywords, and URLs as structured arguments rather than interpolating them into shell command strings. 7. Validate file paths against an allowed project root, reject traversal sequences, and use subprocess APIs without shell interpretation. 8. Preserve execution logs and surface QA failures instead of silently bypassing QA when permissions are unavailable. 9. If elevated execution is exceptionally required, isolate it in a sandbox with a minimal filesystem view, no unnecessary credentials, restricted networking, and a short-lived runtime.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (5)

Vague Triggers

Medium
Confidence
89% confidence
Finding
The activation guidance says to use the skill for 'any blog article' and 'any website or blog,' which is very broad and overlaps with common content-writing requests. It does not provide limiting conditions, explicit trigger phrases, or negative examples to clarify when this workflow should or should not be invoked.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill explicitly requires spawning a subagent with `security: "full"` and states this is mandatory to bypass exec approval gates for later phases. This is dangerous because it normalizes requesting elevated execution privileges up front and can lead to automatic command execution and network access without proportional user consent.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill mandates writing drafts and partial outputs to disk automatically, including during failure recovery, without requiring explicit user awareness or approval. In an agent setting, silent file modification can overwrite user work, create unintended artifacts, or persist sensitive content locally in ways the user did not expect.

External Transmission

Medium
Category
Data Exfiltration
Content
### Process
1. Extract all URLs from the article
2. Test each with `web_fetch` or `curl -sI`
3. Check for: 404, 403, redirects to wrong content, paywalls
4. For non-obvious external sources, run a source-quality spot check (AITDK/Ahrefs/search evidence)
Confidence
93% confidence
Finding
The skill directs the agent to fetch and validate external URLs using `web_fetch`, `curl -sI`, and third-party source-quality checks. This creates external network transmission based on article content and discovered links, which can leak browsing intent, project context, or embedded sensitive URLs to external services without an explicit trust boundary or approval step.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
Most of the skill is written in English, but the title-year rules section switches to Chinese for headings and explanatory text. This imposes a language change on readers without opt-in or justification, which is a natural-language policy issue under the locale/language rule.

Static analysis

No suspicious patterns detected.