Back to skill

Security audit

teaching-research-analyzer

Security checks for vulnerabilities and agentic risk

Overview

The skill is mainly an education helper, but it documents automatic analytics using user identifiers without a clear endpoint, consent, or opt-out.

Review this skill before installing in a school or privacy-sensitive setting. Its teaching analysis behavior is ordinary, but only use it where automatic analytics with user-linked metadata is acceptable or where the host environment can disable or block that tracking.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

other

Warning
Location
skill.md:120
Finding
Unverifiable Automatic Telemetry Involving User Identifiers<![CDATA[ ## Vulnerability Details **File Location**: `skill.md`, lines 120–163 **Vulnerability Type**: `other: Undisclosed telemetry and privacy risk` **Risk Level**: Medium The Skill declares automatic analytics collection at invocation, processing, completion, and error stages. The documented event data includes a user identifier, invocation source, input type, question type, output metadata, timing information, and error metadata. ```javascript // When the Skill starts trackEvent("skill_start", { skill_id: "teaching-research-analyzer", user_id: userId, source: "workbuddy", input_type: "text" }); // When the Skill completes trackEvent("skill_complete", { skill_id: "teaching-research-analyzer", user_id: userId, output_format: "markdown", output_size: 3500, total_duration_ms: 4200, word_count: 450, question_type: "cloze" }); ``` The same section states that analytics failures are silently suppressed by an `analytics-sdk` wrapper using exception handling and a three-second timeout. ### Technical Analysis Telemetry is not required to perform the Skill's stated educational analysis. Associating analytics events with `user_id` may allow activity to be linked to an identifiable or pseudonymous user. The package does not contain the referenced analytics SDK, an endpoint configuration, a complete event schema, a privacy policy, a consent mechanism, or an opt-out mechanism. Consequently, the audit cannot verify: - Where telemetry is transmitted. - Which organization controls the collected data. - Whether additional fields are added by the absent SDK. - Whether error events include user prompts, generated answers, or other contextual data. - How long data is retained or with whom it is shared. - Whether identifiers are anonymized or pseudonymized. Silent failure handling also reduces observability by preventing users and operators from readily detecting unsuccessful or misconfigured transmissions. No executable telemetry implementation o ...[truncated 1696 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove telemetry unless it is necessary for the Skill's stated educational function. 2. Make analytics disabled by default and require explicit, informed opt-in consent before transmitting any event. 3. Provide a clearly documented opt-out that does not reduce core Skill functionality. 4. Publish the analytics endpoint, data controller, processor list, retention period, deletion procedure, and complete event schema. 5. Replace direct user identifiers with short-lived, randomly generated identifiers where correlation is genuinely necessary. 6. Do not transmit prompts, answers, educational records, IP addresses, device identifiers, or raw exception messages. 7. Apply strict field allowlisting in the analytics client so undocumented metadata cannot be attached automatically. 8. Include the actual analytics implementation and dependency declarations in the package so its behavior can be independently reviewed. 9. Use authenticated HTTPS transport and validate the destination against an explicit allowlist. 10. Record telemetry status in an operator-visible audit log rather than silently suppressing all failures. 11. Add automated tests confirming that telemetry remains inactive without consent and that error events cannot contain user content. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (6)

Vague Triggers

Medium
Confidence
89% confidence
Finding
The activation section includes phrases like “帮我分析这道题”, “这道题怎么讲”, and “考点是什么”, which are common educational requests and could match ordinary conversation outside the intended skill-routing context. The file does not provide exclusion conditions or negative examples to clarify when the skill should not activate.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The output rules explicitly require “中文输出:分析全部用中文”, which forces a specific language regardless of user preference. This is a natural-language policy concern because no opt-in, fallback, or region-specific justification is provided.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The skill documentation adds automatic analytics and tracking behavior, including user_id and execution metadata, that is not disclosed in the core manifest purpose of educational analysis. This creates a privacy and transparency risk because users may provide student or teacher content expecting only local pedagogical analysis, while the skill also transmits telemetry to another system.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill states that analytics are automatically reported and includes user-related fields, but it does not provide an explicit privacy warning, transmission notice, or consent mechanism. Hidden or insufficiently disclosed data transfer is dangerous because users may unknowingly send identifiable usage metadata alongside educational content.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The documented telemetry includes user and runtime fields such as user_id, source, duration, output size, and question type without a clear necessity for the educational analysis function. Over-collection increases privacy exposure and can enable profiling of users' activity patterns, especially in an education context where submitted content may involve minors or sensitive classroom materials.

Natural-Language Policy Violations

Low
Confidence
96% confidence
Finding
This markdown file contains instructional content only in Chinese, which can amount to forcing a specific language without user opt-in. The policy allows locale constraints when they are explicitly justified or when users are given a choice, neither of which appears in the file.

Static analysis

No suspicious patterns detected.