Back to skill

Security audit

TencentCloud VehicleLicense OCR

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it claims, but its file-path upload path can send any readable local file to Tencent Cloud if misused.

Review before installing. Use only in a restricted environment, pass only intended vehicle-license image files or trusted image URLs, avoid exposing broad filesystem access to agent-driven invocations, and set Tencent Cloud credentials only for this skill's run. The publisher should add explicit privacy notice/consent, validate image content, restrict local paths, and pin dependencies.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/main.py:64
Finding

Arbitrary Local File Content Can Be Uploaded to the OCR Service

Content
View full analysis
MAX_IMAGE_SIZE_BYTES: print(f"Error: image file exceeds the {MAX_IMAGE_SIZE_BYTES // (1024 * 1024)}MB limit", file=sys.stderr) sys.exit(1) encoded = base64.b64encode(raw).decode("utf-8") return encoded ``` The resulting content is assigned directly to the outbound Tencent Cloud OCR request: ```python if args.image_url: req.ImageUrl = args.image_url elif args.image_base64: req.ImageBase64 = load_image_base64(args.image_base64) ``` ### Technical Analysis The `--image-base64` argument is documented as accepting an image, Base64 data, or a path to an image or Base64 text file. However, `load_image_base64()` accepts any path for which `os.path.isfile()` returns true. It reads the file without validating its type, magic bytes, MIME type, or ability to decode as a supported image. For non-Base64 files, the function Base64-encodes the raw bytes. Base64 is only a transport encoding and does not provide confidentiality. The encoded content is subsequently assigned to `req.ImageBase64` and sent through the Tencent Cloud SDK to `ocr.tencentcloudapi.com`. Consequently, the program's effective file-access capability is broader than the minimum privilege required for vehicle-license OCR. Any readable file of up to 7 MB can enter the external upload path, including configuration files, environment files, SSH private keys, clou ...[truncated 1654 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:36
Finding

Third-Party SDK Installation Is Not Version-Pinned

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 Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill processes images of vehicle licenses and extracts sensitive personal and regulated information such as owner name, address, plate number, VIN, and engine number, but it does not warn users that the image/data will be transmitted to Tencent Cloud. This creates a meaningful privacy and compliance risk because users may unknowingly share sensitive government-document data with an external service.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
83% confidence
Finding

The skill declares access to environment-based secrets (TENCENTCLOUD_SECRET_ID and TENCENTCLOUD_SECRET_KEY) but does not define an explicit tool/permission scope. That weakens least-privilege guarantees and can cause the runtime to expose broader capabilities than users or reviewers expect, especially for a third-party OCR integration handling sensitive documents.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger conditions include a broad catch-all phrase covering essentially any vehicle-license OCR scenario, which can cause the skill to be invoked unexpectedly. In this context, accidental invocation is risky because the skill sends highly sensitive identity and vehicle registration data to an external cloud OCR provider.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script transmits vehicle license images and extracted identity/vehicle data to Tencent Cloud OCR, but it does not provide any explicit privacy notice, consent prompt, or warning that sensitive document contents will leave the local environment. Because vehicle licenses contain personal and regulated information, users may unknowingly disclose PII to a third-party service, creating privacy, compliance, and trust risks even if the transmission is intended functionality.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script's human-facing docstrings, help text, errors, and output labels are consistently fixed in Chinese, with no option for users to select another language or locale. The policy calls for flagging language constraints when a skill forces a specific language without user opt-in.

Content

No source excerpt is available for this finding.