Back to skill

Security audit

AI Weekly Report

Security checks for vulnerabilities and agentic risk

Overview

This skill mainly builds an AI weekly report, and its higher-risk publishing and scheduling tools are disclosed and require explicit use.

Install this if you want an AI weekly-report generator and are comfortable with optional publishing tools being available. Treat deploy, push, Feishu, Pages-source, and scheduler commands as high-impact: invoke them only deliberately, use least-privilege short-lived tokens, and avoid enabling scheduled push unless you want unattended publication.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (169)

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

描述强调默认触发仅是“抓取、生成 HTML、校验、展示”,且不会在生成周报时自动触发部署相关流程;部署/推送/调度等是独立显式调用能力。此代码虽然不直接 git push,但其主用途明显是“在 CI 内生成 AI 周报站并发布到 GitHub Pages”的站点构建环节,输出适配 Pages artifact 的完整站点结构,并主动访问已部署 Pages URL 来累加历史索引。这比“生成一个单文件 HTML 周报”更偏向持续发布的站点构建/部署流水线组成部分。代码还会生成 leaderboard.json、model_profiles.json 和 reports/index.json 等结构化站点数据,不只是周报 HTML。本代码与声明中提到的独立部署能力边界存在实质偏离,因此应判定为描述与实际行为不完全一致。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

声明描述的是一个“生成 AI 周报 HTML”的技能,核心能力是从 RSS 源抓取内容并产出可搜索/筛选/暗色模式的单文件 HTML 周报;同时强调部署/推送不会默认触发。而这段代码的实际职责是对现有 HTML 报告做二次处理:解析 HTML 中的 KPI 与新闻标题、推断周次/日期、写出 summary.json,并打印一段可用于 IM/推送渠道的纯文本通知。它没有实现声明中的主要流程(抓取 RSS、整理新闻、生成 HTML 周报、页面交互展示),因此其主要目的与声明不一致。虽然代码没有违反“默认不部署/不推送”的安全边界,且通知文本可视为周报生态中的辅助工具,但单看这段代码,其功能重心明显是“摘要提取与通知生成”,而不是声明所说的“生成周报 HTML”。因此应判定为描述与代码行为存在实质性不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

该代码块的实际功能与声明中的核心技能用途不一致。声明主要描述的是“生成 AI 行业周报 HTML”的能力,虽然也提到包内确实附带飞书推送等独立工具,但这些属于非默认、需显式调用的附属能力。当前提供的代码并不是周报生成流程的一部分,而是专门用于初始化飞书连接器配置的独立脚本。就‘技能描述是否准确代表此代码块实际行为’而言,答案是否定的:代码块的主功能是配置飞书投递目标,而非新闻抓取、整理或 HTML 周报生成。因此应判定为描述与代码行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

代码的核心功能不是“生成本周 AI 行业动态的 HTML 周报”,而是调用 aiweekly.leaderboard.fetch_all_leaderboards 抓取排行榜数据,并写出 mirror/leaderboard.json 与 model_profiles.json 作为静态镜像。这与声明中的默认触发动作(新闻抓取、HTML 生成、校验、展示)明显不同。虽然声明文本提到包内确实包含“排行榜刷新”等独立能力,但这段代码本身正是该独立能力的一部分,而不是周报生成逻辑。因此,就“描述是否准确代表该代码块实际行为”而言,存在明显不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

代码行为与声明的主要功能明显不一致。声明描述的是一个“AI 行业周报生成”技能,默认动作应是抓取新闻、生成和展示 HTML 周报;而该代码实际实现的是飞书推送相关的凭据预检工具,属于声明中提到的独立附属工具类别之一,并且是运维/流水线支持脚本,不是周报内容生产流程本身。虽然声明确实提到包内随附飞书推送与其他独立工具,但当前代码块本身并不执行所声明的核心能力,因此就‘该技能描述是否准确代表此代码块实际行为’而言,存在明显偏差。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

代码行为与声明中的“生成 AI 周报”主功能明显不一致。虽然声明文本提到包内确实包含部署/Pages 相关独立工具,且这些能力需显式调用,但就这一个提供的代码块本身而言,它执行的是仓库运维配置:读取 GitHub 凭据、解析 origin remote、调用 /repos/{owner}/{repo}/pages API,并把 Pages 源切到 gh-pages。该行为属于声明中明确划出的非默认能力边界(部署/改仓库设置类)。因此,若把这段代码视为该技能的实现代码,它并不准确代表“生成 AI 周报”的描述,而是一个独立的 GitHub Pages 配置脚本,应判定为描述与代码块行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

声明描述的是一个面向终端用户的 AI 行业周报生成技能,核心能力应是收集AI新闻、整理内容并产出单文件HTML报告。实际代码片段完全没有新闻抓取、RSS处理、HTML生成、搜索/筛选/暗色模式、周报汇总等行为;相反,它是一个开发辅助性质的静态检查模块,用于扫描 scripts 目录中的 Python 文件并做源码规范验证。这属于与声明主目的 materially different 的功能。虽然声明中提到“校验”是报告生成流程的一部分,但这里的‘校验’具体实现是针对源码结构和编码规范的守护工具,不是对周报内容或生成结果的用户可见校验,因此不能视为仅仅是支持细节。故应判定为描述与代码行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明的核心功能是生成 AI 行业周报 HTML 页面,围绕新闻采集、整理、展示展开;而代码实际完全没有 RSS 抓取、新闻汇总、HTML 生成、暗色模式、搜索筛选等逻辑。相反,它是一个独立的数据治理/校验工具,专门处理模型资料卡的已核实与未核实状态,并修改两个 JSON 文件。虽然声明中提到包内可能附带排行榜刷新等独立工具,但该代码仍不属于所声明的默认“周报生成”行为,且其主要用途与触发方式都明显不同,因此应判定为描述与代码行为不匹配。

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 68)May include surrounding context.

md
- **命令**:`bash run_report.sh scripts/fetch_ai_news.py --output news.json`

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| 改 HTML 结构 | `assets/news_site_template.html` |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| GitHub Pages 部署(`deploy_ghpages.py` / `deploy.py`) | 明确要求部署**且**指定期数 | 用户本次提供的凭据 | 默认仅本地提交、**不推送**;需显式 `--push` 才推送 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| Pages 源切换(`setup_pages_source.sh`) | 明确要求切源 | 用户本次的 token 或已登录 `gh` | 仅改 Pages 源配置 |

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
| 英文翻译 | 本地缓存 → 远程源 → 本地Ollama | 标「未翻译·原文保留」,用 `translations_offline.json` |

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · assets/news_site_template.html (reported line 805)May include surrounding context.

html
</head>
<body>

<!-- ========== HEADER ========== -->
<header class="header">
  <div class="header-inner">
    <div class="header-left">

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · assets/news_site_template.html (reported line 1056)May include surrounding context.

html
<div class="lb-cross" id="lbCross"></div>
  </div>

  <!-- 开源模型榜:LLM-Stats + Hugging Face 双列并排 -->
  <div class="lb-block">
    <h3 class="lb-title">🔓 开源模型排行榜 <span class="lb-sub">可自部署 / 可商用?</span></h3>
    <div class="lb-cols">

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · assets/news_site_template.html (reported line 1056)May include surrounding context.

html
<div class="lb-cross" id="lbCross"></div>
  </div>

  <!-- 开源模型榜:LLM-Stats + Hugging Face 双列并排 -->
  <div class="lb-block">
    <h3 class="lb-title">🔓 开源模型排行榜 <span class="lb-sub">可自部署 / 可商用?</span></h3>
    <div class="lb-cols">

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · assets/news_site_template.html (reported line 1091)May include surrounding context.

html
</div>
  </div>

  <!-- 性价比象限:能力 × 成本(气泡大小≈上下文窗口) -->
  <div class="lb-block lb-value" id="lbValueBlock" style="display:none;">
    <h3 class="lb-title">💡 性价比象限 <span class="lb-sub">能力 vs 成本(点我查看选型卡)</span></h3>
    <div class="lb-chart-wrap">

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · assets/news_site_template.html (reported line 1091)May include surrounding context.

html
</div>
  </div>

  <!-- 性价比象限:能力 x 成本(气泡大小≈上下文窗口) -->
  <div class="lb-block lb-value" id="lbValueBlock" style="display:none;">
    <h3 class="lb-title">💡 性价比象限 <span class="lb-sub">能力 vs 成本(点我查看选型卡)</span></h3>
    <div class="lb-chart-wrap">

Lp1

High
Category
MCP Least Privilege
Confidence
82% confidence
Finding

This file reads environment variables and local configuration to determine the Feishu recipient, but the analysis context indicates this capability is not declared in the skill permissions. Undeclared environment access is risky because it can consume sensitive runtime configuration or silently direct outbound messages to attacker-controlled destinations, which is especially relevant in a delivery/publishing component.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The trigger examples are broad enough to match ordinary conversational requests, including requests that can escalate to optional actions like pushing to Feishu. In an agent platform, overly permissive trigger language can cause the skill to activate unexpectedly and perform side effects the user did not clearly intend.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

Scanner excerpt · references/FAQ.md (reported line 53)May include surrounding context.

md
> 没 venv / 没依赖也能跑:用 WebSearch 手动搜集新闻写成同样结构的 JSON,再走 `--api-json` 消费。

### Q2:GitHub PAT 怎么生成?(仅用 GitHub Pages 部署时需要)
1. GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
2. 勾 `repo`(含 `public_repo`)权限
3. 复制 token,设为环境变量 `GITHUB_TOKEN`,或交给 `git` 凭据管理器
4. 推送 `gh-pages` 分支用:`git push origin gh-pages`

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 · references/data_sources.md (reported line 121)May include surrounding context.

  • 获取 key:注册 https://newsapi.org/register
  • 配置方法:
    text
    在 ~/.workbuddy/skills/ai-weekly/.env 中添加:
    NEWSAPI_KEY=your_key_here
    
  • 调用示例:

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 · references/data_sources.md (reported line 147)May include surrounding context.

  • 获取 key:注册 https://newsapi.org/register
  • 配置方法:
    text
    在 ~/.workbuddy/skills/ai-weekly/.env 中添加:
    NEWSAPI_KEY=your_key_here
    
  • 调用示例:

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 · scripts/fetch_ai_news.py (reported line 130)May include surrounding context.

python
- **获取 key**:注册 https://newsapi.org/register
- **配置方法**:
  ```
  在 ~/.workbuddy/skills/ai-weekly/.env 中添加:
  NEWSAPI_KEY=your_key_here
  ```
- **调用示例**:

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
60% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · scripts/deploy_ghpages.py (reported line 173)May include surrounding context.

python
def _git(args, cwd=None, check=True):
    env = dict(os.environ)
    env["MSYS_NO_PATHCONV"] = "1"
    cmd = ["git"] + list(args)
    # 免交互推送:仅当命令为 push 且能解析到 token 时,通过 GIT_CONFIG_* 环境