T09 · Insecure Skill Coding Practices
- Location
SKILL.md:70- Finding
Account Token Stored in Plaintext Cron Configuration
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a real account automation tool, but it under-discloses sensitive token handling and financial/account-impact risks.
Review before installing. Use only an account you are comfortable automating, treat MCD_TOKEN like a password, avoid putting it directly in cron, and do not rely on the advertised one-click ordering capability without inspecting and adding explicit confirmation and price-review safeguards.
SKILL.md:70Account Token Stored in Plaintext Cron Configuration
mcd-cli.sh:26Hard-Coded Shared API Signing Secret Using MD5
mcd-cli.sh:50Authenticated JSON Parameter Injection Through Unsafe String Interpolation
The skill description presents consumer-order automation, but the supplied content also implies authenticated external API use with token capture/handling while failing to reflect that in permissions or safety constraints. This mismatch can mislead users and platforms about the real risk boundary, especially when the skill can place real orders and interact with account-linked services.
The skill advertises shell-based operational behavior via required binaries (curl, jq) but does not declare any explicit tool scope such as permissions or allowed-tools. This weakens containment and reviewability because the skill can drive networked shell actions against authenticated APIs without a clear least-privilege declaration.
The skill instructs users to capture and export an account token without clear warnings about credential sensitivity, account takeover risk, or secure handling requirements. Because the token appears sufficient to access McDonald's account functions, accidental leakage could enable unauthorized coupon redemption, order placement, or account abuse.
Documenting a one-click order command without an explicit warning that it may submit a real purchase creates a significant risk of unintended financial or account impact. In this skill context, ordering is not hypothetical: it is a direct, real-world transaction against a user's linked account and store selection.
The script transmits an authentication token and user-supplied request data to a remote service over the network, enabling account-linked actions such as coupon claiming and inventory/order-related queries. In this skill context, the danger is elevated because the tool automates authenticated actions against a consumer account, but there is no explicit user consent flow, destination verification beyond the hardcoded host, or safeguards around sensitive token usage.
local timestamp=$(date +%s)
local sign=$(echo -n "${path}${timestamp}${data}2Iyu4Gd9oJRFJl90JJq1JOn58wWecU9i" | openssl md5 -r | awk '{print $1}')
curl -s -X $method \
--connect-timeout $DEFAULT_TIMEOUT \
-H "Content-Type: application/json" \
-H "MCD-Token: $MCD_TOKEN" \
This shell script performs outbound HTTP requests to a remote API and includes the sensitive MCD_TOKEN credential in request headers. While the script has informational output for some actions, it does not disclose to the user that their token and request data will be transmitted to an external service.
Manifest description states the tool supports placing orders, and the CLI help text also advertises order:place. However, the command dispatcher implements only coupon receipt, store stock query, and order calculation; there is no order:place branch or corresponding function. This creates a clear description-to-behavior mismatch about the skill's actual capabilities.
All user-facing description, setup steps, examples, and command context are presented only in Chinese, with no indication that alternative languages are supported or that the locale restriction is intentional and documented. The policy requires flagging language or locale constraints when they are imposed without user opt-in or justification.
All user-facing comments and command-line messages are in Chinese, and the script does not offer an alternative language or document that it is intentionally region-specific. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern.
No suspicious patterns detected.