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

Content
View full analysis

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
View 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
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).

Content

Scanner excerpt · GUIDE.md (reported line 36)May include surrounding context.

3. push - 푸시

현재 브랜치를 origin으로 푸시:

bash
git push origin $(git branch --show-current)
  • 기본적으로 main 브랜치 가정
  • 실제 브랜치명 자동 감지

Vague Triggers

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.