Back to skill

Security audit

thought-leader-tracker

Security checks for vulnerabilities and agentic risk

Overview

This skill is a simple content-report generator with accuracy and sanitization shortcomings, but it does not show hidden access, exfiltration, destructive actions, or automatic persistence.

Install only if you are comfortable with a prototype-style tracker. Treat generated reports as untrusted content because podcast titles, summaries, and links come from remote metadata and are not sanitized. Expect incomplete platform coverage and inaccurate or stale matches unless the collector is improved. Add the suggested crontab only if you intentionally want it to run every day.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/collector.js:183
Finding

Untrusted Podcast Metadata Is Written to Markdown Without Sanitization

Content
View full analysis
({ title: item.trackName, link: item.trackViewUrl, publishDate: item.releaseDate, summary: item.description || item.trackName, author: item.artistName })) || [] ``` The untrusted values are then interpolated directly into the generated Markdown report: ```js md += `### ${item.title || 'Untitled'}\n\n`; md += `- **Platform:** ${item.platform}\n`; md += `- **Published:** ${item.publishDate ? new Date(item.publishDate).toLocaleDateString() : 'Unknown'}\n`; md += `- **Link:** ${item.link || 'N/A'}\n`; md += `- **Summary:** ${item.summary || 'No summary available'}\n`; ``` ### Technical Analysis The collector treats metadata returned by the external iTunes Search API as trusted content. Podcast titles, descriptions, authors, and related metadata can ultimately be controlled or influenced by podcast publishers. These values are inserted into Markdown without escaping Markdown metacharacters, removing raw HTML, or validating URL schemes and destinations. An attacker-controlled title or description could therefore alter the structure and presentation of a generated report. Depending on the Markdown renderer, injected content could include deceptive links, images that trigger external requests, or raw HTML. If an AI agent later processes the generated report as instructions rather than untrusted reference data, the same channel can carry stored prompt-injection text. This issue does not directly provide shell execution, filesystem traversal, privilege escalation, or operating-system access. Exploitation depends on a malicious result being returned for one of the configured search terms and on the ge ...[truncated 1705 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • 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
Findings (10)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill documentation is written entirely in Chinese, including feature descriptions, setup steps, and warnings, with no indication that users may choose another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill advertises use of environment-provided credentials such as YOUTUBE_API_KEY and OAuth configuration but does not declare any explicit tool scope or permissions boundary in the skill metadata. That creates ambiguity about what secrets or execution capabilities the skill expects, increasing the risk of overbroad environment access and unsafe deployment assumptions.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest description says 'Use when tracking thought leader content, creating daily digests, analyzing industry trends, or monitoring specific experts' new releases,' which describes very broad, everyday tasks rather than a narrow trigger condition. Without explicit trigger phrases, scope limits, or exclusion examples, the skill could be invoked for many generic research requests unintentionally.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest says the skill performs daily collection of thought leader content across YouTube, Apple Podcasts, and Spotify and generates reports with summaries, key points, and common theme analysis. This report instead contains only Apple Podcasts links, repeatedly shows platform as "undefined," includes items outside the stated 7-day window, and many "summaries"/"key points" are just repeated titles rather than substantive analysis, indicating the produced behavior does not match the claimed cross-platform, time-bounded digesting functionality.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest claims automated collection across YouTube, Apple Podcasts, and Spotify with Markdown reports containing content summaries and analysis, but every entry shown here has 'Platform: undefined' and all links are Apple Podcasts URLs. Multiple entries also predate the stated 'Last 7 days' window by months or years, which indicates the produced artifact does not reflect the described behavior of a recent cross-platform digest.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest says the skill collects content from thought leaders and produces daily digests of their new releases, but this report section for Fei-Fei Li contains many unrelated Apple Podcasts entries that appear to match only fragments of her name rather than the named thought leader. The same report also includes items far outside the declared 7-day time range, indicating behavior that does not align with the stated purpose of focused, recent thought-leader tracking.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill description says it performs daily automated collection across YouTube, Apple Podcasts, and Spotify. In code, searchYouTube and searchSpotify are stub implementations that only log and return empty results, so the actual behavior does not match the stated multi-platform collection capability.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

This markdown file includes substantial Chinese-language titles and summaries within an otherwise English report, but it does not indicate that multilingual output is optional or user-selected. Under the language/locale policy rule, presenting mixed-language content without opt-in can violate expectations for consistent user-facing locale behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This markdown report mixes English with Chinese-language podcast titles and summaries in a way that can impose a language/locale experience on readers without any documented opt-in or language selection. Under the policy, forcing or implicitly defaulting to a specific language without user choice can be a natural-language locale violation.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The collector is documented as gathering content from specific platforms, and the Markdown generator prints a per-item platform field at L195. However, the Apple Podcasts mapper at L054-L060 does not include a platform property on each item, and the placeholder YouTube/Spotify paths return no item objects at all, so generated reports can show undefined platform data rather than the claimed platform-specific collection details.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.