T03 · Remote Payload Retrieval and Execution
- Location
src/utils/check-deps.js:14- Finding
Automatic Download and Execution of Mutable Remote Installation Scripts
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent document-audit purpose, but it can automatically modify the host, send sensitive document text to an external LLM, and persist weakly protected API credentials.
Review this skill carefully before installing. Use it only in a controlled environment, avoid confidential documents unless you accept external LLM processing, do not let it auto-install dependencies on a primary machine, and rotate any LLM API key that may have been cached by this version.
src/utils/check-deps.js:14Automatic Download and Execution of Mutable Remote Installation Scripts
src/utils/llm-client.js:510Confidential Document Contents Are Sent to a Configurable External LLM Endpoint
src/utils/llm-client.js:26LLM API Credentials Are Cached Using a Public Hardcoded Encryption Key
src/utils/extract-archive.js:38Untrusted Archives Are Extracted Without Path or Resource Validation
src/utils/pdf-ocr.js:18Attacker-Controlled PDF Paths Are Interpolated into Executable Python Source
src/index.js:278Untrusted Document Instructions Can Manipulate LLM Field Extraction
The skill is presented as a local document-audit workflow, but it also accesses local configuration and API secrets and sends data to an external chat-completions service. This is dangerous because extracted trade documents may contain sensitive business data, and users may not realize the content and associated credentials are being used in outbound model-service requests.
The skill is presented as a local document-audit workflow, but it also accesses local configuration and API secrets and sends data to an external chat-completions service. This is dangerous because extracted trade documents may contain sensitive business data, and users may not realize the content and associated credentials are being used in outbound model-service requests.
The skill is presented as a local document-audit workflow, but it also accesses local configuration and API secrets and sends data to an external chat-completions service. This is dangerous because extracted trade documents may contain sensitive business data, and users may not realize the content and associated credentials are being used in outbound model-service requests.
The skill is presented as a local document-audit workflow, but it also accesses local configuration and API secrets and sends data to an external chat-completions service. This is dangerous because extracted trade documents may contain sensitive business data, and users may not realize the content and associated credentials are being used in outbound model-service requests.
Broad trigger words like '审核' or '许可证' are likely to match normal conversation, which can invoke the skill unexpectedly. In a skill that decompresses files, reads documents, uses shell/network capabilities, and writes reports, accidental activation materially increases the chance of unintended processing or data exposure.
The skill explicitly states it will automatically install runtimes and system packages without any confirmation. Unattended host modification is disproportionate to the stated task and can be abused to execute privileged installers, change the system state, or introduce unsafe dependencies under the guise of document processing.
The documentation promises dependency installation with 'no confirmation' and does not adequately warn about the resulting system changes and security implications. This is particularly risky because users may interpret the skill as a passive document-review tool, not a component that can alter the host via package managers and downloaded installers.
The skill is described as a local license pre-audit tool, but extractFieldsWithLLM sends extracted document text to an LLM service via callLLM. These documents contain commercial and regulatory fields such as contract numbers, counterparties, amounts, and certificate identifiers, so undisclosed transmission to an external model provider can leak sensitive business data and violate user expectations or compliance requirements.
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
* @returns {Object} 审核摘要
*/
function runAllRules(documents) {
return ruleSummary.generateSummary(documents, {
ruleStamp,
ruleContractNo,
ruleExporter,
This file embeds package-manager bootstrap commands and remote installer execution that modify the host system, including fetching and executing scripts from the network. For a document pre-audit skill, that behavior is outside expected scope and materially increases risk because running the skill can lead to privileged system changes unrelated to analyzing documents.
The Homebrew bootstrap command uses curl to fetch a remote shell script and executes it via bash, without any verification or confirmation before modifying the machine. This is a classic high-risk pattern because compromise of the source, transport, or trust assumptions can lead to arbitrary code execution on the host.
The Chocolatey install flow downloads and executes a PowerShell bootstrap script from the network automatically. That exposes the host to arbitrary code execution and persistence risks, particularly because this occurs as part of dependency handling rather than a clearly separated installer stage.
Piping curl output directly into sudo bash is an archetypal dangerous chaining pattern because untrusted network data becomes root-executed code without intermediate inspection. In this skill context, that is especially unjustified because dependency setup is not the core document-audit function.
checkCmd: 'node --version',
install: {
macos: 'brew install node',
ubuntu: 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs',
linux: 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs',
windows: 'choco install nodejs-lts -y --no-progress'
}
Piping curl output directly into sudo bash is an archetypal dangerous chaining pattern because untrusted network data becomes root-executed code without intermediate inspection. In this skill context, that is especially unjustified because dependency setup is not the core document-audit function.
checkCmd: 'node --version',
install: {
macos: 'brew install node',
ubuntu: 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs',
linux: 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs',
windows: 'choco install nodejs-lts -y --no-progress'
}
This is the same pipe-to-sudo execution pattern on the alternate Linux target and carries the same arbitrary root code execution risk. The mismatch between expected functionality and actual host modification makes it more dangerous in an agent skill setting.
install: {
macos: 'brew install node',
ubuntu: 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs',
linux: 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs',
windows: 'choco install nodejs-lts -y --no-progress'
}
},
This is the same pipe-to-sudo execution pattern on the alternate Linux target and carries the same arbitrary root code execution risk. The mismatch between expected functionality and actual host modification makes it more dangerous in an agent skill setting.
install: {
macos: 'brew install node',
ubuntu: 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs',
linux: 'curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs',
windows: 'choco install nodejs-lts -y --no-progress'
}
},
The main entrypoint calls automatic installation immediately when dependencies are missing and explicitly states it will not ask for confirmation. That means invoking the skill can unexpectedly alter the host environment, violating least surprise and creating a dangerous side effect for a tool whose purpose is document analysis.
The code path for missing dependencies proceeds directly into installation without a prior approval step, despite potentially invoking privileged package installation. Automatic remote and system-modifying actions without consent create a strong supply-chain and host-integrity risk, especially in an agent skill context where users may expect passive analysis only.
The code claims encrypted cache storage, but encrypt() returns plaintext on failure and decrypt() returns the original input on failure, allowing silent fallback to unprotected secret storage or ambiguous handling. Combined with the hardcoded default key, cached API credentials may be recoverable even when 'encryption' appears enabled, which is especially dangerous for a document-processing skill handling sensitive commercial records.
The skill declares capabilities consistent with environment access, shell execution, and network activity but does not scope or disclose them through explicit tool permissions. That makes the operational boundary unclear and increases the chance that a document-processing skill can perform unexpected host or network actions without informed user approval.
L013-L014 仅给出中文触发词“审核/审核许可证/许可证”,整体交互说明也默认中文,没有说明是否支持其他语言或允许用户自行选择语言。这种默认强制单一语言的设计可能构成语言/locale 策略问题,尤其在面向跨平台或多语言用户时。
The skill automatically extracts archives, processes uploaded files, and writes report artifacts, but the user-facing description does not foreground these side effects strongly enough. Insufficient disclosure undermines informed consent, especially when handling potentially sensitive commercial documents.
The instructions explicitly require the assistant to read the generated Markdown report and paste its full contents into chat. Because the report contains extracted contract, importer, manufacturer, amount, and certificate data, this can disclose sensitive business information into a broader conversation channel than necessary.
The documented behavior expands from auditing documents into initializing runtimes and external tooling across platforms. This broadens the trust boundary and operational risk, because the skill becomes a host-setup mechanism rather than a narrow data-processing utility.
The script's comments and all user-facing echo output are in Chinese, including operational instructions shown after packaging. This imposes a specific language on users without opt-in or justification, which matches the language/locale policy violation criteria.