Back to skill

Security audit

Git cli

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Git command helper, but one troubleshooting entry recommends a persistent TLS verification bypass that could weaken repository security.

Install only if you are comfortable with a Git helper that may suggest repository-changing commands. Review any destructive Git command before running it, and avoid following the SSL advice to disable certificate verification persistently; prefer fixing the CA/proxy configuration or using a narrowly scoped diagnostic command with an explicit undo step.

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
reference/troubleshooting.md:63
Finding

Persistent Disabling of TLS Certificate Verification

Content
View full analysis

Vulnerability Details

File Location: reference/troubleshooting.md, line 63
Vulnerability Type: Persistent insecure Git TLS configuration
Risk Level: Medium

Complete Code Snippet:

markdown
- **Fix**: User may need to set `git config http.sslVerify false` temporarily (explain security trade-off) or install correct CA. Prefer directing to IT or host docs.

Technical Analysis

The documented command writes http.sslVerify=false to the repository-local Git configuration. Although the text describes the change as temporary, the command does not apply a temporary override and no restoration command is provided. Certificate verification therefore remains disabled for subsequent HTTPS Git operations performed in that repository.

Disabling certificate validation prevents Git from authenticating HTTPS servers. An attacker capable of intercepting or redirecting network traffic could present an untrusted certificate without Git rejecting the connection.

Attack Path

  1. A user encounters an SSL certificate error while accessing an HTTPS Git remote.
  2. The user follows the documented command:
    bash
    git config http.sslVerify false
    
  3. The setting persists in the repository's local Git configuration.
  4. The user subsequently runs an HTTPS operation such as git fetch, git pull, git clone, or git push.
  5. An attacker controlling a network path, DNS response, proxy, or compromised network gateway intercepts the connection and presents an untrusted certificate.
  6. Git accepts the attacker's endpoint because certificate verification is disabled.
  7. The attacker may observe authentication material exposed by the HTTPS exchange, impersonate the remote, tamper with fetched repository data, or intercept pushed content.

Impact Assessment

Exploitation requires a network interception or traffic-redirection position and does not directly grant local operating-system privileges. T ...[truncated 459 chars]

Remediation
View remediation

Remediation Suggestions

Remove the recommendation to persistently disable TLS certificate verification.

  1. Direct users to install or update the correct operating-system or corporate root CA.
  2. Where Git needs an explicit CA bundle, recommend a verified path:
    bash
    git config --local http.sslCAInfo /trusted/path/corporate-ca.pem
    
  3. Check proxy configuration, system time, certificate expiration, and Git/CA package versions before changing TLS behavior.
  4. If disabling verification is exceptionally required for a narrowly scoped diagnostic test, use a one-command override:
    bash
    git -c http.sslVerify=false fetch
    
    Clearly warn that this command remains vulnerable to interception and must not be used with sensitive repositories or credentials.
  5. If the persistent setting was already applied, restore secure behavior:
    bash
    git config --local --unset http.sslVerify
    
    Alternatively, explicitly enable verification:
    bash
    git config --local http.sslVerify true
    
  6. Advise users to verify the effective configuration and its origin:
    bash
    git config --show-origin --get-all http.sslVerify
    
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (14)

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 · SKILL.md (reported line 13)May include surrounding context.

md
## Your Workflow

1. **Confirm context**: Ensure Git is on PATH and the user is in (or will run commands in) a repo. If unsure, suggest `git status` or run `scripts/is-repo.sh` from the skill directory.
2. **Safety first**: Prefer read-only commands (`git status`, `git diff`, `git log`). Do not suggest destructive commands (`git reset --hard`, `git clean -fdx`, `git push --force`) unless the user explicitly asks and understands the risk. For recovery, use `git reflog` to find a commit before suggesting reset/checkout.
3. **Give the right level of detail**:
   - **Quick answer**: Use the Quick Reference table below and reply with the exact command(s).
   - **Step-by-step or edge cases**: Point to or quote from [reference/](reference/) (e.g. [reference/workflows.md](reference/workflows.md), [reference/troubleshooting.md](reference/troubleshooting.md)).

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
65% 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 · SKILL.md (reported line 13)May include surrounding context.

md
## Your Workflow

1. **Confirm context**: Ensure Git is on PATH and the user is in (or will run commands in) a repo. If unsure, suggest `git status` or run `scripts/is-repo.sh` from the skill directory.
2. **Safety first**: Prefer read-only commands (`git status`, `git diff`, `git log`). Do not suggest destructive commands (`git reset --hard`, `git clean -fdx`, `git push --force`) unless the user explicitly asks and understands the risk. For recovery, use `git reflog` to find a commit before suggesting reset/checkout.
3. **Give the right level of detail**:
   - **Quick answer**: Use the Quick Reference table below and reply with the exact command(s).
   - **Step-by-step or edge cases**: Point to or quote from [reference/](reference/) (e.g. [reference/workflows.md](reference/workflows.md), [reference/troubleshooting.md](reference/troubleshooting.md)).

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
65% 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 · reference/troubleshooting.md (reported line 49)May include surrounding context.

md
## Your Workflow

1. **Confirm context**: Ensure Git is on PATH and the user is in (or will run commands in) a repo. If unsure, suggest `git status` or run `scripts/is-repo.sh` from the skill directory.
2. **Safety first**: Prefer read-only commands (`git status`, `git diff`, `git log`). Do not suggest destructive commands (`git reset --hard`, `git clean -fdx`, `git push --force`) unless the user explicitly asks and understands the risk. For recovery, use `git reflog` to find a commit before suggesting reset/checkout.
3. **Give the right level of detail**:
   - **Quick answer**: Use the Quick Reference table below and reply with the exact command(s).
   - **Step-by-step or edge cases**: Point to or quote from [reference/](reference/) (e.g. [reference/workflows.md](reference/workflows.md), [reference/troubleshooting.md](reference/troubleshooting.md)).

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 · SKILL.md (reported line 13)May include surrounding context.

md
## Your Workflow

1. **Confirm context**: Ensure Git is on PATH and the user is in (or will run commands in) a repo. If unsure, suggest `git status` or run `scripts/is-repo.sh` from the skill directory.
2. **Safety first**: Prefer read-only commands (`git status`, `git diff`, `git log`). Do not suggest destructive commands (`git reset --hard`, `git clean -fdx`, `git push --force`) unless the user explicitly asks and understands the risk. For recovery, use `git reflog` to find a commit before suggesting reset/checkout.
3. **Give the right level of detail**:
   - **Quick answer**: Use the Quick Reference table below and reply with the exact command(s).
   - **Step-by-step or edge cases**: Point to or quote from [reference/](reference/) (e.g. [reference/workflows.md](reference/workflows.md), [reference/troubleshooting.md](reference/troubleshooting.md)).

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · assets/gitignore-common.txt (reported line 35)May include surrounding context.

text
.cache/

# Env and secrets (do not commit real secrets)
.env
.env.local
*.pem

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · assets/gitignore-common.txt (reported line 36)May include surrounding context.

text
# Env and secrets (do not commit real secrets)
.env
.env.local
*.pem

# Coverage / test

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 · reference/troubleshooting.md (reported line 24)May include surrounding context.

md
- **Fix**:
  1. `git pull` or `git pull --rebase`.
  2. Resolve conflicts if any, then `git push`.
- **Do not** suggest `git push --force` unless the user explicitly wants to overwrite remote (e.g. after rebase) and understands the risk; then prefer `git push --force-with-lease`.

## Merge or rebase conflicts

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 · reference/workflows.md (reported line 18)May include surrounding context.

md
2. Update main: `git switch main` then `git pull`.
3. Create branch: `git switch -c feature/my-feature`.
4. Make changes, then: `git add .` → `git commit -m "message"`.
5. First push: `git push -u origin feature/my-feature`.
6. Later: `git push`.

## Sync with remote when push is rejected

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
91% confidence
Finding

git reset --hard <hash> is a destructive command that can permanently discard uncommitted local changes and overwrite the working tree. Although the document includes a warning to confirm with the user, presenting this recovery step in a reusable workflow still creates risk of accidental data loss if followed carelessly or applied to the wrong commit.

Content

Scanner excerpt · reference/workflows.md (reported line 57)May include surrounding context.

md
## Recover after mistaken reset or checkout

1. `git reflog` — find the commit hash you want (e.g. before `reset --hard`).
2. `git checkout <hash>` to inspect, or `git reset --hard <hash>` to restore that state (destructive; confirm with user).

## Leave detached HEAD

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The primary descriptive text for the skill is presented in Chinese, with no indication that users may choose another language or that the locale is intentionally restricted. For organizational language/locale policy, this can be a natural-language policy issue when no opt-in or justification is provided.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

This markdown file instructs users to run Bash scripts from the repository root, but it does not include any explicit user-facing warning about how executing scripts can affect the current repository or shell environment. Even though the listed scripts appear diagnostic by name, the README omits a safety note about reviewing script behavior before execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown reference includes destructive commands such as git restore <path> and git restore ., marked only as 'destructive' in the table, but it does not provide a clear user warning about data loss implications or when to avoid using them. Under the markdown-file criteria, documentation should warn about behaviors that could affect user data or system integrity.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The reference lists git push origin --delete <branch> as a normal command entry without a clear warning that it deletes a remote branch and can disrupt collaborators. For markdown skills, operations affecting shared repository state should include an explicit caution about the impact.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The local and remote tag deletion commands are presented without any warning about their potentially disruptive or irreversible impact, especially for the remote deletion variant. Markdown guidance should disclose actions that may affect shared repository integrity or collaboration workflows.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.