Back to skill

Security audit

fastfish 微信公众号(wechat)快速排版精简版

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed wrapper for installing and operating fastfish-lite, with expected but real supply-chain, credential, and scheduled-task risks.

Install only if you trust the fastfish-lite repository and its dependencies. Use a virtual environment or container, avoid running as root, keep webhook/API keys narrowly scoped, and create scheduled push jobs only when you actually want persistent daily notifications.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Warning
Location
SKILL.md:31
Finding
Unverified Remote Repository and Dependency Execution## Vulnerability Details **File Location**: `SKILL.md`, lines 31-35 **Vulnerability Type**: Remote payload retrieval and insecure software supply chain **Risk Level**: Medium ### Vulnerable Code ```bash git clone --branch v1.0.0 https://github.com/superxs777/fastfish-lite.git cd fastfish-lite pip install -r requirements.txt copy .env.example .env python main.py ``` ### Technical Analysis The installation procedure retrieves an external Git repository, installs the dependencies declared by that repository, and executes its application. Although using a version tag is safer than using a moving branch, a Git tag is not necessarily immutable and does not cryptographically verify the retrieved content. The referenced repository, application scripts, and `requirements.txt` are not included in the audited Skill package. Consequently, their effective behavior cannot be established from the reviewed artifact. The instructions also do not require dependency hashes, artifact signatures, or verification against a reviewed commit SHA. This creates two related risks: 1. The external repository is an execution channel whose payload could differ from the code originally reviewed. 2. The dependency installation step could execute compromised or otherwise unsafe third-party package installation logic. The document warns users about supply-chain risk and recommends isolation and non-root execution. These precautions reduce potential impact but do not verify the integrity of the retrieved code. ### Attack Path 1. An attacker compromises the external repository, a maintainer account, the referenced tag, or a dependency source. 2. The attacker modifies application code, dependency declarations, or package installation behavior. 3. A user follows the documented installation procedure and clones the affected repository. 4. `pip install -r requirements.txt` downloads and installs the attacker-influenced dependencies. Installation-t ...[truncated 1037 chars]
Remediation
## Remediation Suggestions 1. Pin the external repository to a reviewed, immutable commit SHA instead of relying solely on a mutable tag. 2. Verify the checked-out commit after cloning and abort installation if it does not match the approved SHA. 3. Pin every Python dependency to an exact version and use hashes, such as a lock file compatible with `pip install --require-hashes`. 4. Publish signed releases or checksums and require verification before installation or execution. 5. Review and vendor security-critical scripts in the Skill package where practical, so the executed implementation is covered by the same audit. 6. Install dependencies in a dedicated virtual environment or container using a non-root service account. 7. Restrict the service account's filesystem and outbound-network permissions to those required for the documented functionality. 8. Provide credentials only at runtime, grant them the narrowest available permissions, and keep them inaccessible to unrelated processes. 9. Perform dependency vulnerability and provenance scanning as part of release publication and deployment.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Credential Access

High
Category
Privilege Escalation
Content
{
        "requires": { "bins": ["python3"] },
        "primaryEnv": "MEDIA_AGENT_API_KEY",
        "credentials": "MEDIA_AGENT_API_KEY (可选,API 鉴权);热点推送至少其一:HOT_PUSH_FEISHU_WEBHOOK, HOT_PUSH_DINGTALK_WEBHOOK, HOT_PUSH_DINGTALK_SECRET(钉钉加签), HOT_PUSH_TELEGRAM_BOT_TOKEN+CHAT_ID,存 .env"
      }
  }
---
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
1. **fastfish-lite 已安装并启动**:按上方「安装 fastfish-lite」完成部署,`python main.py` 监听 8899
2. **Python 3.10+**
3. **CLI 路径**:命令中的 `{baseDir}` 需替换为你的 fastfish-lite 安装目录下的 `openclaw-skill` 路径;ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-lite`,自建可用 `/opt/fastfish-lite` 或 `C:\fastfish-lite`
4. **可选**:`MEDIA_AGENT_API_KEY` 环境变量;热点推送需在 .env 配置至少一个渠道(见 metadata.credentials)

## ⚠️ 安全规则(阻断式)
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
1. **fastfish-lite 已安装并启动**:按上方「安装 fastfish-lite」完成部署,`python main.py` 监听 8899
2. **Python 3.10+**
3. **CLI 路径**:命令中的 `{baseDir}` 需替换为你的 fastfish-lite 安装目录下的 `openclaw-skill` 路径;ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-lite`,自建可用 `/opt/fastfish-lite` 或 `C:\fastfish-lite`
4. **可选**:`MEDIA_AGENT_API_KEY` 环境变量;热点推送需在 .env 配置至少一个渠道(见 metadata.credentials)

## ⚠️ 安全规则(阻断式)
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
1. **fastfish-lite 已安装并启动**:按上方「安装 fastfish-lite」完成部署,`python main.py` 监听 8899
2. **Python 3.10+**
3. **CLI 路径**:命令中的 `{baseDir}` 需替换为你的 fastfish-lite 安装目录下的 `openclaw-skill` 路径;ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-lite`,自建可用 `/opt/fastfish-lite` 或 `C:\fastfish-lite`
4. **可选**:`MEDIA_AGENT_API_KEY` 环境变量;热点推送需在 .env 配置至少一个渠道(见 metadata.credentials)

## ⚠️ 安全规则(阻断式)
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
1. **fastfish-lite 已安装并启动**:按上方「安装 fastfish-lite」完成部署,`python main.py` 监听 8899
2. **Python 3.10+**
3. **CLI 路径**:命令中的 `{baseDir}` 需替换为你的 fastfish-lite 安装目录下的 `openclaw-skill` 路径;ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-lite`,自建可用 `/opt/fastfish-lite` 或 `C:\fastfish-lite`
4. **可选**:`MEDIA_AGENT_API_KEY` 环境变量;热点推送需在 .env 配置至少一个渠道(见 metadata.credentials)

## ⚠️ 安全规则(阻断式)
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
1. **fastfish-lite 已安装并启动**:按上方「安装 fastfish-lite」完成部署,`python main.py` 监听 8899
2. **Python 3.10+**
3. **CLI 路径**:命令中的 `{baseDir}` 需替换为你的 fastfish-lite 安装目录下的 `openclaw-skill` 路径;ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-lite`,自建可用 `/opt/fastfish-lite` 或 `C:\fastfish-lite`
4. **可选**:`MEDIA_AGENT_API_KEY` 环境变量;热点推送需在 .env 配置至少一个渠道(见 metadata.credentials)

## ⚠️ 安全规则(阻断式)
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
1. **fastfish-lite 已安装并启动**:按上方「安装 fastfish-lite」完成部署,`python main.py` 监听 8899
2. **Python 3.10+**
3. **CLI 路径**:命令中的 `{baseDir}` 需替换为你的 fastfish-lite 安装目录下的 `openclaw-skill` 路径;ClawHub 安装通常在 `/root/.openclaw/workspace/fastfish-lite`,自建可用 `/opt/fastfish-lite` 或 `C:\fastfish-lite`
4. **可选**:`MEDIA_AGENT_API_KEY` 环境变量;热点推送需在 .env 配置至少一个渠道(见 metadata.credentials)

## ⚠️ 安全规则(阻断式)
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

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

High
Category
YARA Match
Content
阻断规则)**:在未得到用户明确要求时,严禁执行 `openclaw cron edit`、`openclaw cron rm`、`openclaw cron update`。出错时仅报告问题,不得主动修改配置。只有用户明确说「修改」「删除」「调整」定时任务时方可执行。

数据源:api.pearktrue.cn。支持**实时提取**和**定时更新**。推送支持飞书/钉钉/Telegram(系统 crontab 或 OpenClaw Cron 执行 push_hot_to_im.py)及 Slack/Discord 等(OpenClaw Cron announce)。

#### 7.1 实时提取热点

用户说「拉取热点」「实时热点」「知乎热搜」等时,使用 `system.run` 执行 `get_hot_now.py`:

```bash
# 按平台拉取(逗号分隔)
python {baseDir}/../scripts/get_hot_now.py --source 知乎
python {baseDir}/../scripts/get_hot_now.py --source 知乎,百度,今日头条

# 按类别拉取(使用 hot_push_config 的 sources 和关键词过滤)
python {baseDir}/../scripts/get_hot_now.py --category emotion

# 输出 JSON
python
Confidence
75% confidence
Finding
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Static analysis

No suspicious patterns detected.