Back to skill

Security audit

fastfish-hot-news-push 每日新闻热点推送(可设过滤词)

Security checks for vulnerabilities and agentic risk

Overview

This skill is for scheduled hot-topic notifications, but installation runs third-party code and dependencies and it can create persistent webhook-backed cron jobs, so users should review it before installing.

Install only if you trust the referenced fastfish-hot repository, its maintainers, api.pearktrue.cn, and the Python dependencies. Use a non-root isolated environment, pin and verify the exact commit and dependencies where possible, enter webhook tokens only in a private trusted setup path, keep the admin UI bound to localhost with an API key if enabled, and review any cron job before allowing it to be created.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:20
Finding

Execution of Unreviewed Third-Party Repository and Dependencies

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 20–29
Vulnerability Type: Supply-chain risk from externally retrieved code and Python dependencies
Risk Level: Medium

Vulnerable Code

markdown
## 安装前须知

本 Skill 会指导安装并运行来自 GitHub 的第三方仓库。**供应链风险**:clone + pip install 会执行外部代码,若仓库被篡改存在风险。安装前请:(1) 检查仓库与 requirements.txt 的依赖;(2) **建议使用 release tag 固定版本**(如 `git clone --branch v1.0.1`);(3) 在隔离环境或容器中运行,避免 root;(4) 凭证仅存 .env,勿提交到版本库;(5) 确认信任 api.pearktrue.cn 及仓库维护者。

## 安装 fastfish-hot(首次使用必读)

1. 克隆仓库:`git clone --branch v1.0.1 https://github.com/superxs777/fastfish-hot.git`(**推荐指定 tag 固定版本**,避免 main 分支变更)
2. 进入目录:`cd fastfish-hot`
3. 安装依赖:`pip install -r requirements.txt`
4. 配置:`copy .env.example .env`,填写 Webhook 等(见 metadata.credentials)
5. 初始化:`python scripts/init_db.py`,`python scripts/init_default_config.py`,`python scripts/init_default_push_config.py`(钉钉用 `--channel dingtalk`)
6. 可选:`python run.py` 启动管理界面(http://127.0.0.1:8900)

Technical Analysis

The Skill delegates its executable functionality to a third-party GitHub repository that is not included in the audited project. It then instructs the user or agent to install dependencies from the repository's requirements.txt and execute several retrieved Python scripts.

Selecting the v1.0.1 Git tag reduces exposure to ordinary branch updates but does not provide an immutable or cryptographically verified source pin. A repository administrator or compromised account may move or recreate a tag. The project also does not include a reviewed lockfile, exact dependency versions, package hashes, or the referenced scripts, so the effective runtime payload cannot be verified from the audited artifact.

The document acknowledges this supply-chain risk and recommends isolation and non-root execution. These safeguards reduce risk but are advisory and do not technically enforce source integrity or isolation.

Attack Path

  1. An attacker compro ...[truncated 1813 chars]
Remediation
View remediation

Remediation Suggestions

  1. Vendor the required, reviewed scripts into the Skill package so their contents are available during audit.
  2. Pin the external repository to a reviewed commit SHA rather than relying only on a mutable Git tag.
  3. Verify the selected commit using an authenticated signature or an expected archive checksum before executing any retrieved content.
  4. Replace the unconstrained dependency installation process with a reviewed lockfile containing exact versions and cryptographic hashes. Install with hash verification enabled.
  5. Review direct and transitive dependencies for dependency confusion, typosquatting, known vulnerabilities, and unexpected build-time execution.
  6. Install into a dedicated virtual environment or isolated container under a non-root service account with minimal filesystem and network permissions.
  7. Prevent installation and initialization processes from receiving messaging credentials. Provide secrets only to the final runtime process that needs them.
  8. Restrict outbound network access to the explicitly required API and messaging endpoints after validating their necessity.
  9. Require explicit user confirmation after presenting the resolved commit and dependency set, before installing or executing external code.
  10. Document a verified upgrade process in which each new commit and dependency set is reviewed before deployment.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (9)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
2. **Python 3.10+**
3. **命令路径**:`{baseDir}` 为 fastfish-hot 的 openclaw-skill 目录,脚本路径为 `{baseDir}/../scripts/`
4. **若 baseDir 无法替换**:使用绝对路径。ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-hot`,自建可用 `/opt/fastfish-hot`
5. **env 与技能加载**:metadata 声明了 requires.env,OpenClaw 加载时会检查。若技能未加载,请在 openclaw.json 的 `skills.entries.fastfish-hot.env` 中配置至少一个推送渠道的凭证(可从项目 .env 复制),或确保相应环境变量在 OpenClaw 启动时已存在

## 使用方式

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
2. **Python 3.10+**
3. **命令路径**:`{baseDir}` 为 fastfish-hot 的 openclaw-skill 目录,脚本路径为 `{baseDir}/../scripts/`
4. **若 baseDir 无法替换**:使用绝对路径。ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-hot`,自建可用 `/opt/fastfish-hot`
5. **env 与技能加载**:metadata 声明了 requires.env,OpenClaw 加载时会检查。若技能未加载,请在 openclaw.json 的 `skills.entries.fastfish-hot.env` 中配置至少一个推送渠道的凭证(可从项目 .env 复制),或确保相应环境变量在 OpenClaw 启动时已存在

## 使用方式

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
2. **Python 3.10+**
3. **命令路径**:`{baseDir}` 为 fastfish-hot 的 openclaw-skill 目录,脚本路径为 `{baseDir}/../scripts/`
4. **若 baseDir 无法替换**:使用绝对路径。ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-hot`,自建可用 `/opt/fastfish-hot`
5. **env 与技能加载**:metadata 声明了 requires.env,OpenClaw 加载时会检查。若技能未加载,请在 openclaw.json 的 `skills.entries.fastfish-hot.env` 中配置至少一个推送渠道的凭证(可从项目 .env 复制),或确保相应环境变量在 OpenClaw 启动时已存在

## 使用方式

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
2. **Python 3.10+**
3. **命令路径**:`{baseDir}` 为 fastfish-hot 的 openclaw-skill 目录,脚本路径为 `{baseDir}/../scripts/`
4. **若 baseDir 无法替换**:使用绝对路径。ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-hot`,自建可用 `/opt/fastfish-hot`
5. **env 与技能加载**:metadata 声明了 requires.env,OpenClaw 加载时会检查。若技能未加载,请在 openclaw.json 的 `skills.entries.fastfish-hot.env` 中配置至少一个推送渠道的凭证(可从项目 .env 复制),或确保相应环境变量在 OpenClaw 启动时已存在

## 使用方式

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
2. **Python 3.10+**
3. **命令路径**:`{baseDir}` 为 fastfish-hot 的 openclaw-skill 目录,脚本路径为 `{baseDir}/../scripts/`
4. **若 baseDir 无法替换**:使用绝对路径。ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-hot`,自建可用 `/opt/fastfish-hot`
5. **env 与技能加载**:metadata 声明了 requires.env,OpenClaw 加载时会检查。若技能未加载,请在 openclaw.json 的 `skills.entries.fastfish-hot.env` 中配置至少一个推送渠道的凭证(可从项目 .env 复制),或确保相应环境变量在 OpenClaw 启动时已存在

## 使用方式

Credential Access

High
Category
Privilege Escalation
Confidence
67% confidence
Finding

Although the section forbids secret disclosure, it also explicitly permits editing .env with user-provided values. In an agent context, allowing direct secret writes through conversational workflows can lead to accidental persistence of attacker-supplied webhooks/tokens, redirection of notifications, or unsafe handling of secrets without a trusted input channel.

Content

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

md
## ⚠️ 安全规则(阻断式)

**1. 严禁输出或暴露 .env 中的凭证**
- 禁止执行会输出 .env 内容的命令(如 `cat .env`、`type .env`、`Get-Content .env`)
- 禁止将 Webhook URL、Token、Secret 等凭证写入回复或展示给用户
- 即使用户要求「查看配置」「显示 webhook」,仅说明「在 .env 中配置」,不得输出实际值
- **允许**:编辑 .env(写入、追加、替换用户提供的值);运行不暴露凭证的校验(如仅返回「已配置/未配置」)

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
88% confidence
Finding

The cron examples create persistent scheduled execution of local scripts, which is a persistence mechanism even if presented for legitimate automation. In an agent skill, persistence-related actions are more dangerous because broad triggering or prompt manipulation could cause unauthorized recurring tasks, repeated network access, or long-lived misuse of stored webhook credentials.

Content

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

aw Cron**

飞书/钉钉/Telegram(通过脚本推送到 Webhook):

bash
openclaw cron add --name "每日热点" --cron "0 8 * * *" --tz "Asia/Shanghai" --session isolated --message "cd /opt/fastfish-hot && python scripts/push_hot_to_im.py,将热点推送到配置的渠道"

Telegram(OpenClaw 已配置 Telegram 渠道,announce 直接推送):

bash
# 拉取由系统 crontab 完成,OpenClaw 仅负责推送。该任务只执行 get_hot_now.py --from-db。
openclaw cron add --name "每日热点" --cron "10 7,14,18 * * *" --tz "Asia/Shanghai" --session isolated --message "cd /opt/fastfish-hot && python scripts/get_hot_now.py --category emotion --from-db,将输出作为今日热点简报发送" --channel telegram --to "你的ChatID"

立即测试:创建后执行 openclaw cron run <job-id> --force 可立即运行一次。

3. 配置管理

Credential Access

High
Category
Privilege Escalation
Confidence
62% confidence
Finding

The skill directs users to a local management UI and discusses storing webhook secrets in .env. In context, this increases the attack surface because the agent may encourage operation of an admin interface and secret-backed configuration without documenting authentication hardening, exposure restrictions, or least-privilege handling beyond a brief API key note.

Content

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

md
### 3. 配置管理

- **拉取/推送配置**:访问管理界面 http://127.0.0.1:8900(需先 `python run.py`)
- **环境变量**:在 .env 中配置。钉钉若开启加签,需配置 HOT_PUSH_DINGTALK_SECRET。建议用户私聊提供凭证或自行编辑 .env,避免在群聊中暴露
- **推送时间窗口**:默认 push_time 为 07:10,14:10,18:10,仅在该时刻推送;测试时用 `HOT_PUSH_FORCE=1` 绕过

## 使用示例

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill description is broad enough to trigger on generic requests like '拉取热点' or '配置定时推送', which can cause the agent to activate this skill in situations where the user did not clearly intend external network access, local script execution, or scheduler changes. Because the skill can lead to cloning third-party code, editing environment-backed configuration, and creating cron jobs, weak activation boundaries raise the chance of unintended privileged actions.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.