T08 · Insecure Dependencies
- Location
README.md:24- Finding
Mutable Package Execution Through npx Installation Commands
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent local Excel analysis skill, but it should go to Review because it parses user workbooks with a known vulnerable parser and has additional report/installation hardening issues.
Install only if you are comfortable reviewing the package first. Avoid analyzing untrusted or attacker-supplied spreadsheets until the xlsx dependency is replaced or constrained, and treat generated Markdown reports as untrusted if they will be rendered or fed into another AI workflow. Prefer a pinned ClawHub installer version rather than the README's @latest command.
README.md:24Mutable Package Execution Through npx Installation Commands
package-lock.json:17Dependencies Locked to a Third-Party Registry Mirror
index.js:145Untrusted Workbook Content Is Embedded in Markdown Without Escaping
The lockfile pins xlsx to version 0.18.5, which is associated with published advisories including prototype pollution and regular-expression denial of service. In a skill that appears to analyze Excel files, this dependency is directly relevant to likely untrusted workbook input, making exploitation more plausible through crafted spreadsheet content.
The package depends on xlsx 0.18.5, which is associated with known advisories including prototype pollution and regular-expression denial of service. In an Excel analysis skill that likely processes untrusted spreadsheet content, these issues are more dangerous because an attacker may be able to trigger process instability, denial of service, or unsafe object property manipulation through crafted files.
The README promotes use on sales, financial, operational, and user-behavior spreadsheets, all of which commonly contain sensitive or regulated data, but it gives no warning about privacy, retention, or data handling. This can lead users to submit confidential Excel files without understanding exposure risks, especially in AI-enabled processing workflows.
The README instructs users to run npx clawhub@latest install ..., which fetches and executes the latest package version at install time rather than a pinned, reviewed version. This creates a supply-chain risk: if the package or one of its dependencies is compromised later, users may execute malicious code simply by following the documentation.
This second installation command repeats the same unsafe pattern by invoking npx clawhub@latest, causing users to execute whatever code is current at the time they run it. In a README, such copy-pastable commands materially increase exposure to package hijacking or malicious upstream updates.
The usage example "帮我分析这个 Excel 文件" relies on a very generic phrasing pattern ("帮我分析...") without any explicit trigger constraints, exclusion conditions, or narrower invocation context. In a markdown skill description, this can make activation boundaries unclear and increase the risk of unintended invocation from ordinary user requests.
The natural-language instructions and usage examples are presented entirely in Chinese, which effectively imposes a language choice on users without documenting opt-in or alternatives. This can violate language or locale policy where users are expected to be offered a language choice unless a locale restriction is justified.
The trigger phrase '帮我分析这个 Excel 文件' is broad natural language that closely matches ordinary user requests, so the skill could activate unintentionally in situations where the user did not explicitly mean to invoke this specific skill. This can cause unintended file processing and overbroad routing of sensitive spreadsheet content to the skill, especially because the skill handles uploaded Excel files.
The report generation hard-codes both the locale (zh-CN) and the report language/content in Chinese, without any user preference or negotiation. This can cause misleading, unusable, or non-compliant output in environments expecting another language or locale, especially where reports are consumed automatically or by users who cannot read Chinese.
This JavaScript file contains natural-language strings that force a specific language/locale experience, beginning with the Chinese-only file description and continuing throughout the script's user-facing logs. The policy requires avoiding fixed language constraints unless the skill offers user choice or clearly documents a justified region-specific limitation.
This markdown file presents all operational instructions and publishing steps exclusively in Chinese. Under the policy rule for natural-language constraints, forcing a single language without documenting that the skill is intended only for Chinese-speaking users can be a locale/language policy issue.
The README presents the skill description entirely in Chinese and does not indicate that language selection is optional or that the skill is intended only for a Chinese-speaking or region-specific context. Under the policy rule, forcing a specific language without opt-in can be a natural-language policy violation.
The manifest description is written as a Chinese-only skill description, which indicates a language-specific presentation without any stated user choice or locale justification. Under the policy rule, forcing a specific language without opt-in can be a natural-language policy violation.
The dependency is specified with a caret range (^0.18.5), which permits automatic installation of future patch/minor releases within the allowed semver range. This weakens supply-chain determinism and can unexpectedly introduce malicious or vulnerable code if the upstream package or publishing pipeline is compromised.
"author": "oct1st85",
"license": "MIT",
"dependencies": {
"xlsx": "^0.18.5"
}
}
The entire report is presented in Chinese, including the title and all section labels, but there is no indication that the user opted into this language or that the skill 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.