Back to skill

Security audit

Github Operations

Security checks for vulnerabilities and agentic risk

Overview

This skill transparently manages GitHub resources with a user-provided token, including clearly warned repository deletion that requires confirmation.

Install only if you are comfortable giving the skill a GitHub token. Use a fine-grained token limited to the repositories and actions you need, review repository deletion carefully, and prefer upgrading python-dotenv before use.

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
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (7)

Lp1

High
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The script reads a GitHub token from environment variables via os.getenv/load_dotenv, but the declared permissions do not disclose environment access. In an agent-skill context, undeclared secret access is dangerous because it can silently consume credentials beyond what a reviewer expects, expanding the trust boundary and enabling unintended use of sensitive tokens for destructive GitHub operations.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: python-dotenv==1.0.1 — 2 advisory(ies): CVE-2026-28684 (python-dotenv: Symlink following in set_key allows arbitrary file overwrite via ); CVE-2026-28684 (python-dotenv reads key-value pairs from a .env file and can set them as environ)

Medium
Category
Supply Chain
Confidence
92% confidence
Finding

The dependency is pinned to python-dotenv 1.0.1, which is reported as vulnerable to a symlink-following issue in set_key that can enable arbitrary file overwrite when modifying .env files. In a GitHub operations skill with repository write and external network permissions, any code path that updates environment files or handles attacker-controlled repository content could make this easier to trigger and increase operational risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This code file performs network/API calls that send user-supplied repository metadata and content to GitHub, but most mutating operations only have internal docstrings/comments and no visible user-facing notice at execution time. Under SQP-2 for code files, network calls that transmit user or system data should have some disclosure unless the warning is provided elsewhere, which is not shown in this file.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest description says the skill supports CRUD operations for repositories, branches, PRs, and issues. In the actual code, repositories have create/read/list/delete support, but branches only support create/list, PRs only support create/list, and issues only support create/list; update and delete operations are absent for those resource types. This creates a semantic mismatch between the claimed capability scope and implemented behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The description contains Chinese text followed by an English instruction ('Do NOT use for repository cloning.') even though the policy requires flagging forced language or locale behavior without user opt-in. The file consistently presents the skill in Chinese while introducing an English-only constraint, and it does not state that users may choose their preferred language.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest description is primarily in Chinese but includes the directive "Do NOT use for repository cloning." only in English. This creates a language-policy inconsistency because the skill communicates an important usage constraint in a language that may not match the rest of the user-facing metadata, without offering locale choice or opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

Natural-language strings throughout the file, including the top-level description and command help, are presented in Chinese with no indication that the user can select another language. This is a language/locale policy concern because the skill imposes a specific locale without opt-in or a documented region-specific requirement.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.