Back to skill

Security audit

Git Auto

Security checks for vulnerabilities and agentic risk

Overview

This Git automation skill matches its general purpose, but it can commit every workspace change and push it remotely without the safety checks it advertises.

Review carefully before installing. Use this only in repositories where committing all current changes is acceptable, run status and diff first, and avoid using its push action unless you have independently checked that no secrets, private memory files, or unrelated changes are included.

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

Error
Location
run.sh:34
Finding
Unrestricted Git Staging Can Commit and Expose Sensitive Workspace Files## Vulnerability Details **File Location**: `run.sh`, lines 34-55 **Vulnerability Type**: Unrestricted staging of all workspace changes without sensitive-file validation **Risk Level**: High ### Vulnerable Code ```bash FILES=$(git status --porcelain) # File type classification if echo "$FILES" | grep -q "skills/"; then PREFIX="✨ feat:" MSG="스킬 업데이트" elif echo "$FILES" | grep -q "memory/"; then PREFIX="🗃️ memory:" MSG="메모리 파일 업데이트" elif echo "$FILES" | grep -q "\.md$"; then PREFIX="📝 docs:" MSG="문서 업데이트" else PREFIX="🔧 chore:" MSG="작업 파일 업데이트" fi COMMIT_MSG="$PREFIX $MSG" git add -A git commit -m "$COMMIT_MSG" ``` ### Technical Analysis The `commit` action executes `git add -A`, which stages every modified, deleted, and untracked file visible to Git throughout the selected workspace. The preceding classification logic only chooses a commit message; it does not restrict which files are staged. No executable control checks for sensitive paths such as `.env` or `.secrets/`, scans staged content for credentials, verifies `.gitignore`, presents the exact staged set for approval, or enforces the documented confirmation requirement for changes affecting 100 or more files. This directly contradicts the safety rules documented in `GUIDE.md`, lines 61-73. The explicit recognition of `memory/` paths also means persistent agent data may be included in a commit. Although committing such data may sometimes be intentional, the script provides no content-level validation or user confirmation before staging it. ### Attack Path 1. A credential file, secret, private agent-memory file, or other sensitive untracked file is placed or generated under the configured workspace. 2. The user or agent invokes `run.sh commit`. 3. `git add -A` stages the sensitive file together with every other workspace change. 4. The script creates the commit without displaying the final staged file set or re ...[truncated 835 chars]
Remediation
## Remediation Suggestions 1. Replace `git add -A` with explicit staging of user-selected files or a validated allowlist. 2. Reject sensitive path patterns by default, including `.env`, `.env.*`, `.secrets/`, private keys, credential files, token stores, and agent-memory directories unless explicitly approved. 3. Inspect the final staged set with `git diff --cached --name-status` and require confirmation before committing. 4. Integrate secret scanning against staged content and abort when likely credentials, tokens, private keys, or passwords are detected. 5. Check both repository and global ignore rules, while recognizing that ignore rules alone are not a sufficient secret-control mechanism. 6. Enforce the documented large-change safeguard by counting affected files and requiring explicit approval when the threshold is reached. 7. Separate memory-related changes from ordinary source changes and require an explicit opt-in before staging them. 8. Before pushing, display the commits and changed files that will be sent to the remote. 9. Add automated tests proving that sensitive files, large change sets, and unrelated untracked files are not committed without explicit authorization.
Vulnerability Patterns
  • 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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Tool Parameter Abuse

High
Category
Tool Misuse
Content
### 3. push - 푸시
현재 브랜치를 origin으로 푸시:
```bash
git push origin $(git branch --show-current)
```
- 기본적으로 `main` 브랜치 가정
- 실제 브랜치명 자동 감지
Confidence
70% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Vague Triggers

Medium
Confidence
90% confidence
Finding
The commit examples are also overly generic for a state-changing action ('커밋해줘', '변경사항 커밋', '자동 커밋'). Because the documented behavior includes 'git add -A' followed by commit, a broad match could stage and record all changes—including unintended or sensitive files—based on a vague request.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The push invocation examples are extremely broad (e.g. '푸시해줘', 'git push', '리모트에 올려줘') for an operation that transmits local repository state to a remote. In an agent setting, such generic triggers can cause the skill to activate from casual or ambiguous user language without requiring confirmation, increasing the chance of unintended publication of code or secrets.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The commit action blindly stages all changes in the workspace with 'git add -A' and immediately commits them without any preview or confirmation. In a workspace automation skill, this can unintentionally capture secrets, unrelated files, deletions, or partially completed work, causing accidental disclosure or irreversible repository history changes.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The push action performs 'git push origin' directly to the current branch with no user-facing warning, confirmation, or dry-run. This can publish sensitive or erroneous commits to a remote repository, which is especially risky because network exfiltration and branch updates may be difficult to undo once propagated.

Natural-Language Policy Violations

Low
Confidence
98% confidence
Finding
Comments and user-facing strings such as status messages and usage text are written only in Korean, effectively forcing a specific language experience. There is no indication that the skill offers a language choice or that the locale restriction is documented as intentional and justified.

Static analysis

No suspicious patterns detected.