T09 · Insecure Skill Coding Practices
- Location
scripts/server.py:62- Finding
Flask Development Debugger Exposed on All Network Interfaces
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent customer-support scaffold, but its runnable server is exposed with debug mode and unauthenticated webhook/escalation routes, so it needs review before use.
Install only for development or a controlled internal environment unless you first disable Flask debug mode, bind to localhost or a protected interface, add authentication/signature validation and rate limits to the endpoints, and pin dependencies. Do not connect it to real customer channels or ticket systems until those controls are in place.
scripts/server.py:62Flask Development Debugger Exposed on All Network Interfaces
scripts/server.py:36Webhook and Escalation Endpoints Lack Authentication
SKILL.md:27Flask Dependency Is Installed Without Version or Integrity Pinning
The skill describes capabilities that rely on environment-based secrets and external integrations, but it declares no explicit tool scope or permission boundaries. In an agent ecosystem, missing scope metadata can cause the skill to be invoked with broader access than intended, increasing the chance of unauthorized secret access or unsafe execution assumptions.
The trigger phrases are broad, natural-language requests that could match ordinary user conversations and unintentionally activate the skill. In a customer-support automation context, accidental invocation could expose webhook behavior, initiate message handling flows, or cause unintended outbound integrations/escalations.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
2) 启动服务(开发):
uv run python skills/auto-customer-support/scripts/server.py --port 5005
3) 测试请求:
curl -X POST http://localhost:5005/webhook -H "Content-Type: application/json" -d '{"message":"如何退款","sender":"user-123"}'
输出(示例)
- 成功匹配时返回:{ "reply": "...", "confidence": 0.95, "escalate": false }
The entire auto-reply template is written in Chinese and provides no indication that recipients can choose another language or that the template is intended only for a Chinese-language audience. This can violate a language/locale policy when the skill is used in broader contexts without explicit user opt-in.
The FAQ entries and responses are entirely in Chinese, which implies the skill is designed to interact in a fixed language. There is no indication in this file that users can choose another language or that the Chinese-only scope is explicitly justified as a region-specific skill.
All user and bot utterances are written in Chinese, and the example gives no indication that other languages are supported or that the language requirement is optional. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.
The phrase '任何能 POST JSON 的平台' defines the integration scope extremely broadly without constraints or examples of what should not be connected. For a markdown guide, this creates an ambiguous trigger/invocation boundary and could encourage unintended integrations.
The fallback reply is always returned in Chinese, regardless of the user's input language or any stated locale setting. This creates a natural-language policy issue because the skill enforces a language without opt-in or justification.
The file presents all operational guidance exclusively in Chinese, which can amount to a language-policy issue when no user language choice or justification is provided. The content does not indicate that the skill is region-specific or intentionally limited to Chinese-speaking users.