Back to skill

Security audit

RSS聚合工具免费版

Security checks for vulnerabilities and agentic risk

Overview

This RSS skill is mostly aligned with feed aggregation, but it needs review because it combines broad command/network authority with unclear callback/API guidance and no safeguards for untrusted feed content.

Install only if you are comfortable with a Markdown skill that can use shell commands, read/write a local RSS history folder, and fetch user-configured feeds. Keep feed URLs to trusted public HTTPS sources, avoid callback_url unless the publisher clarifies it, and review the history log because it persists titles, links, and dates across runs.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:69
Finding

Untrusted RSS Content Is Processed Without an Instruction-Data Boundary

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 69-80 and line 115
Vulnerability Type: Indirect prompt injection through externally retrieved content
Risk Level: Medium

Vulnerable Code Snippet

text
1. 资源读取与抓取 → 读取RSS链接,获取最新文章并通读正文
2. 内容过滤 → 质量审查 + 跨源事件合并
3. 严格核对记忆 → 对比历史日志,剔除已推送内容
4. 撰写与排版 → 按输出规范生成纯文本简报
text
[支持] RSS链接列表自动读取
[支持] 文章正文抓取与通读
[支持] 内容质量审查(过滤垃圾/水文)
[支持] 跨源事件合并
[支持] 历史日志去重(增量推送)
text
2. 抓取每篇文章的正文内容

Technical Analysis

The skill instructs an AI agent to retrieve and fully read arbitrary RSS entries and linked article bodies. It does not establish a security boundary that classifies retrieved text as untrusted data, nor does it tell the agent to ignore commands, tool requests, policy changes, or role instructions embedded in that content.

This creates an indirect prompt-injection surface. A malicious RSS publisher or compromised article can include text crafted to look like authoritative agent instructions. Because the skill declares access to read, exec, glob, and grep, successful instruction injection could influence tool calls within the permissions available to the hosting agent.

The finding does not establish that the skill deliberately performs malicious actions. The risk arises from the absence of controls around content that the workflow necessarily imports into the model context.

Attack Path

  1. An attacker publishes or compromises an RSS feed or a linked article.
  2. The attacker embeds instructions in the feed or article body, such as requests to ignore the aggregation task, inspect local files, invoke a tool, or reveal information.
  3. A user adds the attacker-controlled source to the RSS configuration.
  4. The skill retrieves and reads the complete remote content as required by its workflow.
  5. The embedded instructions enter the model context without explicit delimitation or sanitization.
  6. The agent may interpret the hostile content as instructions rather than article ...[truncated 760 chars]
Remediation
View remediation

Remediation Suggestions

  1. State explicitly that all RSS entries, article bodies, titles, metadata, and linked pages are untrusted data.
  2. Require the agent never to follow instructions found in retrieved content, including requests to call tools, read files, disclose data, change roles, override policy, or modify the workflow.
  3. Wrap retrieved content in clearly marked data delimiters and process only predefined fields.
  4. Parse RSS through a structured parser rather than presenting raw XML, HTML, or article pages directly as instructions.
  5. Strip scripts, hidden elements, comments, metadata instructions, and other non-content material before model processing.
  6. Apply least privilege by avoiding exec, glob, and unrestricted local-file access during content summarization.
  7. Separate retrieval, sanitization, and summarization into distinct stages. Only sanitized text should reach the summarization stage.
  8. Require explicit user confirmation before any fetched content can cause an operation outside summarization and history deduplication.
  9. Add regression tests containing common indirect prompt-injection patterns and verify that they are treated only as quoted article data.

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:69
Finding

Unrestricted RSS Destinations Permit Server-Side Request Forgery-Like Network Access

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 69-80 and lines 200-207
Vulnerability Type: Missing URL and network-destination validation
Risk Level: Medium

Vulnerable Code Snippet

text
1. 资源读取与抓取 → 读取RSS链接,获取最新文章并通读正文
text
[支持] RSS链接列表自动读取
[支持] 文章正文抓取与通读
bash
# 配置RSS链接列表
cat > ~/rss-aggregator/feeds.txt << 'EOF'
# AI资讯
https://feeds.example.com/ai-news.xml
https://feeds.example.com/tech-ai.xml
# ...
# 新能源
https://feeds.example.com/energy-news.xml
# ...
# 半导体
https://feeds.example.com/semiconductor.xml
# ...
# 综合科技
https://feeds.example.com/tech-general.xml
EOF

Technical Analysis

The workflow reads configured RSS URLs and retrieves their contents, but it specifies no validation of URL schemes, resolved IP addresses, ports, redirects, or final destinations. It also does not prohibit requests to loopback, private, link-local, or cloud metadata addresses.

Consequently, an attacker who can influence feeds.txt or persuade a user to add a crafted feed may cause the agent's network-capable environment to request resources that are not intended to be public RSS feeds. A public URL that passes an initial superficial check could also redirect to a restricted destination unless every redirect is independently validated.

This is an SSRF-like design weakness in the skill instructions rather than evidence of intentional exfiltration. Whether a target is reachable depends on the hosting agent's network placement and controls.

Attack Path

  1. An attacker supplies a crafted RSS URL or causes an existing configured feed to redirect.
  2. The URL points directly or indirectly to a loopback service, private-network host, link-local endpoint, cloud metadata service, or another sensitive destination.
  3. The user adds the URL to feeds.txt, or the attacker modifies a source already trusted by the user.
  4. The skill follows its normal workflow and requests the destination.
  5. The response is handled as feed or article c ...[truncated 795 chars]
Remediation
View remediation

Remediation Suggestions

  1. Permit only well-formed https:// feed URLs.
  2. Reject URLs containing credentials, ambiguous encodings, unsupported schemes, or nonstandard destination formats.
  3. Resolve hostnames before connecting and block loopback, private, link-local, multicast, reserved, and cloud metadata address ranges for both IPv4 and IPv6.
  4. Repeat destination validation after every DNS resolution and redirect; do not trust validation of only the initial URL.
  5. Restrict destination ports to those necessary for HTTPS RSS retrieval.
  6. Prefer an explicit allowlist of trusted RSS hosts where operationally feasible.
  7. Enforce connection, read, and total-request timeouts, response-size limits, redirect limits, and content-type checks.
  8. Run network retrieval in an isolated service without access to internal networks or cloud metadata endpoints.
  9. Do not place raw responses from rejected or unexpected endpoints into the model context.
  10. Log destination-validation failures without recording sensitive response bodies.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill performs persistent local-state mutation by appending to pushed_history.log, but the high-level description does not clearly warn users that it writes to disk and changes future behavior based on that state. Hidden state mutation can surprise users, affect reproducibility, and create privacy or integrity issues if sensitive feed history is stored without consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documented callback_url parameter enables outbound network communication but the skill does not clearly warn users that results may be sent to an external endpoint. Without strong disclosure and validation, this can facilitate accidental data exfiltration, SSRF-like behavior, or delivery of summaries and metadata to untrusted destinations.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill documentation says the free edition does not support API integration, yet it defines a callback_url input and later references webhook/API-triggered use. This inconsistency can cause an agent or user to enable outbound callbacks or API-like behavior that was not clearly disclosed, expanding the trust boundary and creating confusion about network actions.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The capability-coverage keywords are excessively broad and include generic terms like search, retrieval, Markdown, and high-density generation. Such broad matching can unintentionally route unrelated prompts to this skill, increasing the likelihood of unnecessary file access, shell usage, or network activity under an overly permissive toolset.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger conditions are both broad and self-contradictory, making it unclear when the skill should activate. Overbroad routing criteria increase the chance an agent invokes a skill with exec, read, glob, and grep permissions in situations unrelated to safe RSS aggregation, which can expose local files or cause unintended actions.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger-condition section says the skill should be used for API integration, interface docking, webhook configuration, and system connection requests, while the rest of the document says the free version does not support API integration. Contradictory activation guidance can cause the skill to be selected in inappropriate contexts and lead to unintended tool execution or network-connected workflows.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The description explicitly specifies output with "无Emoji", and later configuration reinforces this as a fixed constraint. This imposes a stylistic/language-output policy on users without opt-in or justification, which fits the category of natural-language policy constraints that should either be optional or clearly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The configuration sets no_emoji: true as a fixed formatting rule, which constrains output style for all users. Because no user choice or justification is provided, this is a natural-language policy restriction that should be optional or explicitly documented.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.