T09 · Insecure Skill Coding Practices
- Location
SKILL.md:38- Finding
Plaintext Storage of DingTalk Bot Credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent DingTalk integration guide, but users should handle webhook secrets and business messages carefully.
Before installing, make sure the DingTalk webhook token and signing secret are not committed, logged, screenshotted, or shared. Restrict the config file permissions, rotate the webhook if exposed, and avoid sending customer, employee, approval, or incident details to DingTalk unless that group is approved for that data.
SKILL.md:38Plaintext Storage of DingTalk Bot Credentials
The skill instructs users to place a DingTalk webhook URL and signing secret directly into a local config file and discusses testing with those values, but provides no guidance on secret storage, file permissions, redaction, or rotation. This creates a realistic risk of credential leakage through source control, shell history, screenshots, support logs, or overly permissive config files, which could let an attacker send messages to enterprise DingTalk groups.
The skill promotes automated daily reports, infrastructure alerts, and approval processing without warning that operational, business, or approval data may be transmitted to DingTalk. In an enterprise context, this can cause unintended disclosure of sensitive internal data, especially if alerts or approval payloads include customer, employee, or system details.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -X POST "YOUR_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{"msgtype":"text","text":{"content":"测试"}}'
The description explicitly targets Chinese enterprise users and the entire skill is presented only in Chinese. Per the language/locale policy rule, forcing a specific language without user opt-in or a clearly documented region-specific justification can be a natural-language policy violation.
The skill name, description, and keywords indicate a China/Chinese-specific experience (e.g. "cn", Chinese-language description, and "chinese" keyword), but the manifest does not state that this locale restriction is optional or justified by a region-specific compliance requirement. This can conflict with language/locale policy when users are not given a choice or informed of the constraint.
No suspicious patterns detected.