Back to skill

Security audit

Today News Task

Security checks for vulnerabilities and agentic risk

Overview

The skill is not clearly malicious, but it needs Review because its news workflow runs an unrestricted local URL-fetching script and optionally relies on another skill from an unpinned external source.

Install only if you are comfortable with the agent running a local Python script that can fetch arbitrary URLs. Keep use limited to the listed public news/search pages, avoid passing private-network, localhost, file, metadata-service, or untrusted redirected URLs, and review/install today-task from a trusted source before using the optional push feature.

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

T09 · Insecure Skill Coding Practices

Warning
Location
fetch_url.py:8
Finding

Unrestricted URL Fetching Permits SSRF and Local Resource Access

Content
View full analysis
") sys.exit(1) url = sys.argv[1] headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'} req = urllib.request.Request(url, headers=headers) resp = urllib.request.urlopen(req, timeout=10) content = resp.read().decode('utf-8', errors='ignore') print(content) ``` ### Technical Analysis The script passes an arbitrary command-line argument directly to `urllib.request.Request` and `urllib.request.urlopen` without validating the URL scheme, destination hostname, resolved IP address, port, or redirect target. Although `SKILL.md` recommends public news websites, the executable interface does not enforce those restrictions. An attacker who can influence the URL supplied to the skill may cause it to request: - Services bound to localhost. - Private or link-local network addresses. - Cloud instance metadata endpoints. - Internal administrative applications. - Local files through supported non-HTTP URL handlers such as `file:`. - An attacker-controlled HTTP endpoint that redirects to a restricted destination. The full response is decoded and printed to standard output, potentially exposing retrieved internal or local content to the Agent context and subsequent output. The script also lacks a response-size limit, allowing a remote server to return excessive data and consume memory or context capacity. ### Attack Path 1. An attacker supplies a crafted URL while presenting it as a news article, alternate portal, or search result. 2. The Agent follows the documented workflow and executes `python fetch_url.py `. 3. `urlopen` connects to the supplied destination without scheme or network-boundary validation. 4. The target point ...[truncated 959 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
SKILL.md:88
Finding

Unverified Third-Party Mirror Recommended for Skill Installation

Content
View full analysis
Remediation
View remediation
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 Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The manifest presents the skill as a news aggregation workflow, but the documented behavior allows fetching arbitrary user-supplied URLs and references additional capabilities that are not actually implemented in a constrained way. This mismatch can mislead users and automated systems into granting trust to a skill that effectively acts as a general-purpose web retrieval wrapper, which can be abused for broader data access than expected.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 16)May include surrounding context.

md
在含 `SKILL.md` 与 `fetch_url.py` 的目录执行(路径按实际部署替换):

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill directs the agent to perform network-capable behavior via a local Python script but does not declare any corresponding tool scope or permissions. This creates a transparency and policy gap: reviewers and runtime controls cannot easily constrain or reason about outbound access, increasing the risk of unauthorized fetching or misuse.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The description says the skill should be used whenever the user needs domestic/international hot topics and tech news summaries, but it does not define specific trigger phrases, scope limits, or exclusion conditions. This broad natural-language activation guidance could overlap with ordinary requests for news summaries and cause unintended invocation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
80% confidence
Finding

The description is written to target domestic Chinese portals and uses Chinese-language task framing without indicating that language or locale is optional. This can be a natural-language policy issue if the skill implicitly forces a specific language/locale experience without user opt-in or an explicit region-specific justification.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation explicitly instructs the agent to invoke a local Python script through exec/subprocess for web fetching instead of safer built-in retrieval tools. That expands execution authority from content retrieval to arbitrary local code execution pathways, making the skill more dangerous if the script is modified, replaced, or behaves unexpectedly.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill expands its scope beyond news collection by directing the user/agent to install and use another skill and interact with external sites. This creates a trust-boundary jump and potential data-flow expansion, because content produced here may be transmitted elsewhere without clear isolation, review, or necessity for the core function.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill describes optionally pushing generated content to another skill/system without an explicit user-facing warning about data transmission. This can lead to silent exfiltration of gathered content or task metadata to another component or external service, especially if users assume the skill is only doing local summarization.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script accepts an arbitrary URL from the command line and fetches it without any allowlist, domain validation, or restriction to news portals. That capability is broader than the stated purpose and can be repurposed for unintended network access such as contacting internal services, retrieving sensitive endpoints, or bypassing intended workflow constraints if an attacker can influence the URL input.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Arbitrary network retrieval is not necessary for a narrowly scoped news-summary skill unless constrained to specific trusted sources. In skill context, this makes the component more dangerous because it turns a content-fetching helper into a general-purpose network client that could be abused for SSRF-like access or exfiltration pathways depending on how the URL argument is sourced.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The comment states that stdout is forcibly set to UTF-8 to address Windows console GBK issues, and the code immediately enforces that encoding. This is a locale/encoding policy choice applied unconditionally, with no user option or documented region-specific justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script constructs and sends an outbound HTTP request, which is a network operation covered by the missing-warning rule for code files. While the URL argument implies fetching content, there is no confirmation prompt, logging, or explanatory comment disclosing that the script will contact the supplied remote host.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.