Back to skill

Security audit

tencentcloud-faceid-detectface

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it claims, but it can upload any readable local file supplied as an image path to Tencent Cloud and lacks strong privacy safeguards for face data.

Review before installing. Use it only with images you intend to send to Tencent Cloud, avoid giving it arbitrary local paths, and run it in a restricted environment with narrowly scoped Tencent Cloud credentials. Consider adding file-type validation, an explicit biometric-data consent prompt, and pinned dependencies before broad use.

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

Warning
Location
scripts/main.py:64
Finding

Arbitrary Local Files Can Be Encoded and Uploaded to Tencent Cloud

Content
View full analysis
str: """ Load image Base64 content. If value is an existing file path, read the file and encode it as Base64; otherwise, treat it directly as a Base64 string. """ if os.path.isfile(value): ext = os.path.splitext(value)[1].lower() if ext not in IMAGE_EXTENSIONS: print( f"Warning: file extension '{ext}' is not in the supported list " f"{sorted(IMAGE_EXTENSIONS)}; upload will still be attempted", file=sys.stderr, ) with open(value, "rb") as f: raw = f.read() try: raw_str = raw.decode("utf-8").strip() decoded = base64.b64decode(raw_str, validate=True) _check_image_size(len(decoded)) return raw_str except SystemExit: raise except Exception: pass _check_image_size(len(raw)) return base64.b64encode(raw).decode("utf-8") else: try: decoded = base64.b64decode(value, validate=True) _check_image_size(len(decoded)) except SystemExit: raise except Exception: print( "Error: the provided content is neither valid Base64 nor a valid file path", file=sys.stderr, ) sys.exit(1) return value ``` The resulting content is then included in the external API request: ```python if args.url: params["Url"] = args.url print(f"Using image URL: {args.url}", file=sys.stderr) else: print(f"Loading image: {args.image}", file=sys.stderr) params["Image"] = load_base64_image(args.image) print("Image Base64 enc ...[truncated 2546 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:30
Finding

Unpinned Tencent Cloud SDK Dependency Installation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill references environment-based secrets (TENCENTCLOUD_SECRET_ID and TENCENTCLOUD_SECRET_KEY) but does not declare any tool scope or permissions boundary. This weakens least-privilege controls and can cause the runtime to expose environment access implicitly, making secret use less transparent and harder to audit.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This skill sends user-supplied face images and may return biometric-related attributes such as age, gender, mask status, and facial quality data to Tencent Cloud for external processing, but the description does not warn users about that data transfer. Because face images and derived attributes are highly sensitive personal data, lack of disclosure can lead to privacy violations, non-compliant handling, and unsafe use without informed consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

All user-facing documentation, help text, warnings, and output descriptions in the file are written in Chinese, which imposes a specific language on users. The file does not offer a language/locale option or explain that the tool is intentionally limited to a Chinese-speaking or region-specific audience.

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 biometric data (face images) or remotely fetched image URLs to Tencent Cloud for processing, but it does not provide any explicit privacy notice, consent prompt, or warning that sensitive personal data leaves the local environment. Because facial images and inferred attributes are highly sensitive, users may unknowingly expose personal or regulated data to a third party, creating privacy, compliance, and trust risks.

Content

No source excerpt is available for this finding.