Back to skill

Security audit

Gstack Pro

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent software-development workflow skill, but its QA and shipping instructions give agents high-impact code, browser, and git authority without enough confirmation or scope controls.

Install only if you want an agent to help with active engineering workflows. Before using /qa or /ship, require the agent to confirm the target URL, repository, branch, staged file list, staged diff, and every git push. Avoid running the ship workflow on protected branches or repositories containing local secrets unless you have added stricter branch and secret-scan safeguards.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
references/ship.md:53
Finding

Overly Broad Git Staging Can Publish Unintended Sensitive Files

Content
View full analysis

Vulnerability Details

File Location: references/ship.md, lines 53–67
Vulnerability Type: Unsafe repository staging and publication
Risk Level: Medium

Vulnerable Code

bash
### Step 4: Commit

```bash
git add -A
git commit -m "<type>(<scope>): <description>

BREAKING CHANGE: <if applicable>
Closes #<issue-number>"

Step 5: Push

bash
git push origin <feature-branch> --force-with-lease
# --force-with-lease: refuses push if remote has new commits
text

### Technical Analysis

The release workflow uses `git add -A`, which stages all tracked modifications, tracked deletions, and untracked files throughout the repository. It does not restrict staging to files intended for the release.

The workflow subsequently commits the staged content and pushes the resulting commit to the configured remote repository. There is no intervening requirement to inspect the staged file list, review the staged diff, scan for secrets, or confirm the publication with the user.

Git ignore rules may reduce exposure, but they do not provide a sufficient security boundary. Sensitive files may be unignored, ignore rules may be incomplete, or unrelated tracked files may contain local secrets or confidential changes.

### Attack Path

1. A sensitive or unrelated file is present in the repository working tree and is not excluded by Git ignore rules. Examples may include a local configuration file, generated artifact, credential file, or unrelated source change.
2. The user or release agent invokes the `/ship` workflow.
3. `git add -A` stages the unintended file together with the legitimate release changes.
4. `git commit` records all staged content in repository history.
5. `git push origin <feature-branch> --force-with-lease` transmits that commit to the configured remote.
6. Anyone with access to the remote branch or its history may obtain the unintentionally published content.

This path can occur accidentally.
...[truncated 743 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace broad staging with an explicit allowlist of release files:
bash
git add package.json package-lock.json src/ tests/
  1. Before committing, require review of both the staged file list and staged content:
bash
git diff --cached --name-status
git diff --cached
  1. Abort automatically if staged paths are outside an approved allowlist or include sensitive patterns such as .env, private keys, credentials, tokens, database dumps, or generated archives.

  2. Run a secret scanner against the staged diff before committing. Configure it to fail closed when high-confidence credentials are detected.

  3. Require explicit user confirmation after displaying the exact staged paths and before executing git commit or git push.

  4. Verify that repository-specific ignore rules cover local configuration, credentials, build output, QA screenshots containing sensitive data, and temporary files. Treat ignore rules as defense in depth rather than the primary control.

  5. Separate version updates from unrelated working-tree changes. Prefer running the release workflow only from a clean working tree or a dedicated temporary worktree.

  6. Add preflight checks such as:

bash
test -z "$(git status --porcelain)" || {
  echo "Working tree is not clean; review changes before release."
  exit 1
}

If intentional release changes must already exist, capture and validate their paths before any automated versioning operation rather than accepting every working-tree change.

Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| `SKILL.md` | This file — overview and usage |

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documented git push ... --force-with-lease is safer than raw --force, but it still rewrites remote branch history and can discard collaborators' expected commit topology or break downstream automation. Because this is presented as a standard step in a 'One-Command Ship' workflow, an agent may apply it routinely without checking whether force-push is permitted or appropriate for the branch.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
94% confidence
Finding

This is a true tool-parameter abuse risk because the skill normalizes a dangerous git parameter in an automation-oriented context. Even though --force-with-lease has a safeguard, it is still a high-risk write operation that can be misapplied by an agent to the wrong branch or repository, causing history rewrite and collaboration disruption.

Content

Scanner excerpt · references/ship.md (reported line 66)May include surrounding context.

Step 5: Push

bash
git push origin <feature-branch> --force-with-lease
# --force-with-lease: refuses push if remote has new commits

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The rollback instructions direct git push origin main after a revert, which modifies the main branch directly and can trigger production or deployment workflows immediately. Without a warning or approval checkpoint, an agent following this runbook could make high-impact production changes on the default branch without adequate review.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The activation guidance is broad enough to trigger on many normal software-development conversations, which increases the chance the skill will engage high-impact behaviors unexpectedly. In this skill’s context, that matters because the workflow includes browser QA, code modification, and shipping actions, so accidental invocation can expand scope from advice to action without clear user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill advertises browser automation and one-command shipping but does not prominently warn that these actions can interact with live systems, repositories, or external services. In context, this is more dangerous than a generic documentation issue because the workflow explicitly includes clicking through sites, fixing issues, pushing code, and opening PRs, which could cause unintended state changes or releases.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The workflow and command examples include Chinese text such as "CEO审视" and Chinese prompt examples, but the file does not state that language is optional or user-selected. This can create an implicit locale expectation without opt-in, which is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file is entirely in Chinese with no language-selection mechanism or documented locale restriction, which can cause users or downstream agents to misunderstand instructions, skip review, or execute tasks incorrectly. In a multi-agent engineering workflow, language mismatch increases the chance of requirement drift, bad approvals, or unsafe actions due to partial comprehension.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The entire skill description, role, workflow, and required output format are written in Chinese, which implicitly directs operation and responses in a specific language. There is no indication that the user may choose another language or that the Chinese-only constraint is required for a region-specific purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill explicitly instructs the QA agent to both modify code ('找Bug → 修Bug → 重验证', '写修复代码') and write artifacts such as screenshots to disk, but it does not require explicit user confirmation before making those changes. In an agentic environment, this can lead to unintended file modifications, noisy repository changes, or destructive edits being performed under the guise of QA automation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill content is entirely written in Chinese and presents the command and output format in that locale without any indication that the user can choose another language. In a multi-user agent skill, forcing a single language can cause misunderstanding of operational guidance, review outputs, and remediation steps, which degrades safe and reliable use even if it is not a code-execution issue.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill instructs the agent to run repository-modifying commands including stash, branch checkout, rebase, version bump, and later commit/push operations without any explicit warning that these actions change local history and repository state. In an agent skill intended for one-command shipping, this increases the chance of unintended branch mutation, lost uncommitted work, or accidental release actions if invoked in the wrong context.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill instructions, workflow, and output format are all written in Chinese, which can effectively force a specific language for operation and reporting. There is no indication that the user may choose another language or that the locale restriction is intentional and justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.