T09 · Insecure Skill Coding Practices
- Location
scripts/mcd_mcp_client.py:387- Finding
Sensitive Personal Information Exposed Through Command-Line Arguments
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill appears to do what it says, but it can create real McDonald's account actions and handle delivery personal information with insufficient built-in safeguards.
Install only if you are comfortable giving this skill a McDonald's MCP token and letting it act on that account. Require explicit user confirmation before creating addresses, creating delivery orders, claiming coupons in bulk, or redeeming points, and avoid putting addresses, phone numbers, or coordinates directly in shell commands or persisted agent logs.
scripts/mcd_mcp_client.py:387Sensitive Personal Information Exposed Through Command-Line Arguments
The skill invokes a local Python client that uses environment credentials and network/MCP capabilities, but the manifest does not declare any tool scope restrictions such as allowed tools or permissions. This weakens least-privilege controls and can allow broader-than-expected execution paths if the skill is loaded by an agent runtime that relies on declarative scoping for enforcement.
The trigger conditions are broad enough to match ordinary McDonald's-related conversation, including informational queries and transactional intents. In an agent environment, this increases the chance of accidental activation of a skill that can access account data, addresses, coupons, and ordering flows, potentially causing unintended data access or account actions.
The address creation step collects sensitive personal data including detailed address, geolocation, contact name, and phone number, but the documentation does not prominently warn that this information will be submitted to a third-party service. Without an explicit privacy notice and consent checkpoint, users may disclose more personal information than they realize.
Creating a delivery order is a real-world transactional action that sends order and delivery information to a third party and can lead to financial consequences or unwanted deliveries. The skill describes the mechanics of order creation but does not clearly require an explicit final confirmation or warn the user that their personal and order data will be transmitted externally.
The one-click coupon claim feature performs a bulk state-changing operation on the user's account, but the documentation does not warn that it will automatically claim all eligible coupons. This can surprise users, alter account state without informed consent, and potentially affect later coupon eligibility or user expectations.
All user-facing documentation is presented only in Chinese, and the content is framed around China-specific usage without stating that the skill is region- or locale-limited or offering an alternative language. Under the language/locale policy, a forced language without opt-in or clear justification can be a policy issue.
The delivery-create-address tool requires sensitive personal data including a full address, contact name, phone number, and precise coordinates, but the reference omits any privacy or data-handling warning. This can lead an agent to request, store, or submit unnecessary personal information without clearly signaling the sensitivity of the action.
The documentation describes create-order as a normal workflow step and highlights that it returns a payment link, but it does not explicitly warn that invoking the tool creates a real external-food-delivery order tied to the user's account. In an agent setting, this increases the risk of unintended real-world transactions if the model acts without a clear confirmation boundary.
auto-bind-coupons performs a bulk, account-affecting action by automatically claiming all available coupons, yet the documentation presents it as routine and warning-free. In an autonomous-agent context, this can trigger irreversible or user-visible account changes without the user understanding the scope of the action.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
}
try:
response = requests.post(
url,
headers=self.headers,
json=payload,
The CLI exposes actions that create delivery addresses and place orders using personal data and account-linked credentials, but it provides no explicit confirmation, consent prompt, or dry-run visibility before transmitting that data to the remote MCP service. In an agent-skill context, this increases the risk of unintended purchases or disclosure of address/contact information if the tool is invoked automatically or with misunderstood user intent.
The points redemption flow performs an account-affecting, potentially irreversible action immediately from the CLI without a warning or confirmation step. In a skill/agent environment, that creates a real risk of accidental point redemption triggered by ambiguous prompts, automation mistakes, or misuse of an authenticated token.
文件中的名称、描述、任务说明、示例和交互文本均固定为中文,且没有提供用户可选择语言的说明。若该技能面向通用用户环境,这构成了默认语言被强制设定而无显式 opt-in 的自然语言策略问题。
No suspicious patterns detected.