Back to skill

Security audit

RSS Aggregator

Security checks for vulnerabilities and agentic risk

Overview

This RSS skill is mostly a straightforward feed-fetching and automation guide, but users should be careful with scheduled forwarding and untrusted feed content.

Install this only if you are comfortable running a Python feed fetcher and, if you use the recipes, creating scheduled jobs that may send article titles, links, and summaries to Discord, webhooks, or Notion. Prefer public feeds, avoid internal/private feed URLs, pin dependencies in a virtual environment, and treat feed text as untrusted when summarizing or posting it.

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 (3)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/fetch_feeds.py:16
Finding

Unrestricted Resource Fetching Enables SSRF and Local Resource Access

Content
View full analysis
1 else '' max_age = int(sys.argv[2]) if len(sys.argv) > 2 else None keyword = sys.argv[3] if len(sys.argv) > 3 else None if not url: print(json.dumps({'error': 'URL required'})) sys.exit(1) result = fetch_feed(url, max_age, keyword) print(json.dumps(result, indent=2)) ``` ### Technical Analysis The script passes a caller-controlled resource identifier directly to `feedparser.parse()` without validating the scheme, destination host, resolved IP address, redirects, or whether the input is a local path. Depending on the schemes and handlers supported by the installed parser and Python runtime, this can allow: - Requests to loopback services such as `127.0.0.1`. - Requests to private or link-local network addresses. - Access to cloud instance metadata endpoints. - Parsing of local files or paths accessible to the process. - Redirect-based bypasses in which an initially acceptable URL redirects to a restricted destination. Any resulting document that can be interpreted as feed data may be included in the JSON output. The documented scheduling and webhook workflows can subsequently transmit that output to another service. ### Attack Path 1. An attacker, untrusted user, or compromised Agent workflow supplies a malicious feed resource as the first command-line argument. 2. The script forwards the value to `feedparser.parse()` without validation. 3. The parser accesses an internal service, link-local endpoint, or local r ...[truncated 999 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/fetch_feeds.py:29
Finding

Untrusted Feed Content Can Cause Indirect Prompt Injection

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:15
Finding

Unpinned Third-Party Dependency Creates Supply-Chain Risk

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The code partially aligns with the declared description because it does fetch RSS/Atom feeds and supports simple filtering by age and keyword. However, the declared purpose emphasizes a broader feed-monitoring/aggregation system with scheduled operation, alerts/digests, and routing to external destinations. None of those core capabilities appear in the supplied code. The implementation is limited to one-shot retrieval of a single feed URL and JSON printing. This is a material underimplementation relative to the declared behavior, so it should be flagged as a mismatch.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill promotes sending fetched article content and summaries to external services such as Discord, webhooks, and Notion without an explicit warning that feed contents, URLs, and derived summaries will leave the local environment. That can cause unintentional data disclosure, especially if users monitor internal, authenticated, or sensitive feeds and assume the skill is only a local aggregator.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This recipe explicitly delivers article data to a Discord webhook but does not warn users that titles, links, and possibly summaries from monitored feeds will be transmitted to a third party. If the monitored feed is private, internal, or contains sensitive URLs or metadata, this creates a realistic exfiltration path through routine automation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The line 'use替他' introduces non-English text unexpectedly in otherwise English documentation, without offering a language choice or explanation. This can violate language consistency expectations and may confuse users who did not opt into mixed-language content.

Content

No source excerpt is available for this finding.