T09 · Insecure Skill Coding Practices
- Location
archive/20260405_110200_5426.json:4- Finding
Sensitive Court Records and Active Delivery Parameters Bundled in the Skill Package
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent court-document purpose, but it ships sensitive legal archive records and gives the agent broad handling of court links, passwords, verification codes, downloads, and persistent records without enough controls.
Do not install this package as published unless the bundled archive records are removed or fully synthetic. If used after remediation, treat it as a sensitive legal-record automation: confirm target folders before writes, avoid storing raw SMS or court access parameters, prefer user-entered authentication over extracted passwords/codes, require HTTPS-only downloads, and pin any Playwright/MCP dependencies.
archive/20260405_110200_5426.json:4Sensitive Court Records and Active Delivery Parameters Bundled in the Skill Package
SKILL.md:215Court Document Identifiers and Files Transmitted over Plaintext HTTP
SKILL.md:165API-Controlled Document Names Permit Path Traversal Outside the Staging Directory
SKILL.md:128Unpinned npm Packages Are Downloaded and Executed
The skill explicitly instructs extracting credentials and verification codes from court messages for use in accessing external platforms. This is dangerous because SMS-delivered secrets are authentication factors; automating their capture and reuse broadens the trust boundary and can enable unauthorized document access if logs, archives, prompts, or downstream tools are compromised.
The file begins entirely in Chinese and provides no indication that the skill offers language or locale choice, nor that it is explicitly limited to a Chinese-only or region-specific audience. Under the policy for natural-language violations, forcing a specific language without user opt-in should be flagged unless the locale constraint is clearly documented and justified.
The skill instructs automatic creation of case directories and archiving actions without clear user acknowledgment. In a legal-document workflow, silent filesystem writes can expose sensitive case metadata, create records in the wrong workspace, and cause accidental disclosure or retention of confidential matter names and parties.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The skill directs transmission of user-supplied court-link parameters to external court APIs via curl. Although contacting the court service is part of the intended function, it still constitutes external transmission of sensitive legal identifiers and may disclose case-related metadata outside the local environment without a clear user-facing consent step.
> **⛔ 大多数情况下不需要 Playwright**:zxfw 平台方案一直接 curl 调用 API,无需浏览器。仅 gdems/jysd 平台或**方案一失败后**才需要方案二/三。禁止在方案一执行期间同时打开浏览器。
#### 方案一 — API 直连(优先)
This step downloads PDFs from externally returned signed URLs, which sends case-linked requests and writes potentially sensitive legal documents locally. In context this behavior is intended, but it remains security-relevant because it combines external network access with automatic ingestion of confidential files and no explicit consent or verification of destination handling.
# 3. 解析文书列表,逐个下载 PDF
echo "$resp" | jq -r '.data[] | "\(.c_wsmc)\t\(.wjlj)"' | while IFS=$'\t' read -r name url; do
curl -sL -o "/tmp/court-sms-staging/${name}.pdf" "$url"
done
# 4. 验证下载结果
The skill directs extraction and use of court-platform account credentials and SMS verification codes from user messages to authenticate to external systems. Handling live credentials and one-time codes inside an automation flow significantly increases the risk of unauthorized access, credential misuse, and accidental disclosure, especially because the same skill also archives processing details.
The skill requires saving complete processing details into an internal skill archive directory without explicit user warning. Because the processed content includes court SMS details, case numbers, party names, document metadata, and possibly authentication artifacts, this creates a hidden secondary store of highly sensitive legal data that users may not expect or protect appropriately.
The skill instructs retention of complete processing details from court messages and downloaded documents in an internal archive. In this legal context, those records are likely to contain sensitive personal data, case information, and potentially traces of access tokens or delivery identifiers, creating a significant confidentiality and compliance risk if the archive is exposed.
The manifest limits the skill to receiving court SMS, extracting information, downloading court documents, and archiving them into case directories. The optional fifth step adds a separate document-management pipeline that scans directories, merges multiple PDFs, standardizes page sizes, adds bookmarks, and renames files based on user preferences, which goes materially beyond the described SMS-to-download-to-archive workflow.
This JSON archive contains user-facing natural-language content and document metadata exclusively in Chinese, but it does not document that the skill is China-specific or that Chinese is an intentional locale constraint. Under the policy rule, forcing a specific language without opt-in or explicit justified scoping can be a natural-language policy violation.
This JSON archive stores user-facing and summary text entirely in Chinese, including the raw SMS and archived summary, with no indication that the skill offers a language/locale choice or that it is explicitly limited to a Chinese legal workflow. Under the policy rule, a locale-specific constraint should be clearly documented or user-selected rather than implicitly enforced.
The archive format explicitly requires storing full raw SMS content and detailed API responses for court notifications, which can contain case numbers, party names, court identifiers, delivery timestamps, and document metadata. In this legal context, retaining unnecessary raw content and full upstream responses materially increases privacy, confidentiality, and secondary disclosure risk if the archive is accessed, synced, logged, or backed up.
The format instructs preservation of download URL parameters and archive paths linked to specific legal matters, which may expose sensitive tokens, case linkage data, and personally identifiable legal metadata. Because this skill processes court SMS and document-delivery records, these identifiers can enable unauthorized correlation of users to cases or reuse of access parameters if logs or archives are leaked.
The file's descriptions, extraction instructions, prompts, and document labels are written exclusively in Chinese and assume Chinese-language SMS and court artifacts, but there is no explicit user opt-in or documented locale-policy justification in the file. Under the stated policy, forcing a specific language or locale without user choice can be a natural-language policy violation.
The post-processing trigger is defined in broad natural language and activates when any document-type group in an archive directory exceeds a small threshold. In this skill, which handles legal documents, that can cause unrelated PDFs from the same matter or directory to be incorrectly grouped, merged, renamed, or surfaced for action, creating integrity and privacy risks for case files.
This file is a plain-text file, so only SQP-1 and SQP-3 apply. Line 25 adds a Chinese-language sentence in an otherwise English license file, which imposes a language choice without any opt-in or explanation that the skill is intentionally locale-specific.
The primary workflow states that if no matching case is found, the skill should automatically create a new case directory without asking the user. Later troubleshooting guidance contradicts this by saying the '无匹配案件' case should present three options: choose existing, create new, or temporarily store, which is an active contradiction about whether user confirmation is required.
This JSON manifest-like archive contains descriptive fields about SMS parsing, downloading, and archiving, but provides no explicit trigger phrases, invocation boundaries, or exclusion conditions. For manifest files, the absence of any trigger-scope constraints can make downstream activation behavior ambiguous if this file is used to drive skill invocation.
The natural-language strings in the file, including the raw SMS and archived summary, are presented only in Chinese and do not indicate any user opt-in or documented locale limitation. Under the policy, forcing a specific language without choice or justification can be a language/locale policy concern.
This JSON example uses only Chinese-language descriptions and output naming such as "原告证据.pdf" and Chinese bookmark formats, which indicates a fixed language/locale behavior in the skill's user-facing configuration. The file does not mention any user opt-in for language selection or explain that the skill is intentionally limited to a Chinese legal workflow.
The entire attribution document is written in Chinese and does not provide an alternative language, opt-in, or explanation that the skill is intended only for a Chinese-language or region-specific audience. Under the policy rule for natural-language violations, forcing a specific language without user choice can be a locale-policy issue.
This markdown file contains user-facing reporting instructions exclusively in Chinese, which can amount to a language/locale policy issue when no user opt-in or alternative language is provided. The content does not document that the skill is limited to a Chinese-language context or that users can choose another language.
No suspicious patterns detected.