Back to skill

Security audit

Competition Assistant

Security checks across malware telemetry and agentic risk

Overview

This skill’s competition lookup purpose is legitimate, but its matchmaking feature stores and can expose raw student contact details more broadly than users would expect.

Review before installing. Use only if users understand that matchmaking records may be saved locally across sessions, and prefer patching the skill so it asks for explicit consent, stores minimal or masked contact data, returns only sanitized match results, and exposes clear deletion controls.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The code persists raw contact details (`contact`) alongside other teaming metadata in a long-lived local JSON file under the user's home directory. Because this skill is specifically designed for cross-session matching, the stored data is likely to contain personal identifiers and can be exposed later through other code paths, making this a real privacy and data-minimization issue.

Description-Behavior Mismatch

Medium
Confidence
98% confidence
Finding
`list_requests()` returns full request objects for all active entries, and those objects include the raw `contact` field. The CLI `list` command then prints them without user scoping, access control, or privacy filtering, enabling broad disclosure of stored personal contact information to any caller able to invoke the script.

Description-Behavior Mismatch

Medium
Confidence
97% confidence
Finding
`find_matches()` returns the entire matched request record inside the response, which includes raw contact information and all stored profile details. In a matchmaking context this leaks more personal data than necessary and turns a normal matching action into a direct data-disclosure channel.

Vague Triggers

Medium
Confidence
80% confidence
Finding
Broad natural-language triggers like '找队友' or '帮我匹配' can activate the skill in contexts where the user did not intend persistent collection or matching against stored user data. In this skill, accidental activation is more dangerous because the workflow proceeds toward collecting contact information and writing it across sessions.

Missing User Warnings

High
Confidence
98% confidence
Finding
The skill explicitly stores contact details and team requests across sessions but does not provide a clear user-facing warning, consent flow, retention policy, or deletion mechanism before collection. Because the data includes direct contact identifiers, silent persistence materially increases privacy risk and potential regulatory exposure.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The script silently persists teaming requests, including unmasked contact details, without any visible disclosure or consent mechanism in this code path. For a student competition assistant handling potentially sensitive personal data across sessions, undisclosed persistence increases privacy risk and makes users less able to make informed choices.

Ssd 3

Medium
Confidence
97% confidence
Finding
The workflow is designed to persist and reuse prior users' team requests and contact details across sessions, then disclose matched users' masked contact information to later users. Even with masking, this creates a cross-user data sharing channel and enables aggregation, correlation, and unwanted contact, especially when tied to competition names, skills, and availability.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.