T09 · Insecure Skill Coding Practices
- Location
scripts/audit.py:11- Finding
Plaintext Transmission of Source Code and Authentication Key to a Remote Service
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is framed as a local security scanner, but its executable behavior is mainly a remote SaaS client that can send submitted code and an API key to a plaintext HTTP endpoint.
Review carefully before installing. Do not submit private code, secrets, customer data, or internal configuration unless you intentionally trust this remote SaaS service and override it to a verified HTTPS endpoint. The documented local-scan and --no-ai behavior is not implemented in the inspected script.
scripts/audit.py:11Plaintext Transmission of Source Code and Authentication Key to a Remote Service
User-provided code is sent to an external API endpoint for analysis, creating a direct data exfiltration path for source code, embedded credentials, infrastructure details, and other sensitive material. In the context of a security-audit skill, this is especially dangerous because users are likely to submit precisely the most sensitive code and configuration artifacts.
The skill declares environment and network requirements via metadata and documented API usage, but it does not define an explicit tool/permission scope. That makes the operational boundary unclear and can enable broader-than-expected access when the skill is invoked, especially for a skill that may send scan data to an external AI endpoint.
The invocation conditions are very broad, covering generic security review, code review, compliance, CI/CD, and third-party inspection scenarios. This can cause the skill to activate in routine development conversations and run with access to files or sensitive code more often than users expect, increasing accidental data exposure risk.
The skill documents use of an external API endpoint for AI analysis, which creates a real data egress path. In the context of a security-audit tool that may inspect sensitive source trees, even sending 'summaries' externally can expose confidential code patterns, secrets, or metadata if not tightly controlled and disclosed.
export SECURITY_API_USER_KEY="你的DeepSeek API Key"
# 可选:自定义API地址
export DEEPSEEK_BASE_URL="https://api.deepseek.com/v1"
💡 不配置API Key也能使用,只运行静态扫描,跳过AI深度分析
The skill performs external transmission of supplied data to a backend API, and the default API base uses plain HTTP to a hard-coded IP address rather than HTTPS. This permits interception or tampering in transit and compounds the confidentiality risk from sending sensitive audit content and API keys to a remote service.
if method == "GET":
resp = requests.get(url, headers=h, params=data or {}, timeout=30)
else:
resp = requests.post(url, headers=h, json=data or {}, timeout=60)
if resp.status_code >= 400:
try:
err = resp.json()
The skill is marketed as a security audit helper, but it also performs account registration, account lookup, billing-related messaging, and service upsell. This scope expansion is risky because users may trust the skill with sensitive code while it operates as a broader SaaS client, increasing the chance of undisclosed data handling and purpose creep.
The code forwards user-supplied audit content to a remote API, but there is no explicit user-facing warning or consent prompt before transmitting potentially sensitive source code. Because audit targets often contain secrets, proprietary logic, or internal URLs, silent external transmission materially increases confidentiality risk.
The generic services enumeration endpoint is unrelated to the stated purpose of code security auditing and exposes additional backend capabilities to the user. This broadens the operational surface and suggests the skill may be a thin wrapper over a multi-purpose remote platform rather than a narrowly scoped auditor.
The manifest description forces a specific language/locale presentation for the skill metadata, and the file does not indicate that the skill is China-specific or that users may opt into another language. Under the policy, language constraints should either be optional or clearly justified.
The documentation mentions that AI analysis may send summaries to a model, but it does not clearly warn that scanning a full directory and saving reports can itself aggregate secrets, personal data, or proprietary code indicators into output files. Those reports may then be stored, shared, or committed unintentionally.
This manifest describes the skill broadly as a security audit tool but does not define any specific invocation phrases, usage boundaries, or exclusion conditions. In manifest files, overly general descriptions without trigger constraints can contribute to unintended activation in contexts where generic security-review language appears.
The natural-language metadata includes a Chinese author name while the rest of the manifest is in English, which may indicate a locale-specific presentation choice. Because policy violations require language forcing without opt-in, this is only a low-confidence finding based on the visible metadata and lack of documented language-selection behavior.
This markdown file contains user-facing natural language content exclusively in Chinese, beginning with the title and continuing throughout the checklist. Under the policy, forcing a specific language without user opt-in or documented justification can be a natural-language policy violation.
User-facing strings in the module docstring and CLI output are exclusively Chinese, and the script does not offer a language or locale option. Under the stated policy, forcing a specific language without opt-in can be a natural-language policy violation unless the locale restriction is clearly documented and justified.
No suspicious patterns detected.