Back to skill

Security audit

Qrcodemaker

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward local QR code generator/decoder with some documentation and dependency issues, but no evidence of hidden access, exfiltration, persistence, or destructive behavior.

Install it in a virtual environment, review or pin the Python dependencies yourself, and be careful with WiFi/vCard QR codes because the saved image can reveal passwords or personal details to anyone who can scan it.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
scripts/qr_code.py:114
Finding

Unpinned and Incomplete Third-Party Dependency Specification

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

整体上,代码的主要用途与描述高度一致:它确实生成和解析二维码,支持四种模式,并允许颜色定制和嵌入 Logo。没有发现与二维码功能无关的越权行为、外部网络访问、数据窃取或其他未声明的主要能力。

但存在一个描述与实现不完全一致之处:描述称“解析需安装 opencv-python”,而实际代码在 decode_qr 中首先同时导入 cv2 和 pyzbar.pyzbar.decode。也就是说,主解析路径不仅需要 opencv-python,还需要 pyzbar;只有在 pyzbar 成功导入后,才会在未识别时回退到 cv2.QRCodeDetector。若未安装 pyzbar,即使安装了 opencv-python,解析功能也会直接提示失败。因此描述低估了实际依赖/能力要求,构成轻度不匹配。

补充说明:WIFI 生成功能声明上是支持的,代码也确实支持,但实现里构造字符串时固定写入 T:WPA,即便无密码时也未使用前面计算出的 encryption 变量。这更像实现缺陷,不属于新增未声明能力,因此不是本次 mismatch 的主因。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The user-facing documentation is written entirely in Chinese, including usage instructions and warnings, with no indication that the skill supports other languages or that Chinese is a required locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale limitation is explicitly justified.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad enough to match common user requests such as generic mentions of QR codes or image scanning, which can cause the skill to activate in situations the user did not clearly intend. In an agent setting, overbroad activation can lead to unintended processing of user-supplied images or text and confusion about what action the system is taking.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This code generates a QR code containing the supplied WiFi SSID and password, then writes it to disk. Although file output is expected for a QR generator, there is no user-facing warning that the resulting image contains reusable network credentials and may expose access if shared or stored insecurely.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The skill documentation and usage guidance are entirely in Chinese, with no indication that another language can be used or that the locale is intentionally restricted. This can be a language policy issue when a skill implicitly forces one language without user opt-in or justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

This skill handles potentially sensitive content such as WIFI credentials, contact details, URLs, and arbitrary text, but the description does not warn users that QR content may embed secrets or personal data. Without a warning, users may unintentionally encode or expose sensitive information in a shareable image.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

Natural-language descriptions and user-facing help/comments at the top of the file are presented only in Chinese, which can force a language choice on users without opt-in. The file does not document that it is intentionally region- or language-specific, nor does it offer an alternative language.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The inline format comment and the nearby encryption = "WPA" if password else "nopass" assignment suggest the function intends to encode the WiFi security type based on input. However, wifi_str is hardcoded with T:WPA, and the computed encryption variable is never used, so open networks are mislabeled as WPA in the QR payload.

Content

No source excerpt is available for this finding.