Back to skill

Security audit

Daily Paper Digest

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed AI paper digest that fetches public arXiv and Hugging Face paper data, with some implementation hygiene issues but no evidence of deception, credential access, persistence abuse, exfiltration, or destructive behavior.

Reasonable to install if you want a Chinese-language daily AI paper digest and are comfortable with scheduled outbound requests to arXiv and Hugging Face. Prefer slash-command or explicit scheduled activation, update pinned dependencies before production use, and restrict network egress to the documented paper sources; remove or validate the arbitrary paper_url detail helper if exposing it as a callable tool.

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
huggingface_fetcher.py:96
Finding

Unrestricted Outbound Request Enables Server-Side Request Forgery

Content
View full analysis
Dict: """ Get detailed information for a paper. Args: paper_url: Paper URL Returns: Paper details """ try: response = requests.get(paper_url, headers=self.headers, timeout=10) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') return { 'url': paper_url, 'fetched_at': datetime.now().strftime('%Y-%m-%d %H:%M:%S') } except Exception as e: logger.error(f"Failed to fetch paper details: {str(e)}") return {} ``` ### Technical Analysis The `fetch_paper_details()` method passes the caller-supplied `paper_url` directly to `requests.get()` without validating its scheme, hostname, resolved IP address, port, or redirect destination. Consequently, a caller can direct the Skill process to make HTTP requests to arbitrary destinations accessible from the host, including: - Loopback services such as `127.0.0.1` - Private network addresses - Link-local services and cloud metadata endpoints - Internal administrative interfaces - External URLs that redirect to prohibited internal destinations The configured timeout limits request duration but does not prevent SSRF. The Requests library also follows redirects by default, so validating only the initial URL would not be sufficient. This method is not invoked by the current `main.py` entrypoint. Exploitation therefore requires another integration, Agent tool binding, or future code path to expose this method while allowing an attacker to influence `paper_url`. Under that condition, the flaw provides blind SSRF behavior. Although the method does not return the response body, status, timing, success versus failure, and logged ...[truncated 1636 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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
Findings (25)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

声明的核心功能包含三部分:arXiv + HuggingFace 双源聚合、每日自动执行、推送到聊天应用。实际代码只包含一个 arXiv 获取器,使用 arxiv 库拉取指定分类的最新论文,并提供搜索功能。代码没有任何 HuggingFace 相关访问逻辑,没有聊天应用集成或消息发送逻辑,也没有定时任务/触发器实现。因此,实际行为仅覆盖了声明中的一部分,且缺少多个关键能力,构成描述与行为不一致。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

该代码块的行为与描述部分不完全一致。描述宣称这是一个“每日 AI 论文速递”系统,会自动聚合 arXiv 和 HuggingFace 的最新论文,并推送到聊天应用;但提供的代码仅包含 HuggingFaceFetcher,使用 requests 和 BeautifulSoup 抓取 https://huggingface.co/papers 页面,提取论文元数据并返回结果。没有任何 arXiv 访问逻辑,也没有任何消息推送、聊天应用集成、定时触发或通知相关实现。因此这是描述与实际行为不匹配的情况。不过代码本身没有发现额外的可疑越权能力;问题主要在于声明的功能比实际实现更广。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
88% confidence
Finding

代码的核心确实与“每日 AI 论文速递”相符:整合 arXiv 和 HuggingFace、过滤并格式化论文信息。但声明中的重要能力“推送到聊天应用”在该代码片段中没有体现,实际行为只是返回并打印摘要文本。此外,声明暗示自动化每日执行,而触发器为空、代码中也没有调度或自动运行机制。因此描述相较代码存在实质性夸大,应判定为不匹配。

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: lxml==5.1.0 — 2 advisory(ies): CVE-2026-41066 (lxml: Default configuration of iterparse() and ETCompatXMLParser() allows XXE to); CVE-2026-41066 (lxml is a library for processing XML and HTML in the Python language. Prior to 6)

High
Category
Supply Chain
Confidence
92% confidence
Finding

Pinning lxml to 5.1.0 introduces exposure to reported XML parser issues such as XXE in unsafe/default parser configurations. This skill consumes external feeds and parses structured remote content, so a vulnerable XML/HTML parsing library is more dangerous here than in an offline-only tool because attacker-controlled feed content could potentially trigger parser abuse, data exposure, or SSRF-style effects depending on usage.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The configuration example sets "language": "zh-CN" as the output language, and the README does not mention any user-selectable language option. This is a natural-language policy concern because it imposes a specific locale by default without documenting user choice or a justified regional restriction.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The documented keyword triggers are broad enough that normal conversation about papers could unintentionally activate the skill, causing unsolicited fetch-and-push behavior. In a chat-integrated agent, accidental invocation can create noise, unexpected external requests, and reduced user control, though this is not a direct code-execution or data-exfiltration issue.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill advertises network access and reads local configuration, but the manifest does not declare any explicit tool scope or permissions boundaries. In an agent ecosystem, missing scope declarations can cause over-broad execution privileges, reduce user visibility into what the skill can access, and make later code changes harder to constrain safely.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The description says the skill aggregates external sources and pushes content to chat applications, but does not clearly warn users that data will be sent to third-party services and/or external platforms. Missing disclosure weakens informed consent and can expose user prompts, scheduling metadata, or generated content to services outside the local environment.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest description and the entire user-facing documentation are written exclusively in Chinese, and the trigger examples are also Chinese-centric except for slash commands. There is no indication that the locale is intentionally region-specific or that users may choose another language, which can violate language/locale policy requirements.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The trigger phrase "今日论文" is ambiguous and likely to appear in ordinary user requests, increasing the chance of accidental tool execution. Even for a low-risk content skill, unintended activation can consume resources and unexpectedly send requests to external services.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger phrase "最新论文" is broad enough to overlap with normal conversation, which can cause unintended invocation of the skill. In an agent/chat environment, accidental activation may lead to unsolicited network requests, noisy outputs, or disclosure of user intent/context to external content sources.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This manifest hard-codes the output language as "zh-CN", which is a natural-language locale constraint. Under the policy, forcing a specific language without offering user choice or documenting a justified regional limitation is a policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The configuration sets the output language to "zh-CN" unconditionally. This is a natural-language policy concern because it imposes a specific locale without any indication of user opt-in, configurability, or documented region-specific justification.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The fetch_paper_details method accepts an arbitrary URL and performs a server-side HTTP request without validating that the target belongs to HuggingFace or another approved domain. If an external caller can control this parameter, the skill could be abused for server-side request forgery against internal services, localhost endpoints, or unexpected external targets.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This code defines the skill's natural-language behavior entirely in Chinese, and the default configuration also fixes the output language to zh-CN. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is clearly documented and justified, which is not evident here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The fallback configuration explicitly sets "language": "zh-CN", which enforces a locale choice in the skill behavior. The policy allows locale constraints only when users are given a choice or when the restriction is clearly justified and documented.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: requests==2.31.0 — 6 advisory(ies): CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi); CVE-2026-25645 (Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility func) +3 more

Medium
Category
Supply Chain
Confidence
94% confidence
Finding

Pinning requests to 2.31.0 pulls in a version with published security advisories, including issues involving credential leakage and improper verification behavior in some request flows. In a skill that aggregates papers from external sources over HTTP(S), this increases risk because it processes untrusted URLs and remote content regularly, making dependency-level request handling flaws more relevant.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest description is written as a Chinese-language daily paper digest ('每日AI论文速递'), which indicates the skill is intended to operate in a fixed language/locale. There is no accompanying note that users can choose another language or that the skill is intentionally limited to a Chinese-speaking audience, which can violate language-choice policy requirements.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code's user-facing docstrings and printed messages are consistently in Chinese, including setup, test status, and troubleshooting guidance. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation unless the regional constraint is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

Although more domain-specific than some alternatives, "论文速递" is still presented as a standalone trigger without context, constraints, or exclusions. The documentation does not clarify whether the skill activates only in specific channels, command modes, or exact-match conditions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

This code file makes external network-backed arXiv queries in both fetch_daily_papers and search_papers, but the methods only emit logger messages and docstrings describing functionality rather than a clear user-facing warning that remote requests will be made. Under the code-file warning rule, network calls that transmit user-supplied search terms should have some visible disclosure unless already clearly communicated elsewhere.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The search_papers method accepts arbitrary query text and passes it to arxiv.Search, which results in an outbound request to a third-party service. Although this is functionally expected for a search helper, the method lacks an explicit warning or note that user-provided search terms are transmitted externally.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This manifest-style JSON defines data sources, filters, and output settings but provides no explicit indication of when or under what user request this skill or source configuration should be used. Under the vague-trigger rule for manifest files, the absence of activation constraints or negative examples can make invocation scope ambiguous.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code's natural-language strings and documentation are entirely in Chinese, including the module description and class/docstring text. Under the stated policy, forcing a specific language without user opt-in can be a locale-policy violation when no alternative or justification is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The file’s natural-language comments are written entirely in Chinese, which may indicate a language-specific constraint without any documented user choice or opt-in. Under the policy rule for language or locale constraints, this can be considered a mild natural-language policy issue when no justification or alternative is provided.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.