T08 · Insecure Dependencies
- Location
SKILL.md:28- Finding
Automatic Installation of Unpinned Third-Party Dependencies
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent QR-code tool, but it can automatically install dependencies, send user QR data or local images to a third-party service, and overwrite spreadsheet files in ways users should review first.
Install only if you are comfortable with QR contents and some local images being sent to api.2dcode.biz during generation or decode fallback. Avoid using it on confidential QR codes or sensitive screenshots unless you disable or manually control remote fallback. Back up spreadsheets before batch decoding, prefer TXT output where possible, and install dependencies yourself in an isolated environment with pinned versions.
SKILL.md:28Automatic Installation of Unpinned Third-Party Dependencies
scripts/batch_decode.py:192Spreadsheet Formula Injection Through Decoded QR-Code Content
scripts/batch_decode.js:249Destructive Replacement of Existing Excel Workbooks
scripts/decode.js:37Unbounded Remote Downloads and Image Processing
scripts/decode.py:145Automatic Disclosure of Local Images to a Third-Party API
The analyzer's statement that decoding is not implemented cannot be confirmed from SKILL.md alone, but the provider mismatch is real and important. Misstating the backend service can lead to incorrect trust decisions and compliance assumptions about where data is sent.
The analyzer's statement that decoding is not implemented cannot be confirmed from SKILL.md alone, but the provider mismatch is real and important. Misstating the backend service can lead to incorrect trust decisions and compliance assumptions about where data is sent.
The analyzer's statement that decoding is not implemented cannot be confirmed from SKILL.md alone, but the provider mismatch is real and important. Misstating the backend service can lead to incorrect trust decisions and compliance assumptions about where data is sent.
The analyzer's statement that decoding is not implemented cannot be confirmed from SKILL.md alone, but the provider mismatch is real and important. Misstating the backend service can lead to incorrect trust decisions and compliance assumptions about where data is sent.
The analyzer's statement that decoding is not implemented cannot be confirmed from SKILL.md alone, but the provider mismatch is real and important. Misstating the backend service can lead to incorrect trust decisions and compliance assumptions about where data is sent.
The analyzer's statement that decoding is not implemented cannot be confirmed from SKILL.md alone, but the provider mismatch is real and important. Misstating the backend service can lead to incorrect trust decisions and compliance assumptions about where data is sent.
The analyzer's statement that decoding is not implemented cannot be confirmed from SKILL.md alone, but the provider mismatch is real and important. Misstating the backend service can lead to incorrect trust decisions and compliance assumptions about where data is sent.
The analyzer's statement that decoding is not implemented cannot be confirmed from SKILL.md alone, but the provider mismatch is real and important. Misstating the backend service can lead to incorrect trust decisions and compliance assumptions about where data is sent.
The skill directs automatic execution of pip/npm installation commands without user approval. Installing dependencies at runtime introduces supply-chain risk, allows arbitrary code execution from package install scripts, and expands system state beyond the user's original request.
Referenced artifact was not completely inspected
| 单个生成保存 | `python scripts/generate.py ...` | `node scripts/generate.js ...` |
Referenced artifact was not completely inspected
| 单个解码 | `python scripts/decode.py ...` | `node scripts/decode.js ...` |
Referenced artifact was not completely inspected
| 批量生成 | `python scripts/batch_generate.py ...` | `node scripts/batch_generate.js ...` |
Referenced artifact was not completely inspected
| 批量解码 | `python scripts/batch_decode.py ...` | `node scripts/batch_decode.js ...` |
When local generation fails, the script silently falls back to the remote API and transmits the QR payload externally without separate consent or notice. This is more dangerous than explicit API mode because users may believe processing is local while confidential data is unexpectedly disclosed to a third party.
The skill metadata says it uses the CaoLiao QR Code API, but the code actually sends user data to a different third-party endpoint, api.2dcode.biz. This creates a trust-boundary violation: users and reviewers may approve the skill based on one service while sensitive QR payloads are transmitted to another service with potentially different privacy, logging, retention, or legal controls.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
## Security
- **Privacy**: QR code images uploaded to the server for decoding are temporary files that are automatically deleted after a period of time. No long-term storage of your images.
- **Transparency**: All third-party libraries used (zxingcpp, Pillow, qrcode, CaoLiao API, etc.) are public and open-source. You can audit the dependencies yourself.
- **Local-first**: Decoding is performed locally by default. Remote API is only used when local decoding fails, minimizing data transmission.
The README advertises local file saving, ZIP creation, and spreadsheet write-back, but does not prominently warn that user files may be created or modified. In an agent skill, unclear disclosure of data-changing behavior can lead to unintended overwrites, corruption of user data, or actions taken without informed consent.
The phrase "Generate a QR code for me" is broad enough to trigger the skill on commonplace requests, potentially causing the agent to invoke networked or file-writing functionality without the user understanding the side effects. In this skill context, broad activation is more risky because the tool can generate remote URLs, download files, and process local data.
The example shows QR generation via a third-party API URL containing user-supplied data in the query string. If users encode sensitive text, URLs, tokens, or internal links, that data is transmitted to an external service and may be logged by intermediaries, browsers, or the provider.
> **AI:** QR code generated:
>
> 
>
> **QR Code URL:** `https://api.2dcode.biz/v1/create-qr-code?data=https%3A%2F%2Fcli.im&size=400x400`
This line repeats the externally hosted QR code URL, again embedding the encoded content directly in a third-party request. In this skill context, the danger is heightened because users may assume QR generation is local while the example normalizes remote disclosure of the payload.
>
> 
>
> **QR Code URL:** `https://api.2dcode.biz/v1/create-qr-code?data=https%3A%2F%2Fcli.im&size=400x400`
---
The saved-local example still relies on a remote API URL that includes the encoded text before downloading the image locally. This can mislead users into thinking the operation is private because the final artifact is local, even though the payload was first transmitted externally.
>
> QR code generated and saved locally:
>
> **QR Code URL:** `https://api.2dcode.biz/v1/create-qr-code?data=Hello%20World&size=400x400&format=svg`
> **Local file:** `C:\Users\xxx\Desktop\qrcode.svg`
---
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.
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.
No suspicious patterns detected.