T09 · Insecure Skill Coding Practices
- Location
SKILL.md:135- Finding
Shell Command Injection Through User-Controlled Lead Fields
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a real maternity-service lead submission workflow, but it handles sensitive phone and pregnancy-related information with logging, endpoint-disclosure, and command-construction risks that users should review before installing.
Review this as a lead-generation skill rather than a full matching tool. Before installing, be comfortable sending phone number, SMS code, city, due-date timing, service period, and budget to the service backend, and avoid using it where process logs are retained or shared until verification-code and response logging are fixed.
SKILL.md:135Shell Command Injection Through User-Controlled Lead Fields
dist/cli.js:78SMS Verification Codes Are Written to Process Logs
references/commands.md:12Documented Personal-Data Destination Does Not Match the Executed Endpoint
Outbound request logging masks phone numbers but does not mask the verification code, so one-time authentication codes are written to stderr in cleartext. Anyone with access to local logs, terminal history capture, CI output, or agent execution traces could reuse the code during its validity window to complete verification and potentially submit or manipulate leads tied to the victim's phone number.
The file contains a natural-language policy requirement that users must ensure their AI assistant has completed security filing in mainland China. This imposes a locale-specific constraint on all users of the skill, but the skill does not clearly present itself as a China-only or region-restricted tool with explicit opt-in or scope limitation.
The CLI is hardcoded to transmit highly sensitive personal data, including phone numbers, due dates, and lead information, to a remote backend without any explicit user consent prompt, destination disclosure, or runtime confirmation. In the context of a maternity care booking skill, this data is especially privacy-sensitive and could be submitted unintentionally by users or calling agents who do not realize the information is leaving the local environment.
The hardcoded backend host jz-user-recruitweb-betaa and the documented submitLead flow indicate the skill is oriented around collecting user leads and phone verification. That is materially different from a user-facing assistant that 'quickly finds suitable 月嫂' and supports intelligent matching across cities and budgets.
The manifest describes a booking assistant that helps users find suitable 月嫂, recommend options by city, due date, service period, and budget, and match local resources. This file documents only three backend operations: sending an SMS code, verifying the code, and submitting a lead; there is no documented capability for searching, matching, recommending, or returning 月嫂 candidates to the user.
The skill documentation instructs collection and transmission of sensitive personal data, especially phone numbers and pregnancy-related service details such as due date, to remote APIs without any user-facing privacy notice, consent step, retention statement, or disclosure of who receives the data. In this context, the skill targets expectant/new mothers, making the data especially sensitive and increasing the risk of undisclosed lead harvesting, profiling, spam, or misuse.
The document is entirely written in Chinese and prescribes fixed Chinese strings to display to users, such as the error messages and prompts throughout the tables. Because the file does not indicate that the skill is China/Chinese-specific or provide any user opt-in for language selection, this creates a natural-language locale policy concern.
The file's help text and error/status messages are written in Chinese only, and the CLI does not offer any locale selection or user opt-in. This creates a language policy concern because it forces a specific language regardless of user preference.