T03 · Remote Payload Retrieval and Execution
- Location
PUBLISH_GUIDE.md:60- Finding
Remote installation script is executed directly through Bash
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a real typhoon-analysis helper, but it also gives broad auto-activation rules, mandatory persistent logging, and unsafe install/PDF-conversion guidance that users should review before installing.
Install only if you are comfortable with the skill performing live web searches and writing persistent weather/case records. Avoid the documented curl-to-bash installer, use pinned dependencies in an isolated environment, require confirmation before any long-term log or reference-file write, and do not convert untrusted Markdown to PDF with the bundled script unless network loading and active HTML are blocked.
PUBLISH_GUIDE.md:60Remote installation script is executed directly through Bash
references/pdf_conversion_guide.md:19Executable third-party dependencies are installed without version or integrity pinning
scripts/generate_pdf.py:505Unsanitized Markdown is loaded as active content in a local Chromium page
SKILL.md:226Mandatory persistent writes can carry untrusted observations into future sessions
Piping a remotely fetched script directly into bash executes unverified code from the network without inspection, integrity validation, or pinning. If the hosting site, transport path, or upstream script is compromised, users could execute arbitrary commands on their machines during installation.
# 1. 安装 SkillHub CLI
npm install -g skillhub-cli
# 或
curl -fsSL https://skillhub.cn/install/install.sh | bash
# 2. 验证安装
skillhub --version
The command chaining pattern specifically encourages immediate shell execution of network-delivered content, reducing opportunities for user review and increasing the blast radius of any compromise. In a publication guide, this normalizes unsafe operational behavior and can lead to widespread supply-chain style compromise across users following the instructions.
# 1. 安装 SkillHub CLI
npm install -g skillhub-cli
# 或
curl -fsSL https://skillhub.cn/install/install.sh | bash
# 2. 验证安装
skillhub --version
The declared description centers on meteorological decision support: tracking typhoons and residual systems, evaluating wind/rain impacts, judging travel safety and transport suspensions, and generating reports as one component of that workflow. However, the provided code chunk only implements generic document production utilities. It parses command-line arguments, reads Markdown, extracts headings, resolves local image paths, converts Markdown to HTML, styles a cover/content layout, invokes Playwright to print HTML to PDF, and merges two PDFs. There is no weather-domain logic at all: no API calls, no typhoon data ingestion, no forecasting, no traffic-status evaluation, no safety heuristics, and no trigger logic for loading under travel or storm scenarios. While PDF generation is mentioned in the declaration, here it is the entire function rather than a supporting feature inside a typhoon analysis tool. Therefore the description does not accurately represent this code chunk.
Referenced artifact was not completely inspected
1. 在 `references/` 下新建 `[typhoon_name_lowercase]_[编号]_case_data.md`(如 `bavi_2609_case_data.md`、`dolphin_2613_case_data.md`)
Referenced artifact was not completely inspected
1. 在 `references/` 下新建 `[typhoon_name_lowercase]_[编号]_case_data.md`(如 `bavi_2609_case_data.md`、`dolphin_2613_case_data.md`)
Referenced artifact was not completely inspected
1. 在 `references/` 下新建 `[typhoon_name_lowercase]_[编号]_case_data.md`(如 `bavi_2609_case_data.md`、`dolphin_2613_case_data.md`)
This markdown file includes a sample trigger field with broad natural-language phrases such as '台风路径/登陆预测/强度变化查询' plus an ellipsis, which does not define a bounded set of invocation phrases or exclusion conditions. Without clearer specificity or negative examples, the trigger guidance could lead to overbroad or unintended skill activation.
The guide claims the skill has 'no network exfiltration' while elsewhere stating it requires network access for searching, scraping, login, publishing, and platform interaction. This inconsistency can mislead reviewers and users about the actual trust boundary, causing underestimation of data exposure or privacy risk.
The README says users can 'directly ask in conversation' and the examples include broad everyday requests like asking for latest typhoon status or generating a full report, but it does not clearly define the exact trigger scope, exclusions, or when the skill should not activate. This ambiguity can cause unintended invocation, especially because the phrasing suggests passive auto-triggering from normal conversation.
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
## 更新记录
| 版本 | 日期 | 内容 |
| ------ | ---------- | ------------------------------------------------------------------------------------------------- |
| v1.2.0 | 2026-08-26 | **新增「近海热带系统动态跟踪协议」**(nearsea_system_protocol.md,条件触发):连续谱识别(未编号扰动→热带低压→台风→残涡)、**触发铁律「距重点城市<500km 的海上系统优先级≥远洋强台风」写入 SKILL.md 强制触发区**、禁止因"未编号/弱编号"降级呈现权重;SKILL.md 触发条件/trigger/description 三处加近海系统入口,与残涡追踪协议建立联动去重;**新增「PDF 转换指南」**(pdf_conversion_guide.md,条件触发):SKILL.md 的 PDF 转换模式从 105 行精简为轻指针,功能不减弱;**description 精简重写**:突出"多台风全周期实战验证、三模式自动切换、交通停运[官方]/[预测]分级、持续迭代"等优势,保留全部触发语义;**角度表述统一为多台风迭代**:区域评估参照表、铁路/航班停运时间窗、政府应急响应时间线、降雨预测因子等由单案例锚点改述为"多台风/多案例实测校准(示例:XX)",体现规律来自多案例沉淀而非单一台风;**辅案例佐证**:简拉维(2620)近海弱台风、沙德尔(2618)强台风逼近华东;**核心评估区域扩展至江浙沪闽**:闽(福建沿海,台风登陆潜在风险地区)纳入可试用评估范围并置于二级优先,诚实标注"福建走城市快速评估框架、未内置细分参照表";**实测案例参照列加"等"字**并注多台风校准;**能力检测通过**(14项:frontmatter/触发/references/格式/脚本/协议联动全部✅,整合 saudel 索引);SKILL.md 本体净减 90+ 行仍功能完整。*架构遵循「触发铁律入强制触发区 + 详细协议下沉 references」* |
| v1.1.3 | 2026-08-18 | **新增「残涡追踪协议」章节**(白海豚18次追踪实证沉淀):残涡定位/移向追踪/重组信号监测(对流重组、低压环流再现、水汽带接通)/回折转向识别/出境用韩国日本气象厅交叉验证;**自动化触发逻辑修正**:无编号但残涡仍影响重点城市(预警在生效)时生成场景三收官报告而非简要说明;**触发条件新增**:用户询问残涡去向/残余影响必触发;**P0信源新增韩国气象厅**(残涡出境独立验证源);**辅助案例纳入**:浪卡(2617)远洋无影响型案例("无影响≠无害"远距离水汽副作用规律);**发布前表达与结构打磨**:移除 SKILL.md 正文中的迭代痕迹(日期标注、"⚠️ 必触发 xx新增"、"实测教训"等),统一为陈述性表达;区域评估参照表案例列更新(巴威+白海豚双案例);"修正前后对比"等开发记录移入更新记录。**功能与方法论零变更** |
The update log repeatedly references '强制触发区', '必触发', and expanded trigger conditions, but does not provide a precise, user-facing definition of those conditions in this README. This makes activation behavior sound broad and hard to predict, increasing the risk of accidental invocation.
The skill explicitly instructs use of network access, reading reference files, and writing reports/case-data files, but it declares no permissions/allowed-tools scope. That creates an overprivileged, under-specified execution model where hosts may grant broader capabilities than users or reviewers expect. In this context, the risk is amplified because the skill also mandates persistent writes and external fetches as part of normal operation.
The trigger rules are intentionally broad and say the skill must load for nearly all flight, rail, transport, and itinerary questions, even when the user did not ask for typhoon analysis. Over-broad auto-loading can hijack unrelated workflows, cause unnecessary network access and file writes, and increase the chance that users receive analysis from the wrong skill context.
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
#### 第一层:基础搜索(每次周期必做,3次搜索,覆盖~8个源)
| 搜索 | 工具 | 覆盖信息源 | 目的 | 注意事项 |
| ----------------------------------------- | ----------------------- | ------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------ |
| 1. CMA台风网 | WebFetch typhoon.nmc.cn | CMA | 实时位置、风速、风圈 | ⚠️ 该站用JS渲染,WebFetch可能返回旧数据或乱码。**必须与搜索2交叉验证**,位置数据以搜索2的CMA公报为准 |
| 2. "[台风名] [日期] 最新路径 登陆 强度" | WebSearch | CMA公报+省市气象+权威媒体(3-5个源) | 官方预报+预警+本地影响 | **检查搜索结果日期**,排除超过24小时的旧预报 |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
#### 第一层:基础搜索(每次周期必做,3次搜索,覆盖~8个源)
| 搜索 | 工具 | 覆盖信息源 | 目的 | 注意事项 |
| ----------------------------------------- | ----------------------- | ------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------ |
| 1. CMA台风网 | WebFetch typhoon.nmc.cn | CMA | 实时位置、风速、风圈 | ⚠️ 该站用JS渲染,WebFetch可能返回旧数据或乱码。**必须与搜索2交叉验证**,位置数据以搜索2的CMA公报为准 |
| 2. "[台风名] [日期] 最新路径 登陆 强度" | WebSearch | CMA公报+省市气象+权威媒体(3-5个源) | 官方预报+预警+本地影响 | **检查搜索结果日期**,排除超过24小时的旧预报 |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| ----------------------------------------- | ----------------------- | ------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------ |
| 1. CMA台风网 | WebFetch typhoon.nmc.cn | CMA | 实时位置、风速、风圈 | ⚠️ 该站用JS渲染,WebFetch可能返回旧数据或乱码。**必须与搜索2交叉验证**,位置数据以搜索2的CMA公报为准 |
| 2. "[台风名] [日期] 最新路径 登陆 强度" | WebSearch | CMA公报+省市气象+权威媒体(3-5个源) | 官方预报+预警+本地影响 | **检查搜索结果日期**,排除超过24小时的旧预报 |
| 3. "[台风名] 信欣 路径 解读" 或权威分析师 | WebSearch | 信欣/中国天气网分析师 | 理解"为什么"和不确定性 | — |
**第一层完成后即可做出基础判断。**
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
#### 第三层:深度分析(条件触发,1-2次搜索,覆盖特定源)
| 触发条件 | 搜索 | 覆盖信息源 |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| CMA与JMA分歧>300km | "[台风名] tropicaltidbits ECMWF GFS model spread" | Tropical Tidbits+ECMWF+GFS(3个源) |
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| 触发条件 | 搜索 | 覆盖信息源 |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| CMA与JMA分歧>300km | "[台风名] tropicaltidbits ECMWF GFS model spread" | Tropical Tidbits+ECMWF+GFS(3个源) |
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
| 沿海活动/港口 | "[港口城市] [日期] 港口 海事 渡轮 停航" | MSA+渡轮公司(2个源) |
| 航班出行 | "[机场] [日期] 航班取消 台风";查**机场天气信息聚合源**(航旅纵横APP/飞常准,含机场天气警报/解除通知/重要天气区域预警,含航路代号如H22/B221);用户提供截图时按"用户提供信息验证协议"用内置信源验证 | 飞常准+航司+**航旅纵横APP(聚合机场气象台信息,P1二级信源)**;原始信源为机场气象台公众号/官网(P0一手) |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| 触发条件 | 搜索 | 覆盖信息源 |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| CMA与JMA分歧>300km | "[台风名] tropicaltidbits ECMWF GFS model spread" | Tropical Tidbits+ECMWF+GFS(3个源) |
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
| 沿海活动/港口 | "[港口城市] [日期] 港口 海事 渡轮 停航" | MSA+渡轮公司(2个源) |
| 航班出行 | "[机场] [日期] 航班取消 台风";查**机场天气信息聚合源**(航旅纵横APP/飞常准,含机场天气警报/解除通知/重要天气区域预警,含航路代号如H22/B221);用户提供截图时按"用户提供信息验证协议"用内置信源验证 | 飞常准+航司+**航旅纵横APP(聚合机场气象台信息,P1二级信源)**;原始信源为机场气象台公众号/官网(P0一手) |
| 台风结构判断 | WebFetch zoom.earth 或 earth.nullschool.net
...[truncated 25 chars]
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| 触发条件 | 搜索 | 覆盖信息源 |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| CMA与JMA分歧>300km | "[台风名] tropicaltidbits ECMWF GFS model spread" | Tropical Tidbits+ECMWF+GFS(3个源) |
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
| 沿海活动/港口 | "[港口城市] [日期] 港口 海事 渡轮 停航" | MSA+渡轮公司(2个源) |
| 航班出行 | "[机场] [日期] 航班取消 台风";查**机场天气信息聚合源**(航旅纵横APP/飞常准,含机场天气警报/解除通知/重要天气区域预警,含航路代号如H22/B221);用户提供截图时按"用户提供信息验证协议"用内置信源验证 | 飞常准+航司+**航旅纵横APP(聚合机场气象台信息,P1二级信源)**;原始信源为机场气象台公众号/官网(P0一手) |
| 台风结构判断 | WebFetch zoom.earth 或 earth.nullschool.net
...[truncated 25 chars]
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| CMA与JMA分歧>300km | "[台风名] tropicaltidbits ECMWF GFS model spread" | Tropical Tidbits+ECMWF+GFS(3个源) |
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
| 沿海活动/港口 | "[港口城市] [日期] 港口 海事 渡轮 停航" | MSA+渡轮公司(2个源) |
| 航班出行 | "[机场] [日期] 航班取消 台风";查**机场天气信息聚合源**(航旅纵横APP/飞常准,含机场天气警报/解除通知/重要天气区域预警,含航路代号如H22/B221);用户提供截图时按"用户提供信息验证协议"用内置信源验证 | 飞常准+航司+**航旅纵横APP(聚合机场气象台信息,P1二级信源)**;原始信源为机场气象台公众号/官网(P0一手) |
| 台风结构判断 | WebFetch zoom.earth 或 earth.nullschool.net | Zoom Earth/NullSchool(1个源) |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| CMA与JMA分歧>300km | "[台风名] tropicaltidbits ECMWF GFS model spread" | Tropical Tidbits+ECMWF+GFS(3个源) |
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
| 沿海活动/港口 | "[港口城市] [日期] 港口 海事 渡轮 停航" | MSA+渡轮公司(2个源) |
| 航班出行 | "[机场] [日期] 航班取消 台风";查**机场天气信息聚合源**(航旅纵横APP/飞常准,含机场天气警报/解除通知/重要天气区域预警,含航路代号如H22/B221);用户提供截图时按"用户提供信息验证协议"用内置信源验证 | 飞常准+航司+**航旅纵横APP(聚合机场气象台信息,P1二级信源)**;原始信源为机场气象台公众号/官网(P0一手) |
| 台风结构判断 | WebFetch zoom.earth 或 earth.nullschool.net | Zoom Earth/NullSchool(1个源) |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| CMA与JMA分歧>300km | "[台风名] tropicaltidbits ECMWF GFS model spread" | Tropical Tidbits+ECMWF+GFS(3个源) |
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
| 沿海活动/港口 | "[港口城市] [日期] 港口 海事 渡轮 停航" | MSA+渡轮公司(2个源) |
| 航班出行 | "[机场] [日期] 航班取消 台风";查**机场天气信息聚合源**(航旅纵横APP/飞常准,含机场天气警报/解除通知/重要天气区域预警,含航路代号如H22/B221);用户提供截图时按"用户提供信息验证协议"用内置信源验证 | 飞常准+航司+**航旅纵横APP(聚合机场气象台信息,P1二级信源)**;原始信源为机场气象台公众号/官网(P0一手) |
| 台风结构判断 | WebFetch zoom.earth 或 earth.nullschool.net | Zoom Earth/NullSchool(1个源) |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
| 沿海活动/港口 | "[港口城市] [日期] 港口 海事 渡轮 停航" | MSA+渡轮公司(2个源) |
| 航班出行 | "[机场] [日期] 航班取消 台风";查**机场天气信息聚合源**(航旅纵横APP/飞常准,含机场天气警报/解除通知/重要天气区域预警,含航路代号如H22/B221);用户提供截图时按"用户提供信息验证协议"用内置信源验证 | 飞常准+航司+**航旅纵横APP(聚合机场气象台信息,P1二级信源)**;原始信源为机场气象台公众号/官网(P0一手) |
| 台风结构判断 | WebFetch zoom.earth 或 earth.nullschool.net | Zoom Earth/NullSchool(1个源) |
#### 信息源覆盖统计
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| 双台风场景 | "[台风A] [台风B] 双台风 藤原效应" | 分析师+媒体(1-2个源) |
| 沿海活动/港口 | "[港口城市] [日期] 港口 海事 渡轮 停航" | MSA+渡轮公司(2个源) |
| 航班出行 | "[机场] [日期] 航班取消 台风";查**机场天气信息聚合源**(航旅纵横APP/飞常准,含机场天气警报/解除通知/重要天气区域预警,含航路代号如H22/B221);用户提供截图时按"用户提供信息验证协议"用内置信源验证 | 飞常准+航司+**航旅纵横APP(聚合机场气象台信息,P1二级信源)**;原始信源为机场气象台公众号/官网(P0一手) |
| 台风结构判断 | WebFetch zoom.earth 或 earth.nullschool.net | Zoom Earth/NullSchool(1个源) |
#### 信息源覆盖统计