Back to skill

Security audit

Publish Quality Gate(发布质量门禁)

Security checks for vulnerabilities and agentic risk

Overview

This release checker can approve content containing secrets and expose files outside the selected folder despite its stated safeguards.

Use an isolated release copy without symlinks and treat reports as sensitive. Require containment checks, output redaction, corrected exemptions, and input validation before relying on this tool as a publication gate. Independently check releases for secrets; a successful result currently provides unreliable assurance. All bundled files were inspected, and the evidence supports implementation flaws rather than intentional theft.

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
scripts/check_release.py
Finding

File symlinks allow scanning credentials outside the authorized target

Content
View full analysis

Impact

Credential values outside the authorized artifact can be disclosed in the scan report or agent conversation. Network exfiltration or attacker access to that output is not established.

Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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 (3)

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 · scripts/check_release.py (reported line 21)May include surrounding context.

python
import sys
import zipfile

TEXT_EXTS = {'.md', '.py', '.json', '.txt', '.yml', '.yaml', '.html', '.csv', '.xml', '.ini', '.cfg', '.env'}
BIN_EXTS = {'.png', '.jpg', '.jpeg', '.gif', '.webp', '.ico', '.pdf', '.docx', '.xlsx', '.pptx', '.zip'}

# ============ 四层检查模式 ============

The public-brand exemption suppresses unrelated sensitive findings merely because the brand appears nearby.

High
Category
Excessive Agency
Confidence
99% confidence
Finding

The brand exemption examines the surrounding snippet and can exempt any finding type, including credentials, merely because the brand appears nearby. Because the keyword check includes the brand itself, the additional context requirement is effectively automatic; an attacker can place the brand beside sensitive data to remove it from real_hits and potentially obtain a successful release-gate exit code. This is particularly dangerous in a tool intended to prevent confidential information from being published.

Content

No source excerpt is available for this finding.

The technical-parameter exemption classifies nearby sensitive data as harmless instead of checking the matched value.

High
Category
Excessive Agency
Confidence
99% confidence
Finding

scan_text passes the entire surrounding snippet to is_false_positive, so a nearby allowlisted value such as 127.0.0.1 or 11434 suppresses an otherwise valid secret finding. Substring matching also allows an allowlisted sequence inside a longer sensitive value to suppress that value. In a publication gate, these bypasses can produce a clean result while credentials or personal information remain in the release.

Content

No source excerpt is available for this finding.