Back to skill

Security audit

Universal Release

Security checks for vulnerabilities and agentic risk

Overview

This release helper is mostly coherent, but it can turn a simple push request into local release edits, commits, tags, and possible remote publishing.

Install only if you want an opinionated release workflow. Do not use it for routine git pushes unless you are comfortable with it preparing a release; review planned file edits, commits, tags, target branch, and push behavior before allowing it to proceed.

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
Findings (1)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:469
Finding
Explicit User Intent Overridden by Forced Release Workflow<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 469–472 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High ### Vulnerable Code ```markdown - "push to remote" (with uncommitted changes) **Important**: If user says "just push" or "直接 push" with uncommitted changes, STILL follow all steps above first. ``` ### Technical Analysis The skill explicitly instructs the agent to disregard a user's narrowly scoped request to “just push” and instead execute the entire release workflow. The preceding workflow includes modifying README, changelog, and version files; creating separate module commits; creating a release commit; and adding a version tag. This is instruction hijacking because the skill changes the effective objective of the current session from pushing existing work to preparing and potentially publishing a new release. The instruction is unconditional when uncommitted changes exist and therefore overrides explicit user intent. The confirmation described in the workflow occurs only after module-specific commits and file modifications may already have been performed. It asks the user to select a version and whether to push, but it does not provide prior authorization for every repository mutation. Consequently, local repository state can be changed before informed consent is obtained. ### Attack Path 1. A user invokes the skill by requesting “just push” while the repository contains uncommitted changes. 2. The quoted instruction forces the agent to execute the complete release process rather than limiting the operation to the requested push. 3. The agent analyzes Git history and groups changes by module. 4. It may update README files and create one or more module-specific commits. 5. It generates or modifies changelogs and updates the detected version file. 6. It creates a release commit and version tag after the workflow confirmation. 7. If the user approves the push without recognizing the expanded sco ...[truncated 879 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the instruction requiring the full release workflow when the user explicitly requests only a push. 2. Respect the narrowest reasonable interpretation of explicit user intent. A “just push” request should not imply a version bump, changelog generation, release commit, or tag creation. 3. If uncommitted changes prevent a push from accomplishing the user's likely objective, report their presence and ask whether the user wants to: - Leave them uncommitted and push existing commits only. - Commit selected changes and push. - Start the complete release workflow. 4. Obtain confirmation before any mutation, including: - README or changelog changes. - Version-file updates. - Staging files. - Creating each commit. - Creating or replacing tags. - Pushing branches or tags. 5. Present a precise preview listing every file to be modified, every commit to be created, the destination remote and branch, and whether a tag or downstream release may be triggered. 6. Make the release workflow explicitly opt-in through an unambiguous release command or affirmative confirmation. 7. Implement `--dry-run` as a strictly read-only operation and recommend it whenever the requested operation could expand into a release. 8. Replace the vulnerable instruction with language such as: ```markdown If the user requests only a push, do not perform the release workflow. Report any uncommitted changes and ask whether to push existing commits, commit selected changes, or explicitly begin a release. ``` ]]>
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Vague Triggers

High
Confidence
97% confidence
Finding
The skill metadata advertises very broad trigger phrases including generic terms like "push", "release", and multilingual variants, which can cause the release workflow to activate in contexts where the user did not intend a versioning and git/tagging operation. Because this skill performs high-impact repository actions such as committing, tagging, and potentially pushing to remote, accidental invocation materially increases the risk of unintended source-control changes.

Vague Triggers

High
Confidence
96% confidence
Finding
The "When to Use" section explicitly instructs invocation on broad phrases like "push to remote" and even says to still follow the full release workflow when the user says "just push." This creates an unsafe semantic mismatch where a simple push request can trigger commits, changelog edits, version bumps, tagging, and remote publication that exceed the user's likely intent.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
The instructions require generating content in each detected changelog language and writing change descriptions naturally in that language. This imposes language output behavior based on file detection rather than explicit user choice, which can violate language/locale choice expectations.

Static analysis

No suspicious patterns detected.