Back to skill

Security audit

Weibo Hot Daily

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly fetches Weibo trends, but it includes and reuses a hard-coded Weibo session cookie and overstates several advertised features.

Review before installing. The main issue is the bundled Weibo session cookie: users would run requests using someone else's embedded credential, and the credential is exposed to anyone inspecting the package. Prefer a version that removes the cookie, pins the installer version, and accurately documents which features exist and what data leaves the machine.

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

Error
Location
fetch_hot.py:43
Finding

Hard-Coded Weibo Session Credential Transmitted in Every API Request

Content
View full analysis
List[Dict]: """获取热搜榜""" url = WEIBO_HOT_API try: req = urllib.request.Request(url, headers=self.headers) with urllib.request.urlopen(req, timeout=10) as response: ``` ### Technical Analysis The source code embeds a Weibo `SUB` session cookie and automatically sends it to `https://weibo.com/ajax/side/hotSearch` whenever the fetch operation runs. Session cookies are authentication credentials and must not be distributed in source code. The destination is consistent with the Skill's declared purpose, and the audit found no evidence that user-provided credentials are sent to an unrelated server. However, a bundled reusable session token is not necessary for a public hot-search fetch if an unauthenticated endpoint is available. It also means every installation shares authentication material controlled by the publisher rather than the user. Anyone who can download or inspect the Skill can extract and replay the cookie. The practical exploitability depends on whether the cookie remains valid and what server-side privileges are attached to it. ### Attack Path 1. An attacker downloads or otherwise obtains the Skill package. 2. The attacker opens `fetch_hot.py` and extracts the hard-coded `SUB` cookie. 3. The attacker places the cookie in req ...[truncated 784 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:24
Finding

Mutable npx Installation Command Executes Unpinned Third-Party Code

Content
View full analysis
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
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The core fetching behavior matches part of the description: the script does retrieve Weibo hot search topics and can format/export them. However, several prominent advertised capabilities are not present in the supplied code. The description emphasizes daily automatic fetching, AI summarization, and multi-channel push delivery. In reality, the script only runs when invoked from the command line, has no built-in scheduling or automation, does not push data anywhere, and does not implement real AI summarization beyond a simple rule-based summary; the OpenAI path is explicitly TODO. Therefore the description materially overstates the implemented functionality.

Content

No source excerpt is available for this finding.

os.system() or os exec-family call

High
Category
Dangerous Code Execution
Confidence
85% confidence
Finding

os.system() and os exec-family calls run shell commands with the process's full privileges, enabling arbitrary command execution.

Content

Scanner excerpt · fetch_hot.py (reported line 21)May include surrounding context.

python
# 设置控制台编码
if sys.platform == 'win32':
    os.system('chcp 65001 >nul 2>&1')
    sys.stdout.reconfigure(encoding='utf-8')
    sys.stderr.reconfigure(encoding='utf-8')

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script embeds a hard-coded authenticated Weibo cookie and sends it on every outbound request. This is dangerous because it distributes a credential inside code, risks unauthorized account use or account takeover exposure, and may leak or misuse the publisher's session in environments where users unknowingly run the skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The README advertises multi-channel push delivery via Telegram/WeChat/email but provides no warning that fetched content, summaries, recipient metadata, or API credentials may be transmitted to third-party services. In a tool that also performs AI summarization and automated delivery, missing privacy and data-flow disclosure can lead users to expose sensitive operational data without informed consent.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The README instructs users to run npx clawhub@latest install weibo-hot-daily, which fetches and executes the latest published package code at install time rather than a pinned, reviewed version. This creates a supply-chain risk: if the package or one of its dependencies is compromised, users may execute unexpected code simply by following the documented install command.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
85% confidence
Finding

The skill advertises executable behavior involving shell, network access, and file output but does not declare any explicit tool scope or permissions. This weakens least-privilege controls and can cause the skill to run with broader capabilities than users expect, increasing the chance of unintended network access or filesystem modification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill description promotes AI summarization and multi-channel push behavior without clearly disclosing whether user data, fetched content, or metadata may be transmitted to third-party services. In a skill that already implies networked collection and possible external delivery, missing disclosure can lead users to expose data they did not expect to leave the local environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

Using 'npx clawhub@latest' relies on an unpinned remote package version, which creates a supply-chain risk: a future malicious or compromised release could be executed during installation. Because npx fetches and runs code, users may unknowingly execute attacker-controlled changes simply by following the documented install command.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The natural-language description and all user-facing output are fixed in Chinese, and the request headers explicitly prefer zh-CN. There is no indication that the user can choose another language or that the locale restriction is a documented regional requirement.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The argument help text says --category provides category filtering, and fetch_hot accepts a category parameter. However, the method never uses that parameter when constructing the request or filtering results, so the documented behavior contradicts the actual implementation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

Natural-language content in the README consistently uses Chinese for headings, feature descriptions, and usage guidance, while not indicating that the language is optional or region-specific. This can violate language/locale policy when a skill effectively forces a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill is described as an automated Weibo hot-search fetcher with summary and push capabilities. Invoking os.system('chcp 65001 >nul 2>&1') spawns a shell purely for terminal configuration, which is an execution capability outside the core data-fetching purpose and not declared in the manifest description.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The package description is written entirely in Chinese and presents the skill as a Chinese-language offering without indicating any user language choice or locale constraint. Under the policy, language or locale restrictions should be either optional for the user or clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.