Back to skill

Security audit

make-blog-post

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed blog-post drafting workflow that requires user confirmation before file changes or publishing-related actions.

Install only if you want the agent to proactively suggest or prepare blog-style walkthroughs for reusable code. Review Gate 1 carefully because the skill may propose local post-store or workspace documentation paths before writing anything.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Hidden Instructions

High
Category
Prompt Injection
Content
| Eleventy | `.eleventy.js`, `eleventy.config.js` | `posts/`, or the folder named in the config | Front matter plus the directory data file. A `tags` value is what puts the post in the feed. |
| Next.js | `next.config.*` with an MDX or content pipeline | `content/`, `posts/`, `app/blog/` | MDX rules apply: components must be imported or provided, and raw `<` in prose breaks the parse. |
| Gatsby | `gatsby-config.js` | `content/blog/` | Front matter fields must exist in the GraphQL schema the templates query. |
| Docusaurus | `docusaurus.config.js` | `blog/` | Date from the file name prefix or a `date` field. `<!--truncate-->` marks where the excerpt ends. |
| Hexo | `_config.yml` with `hexo` dependencies | `source/_posts/` | YAML front matter. `<!-- more -->` marks the excerpt break. |
| Zola | `config.toml` with `base_url` | `content/` | TOML front matter fenced by `+++`, not `---`. |
| VitePress | `.vitepress/` | the folder the theme configures | Front matter plus whatever index page lists the posts. |
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The skill metadata advertises very broad trigger phrases such as 'make a blog post' and 'write a blog post about this', which can overlap with ordinary writing or code-assistance requests. In an agentic environment, this increases the chance of unintended activation, causing the agent to begin content-generation and file-routing logic in contexts where the user did not explicitly intend to invoke this workflow.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The activation criteria are broad enough to match many normal development situations, such as merely touching a reusable helper or extracting code, and the skill even instructs itself to stay silent if the code does not qualify. That combination is risky because it can cause covert or surprising behavior selection without transparent user awareness, especially in automated systems that dispatch skills based on semantic similarity.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- **Do not post, upload, commit, or push.** Staged mode ends at the hand-off.

Mode does not weaken the gates. Confirmation still comes first, and nothing
reaches a public venue without approval.

## Step 5: Apply the Security and Content Rules
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Static analysis

No suspicious patterns detected.