T01 · Skill Instruction Hijacking
- Location
SKILL.md:31- Finding
Skill Instructions Disable Agent Permission Controls
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is an airline seat-map scraping and image-organizing tool, but it asks users to bypass agent permissions and persist broad shell/write privileges that are not necessary for the task.
Review this skill carefully before installing. Do not run it with permission bypass or add the suggested broad ~/.claude/settings.json permissions. If used, run it only in a constrained project directory, use dry-run modes first, back up downloaded data before deduplication, and restrict scraping to trusted seatmaps.com URLs.
SKILL.md:31Skill Instructions Disable Agent Permission Controls
scripts/scrape_seatmaps.py:298Unrestricted URL Fetching Enables Server-Side Request Forgery
README.md:13Unpinned Third-Party Python Dependencies
声明描述的是一个较完整的数据抓取与内容生成流程,核心包括从 seatmaps.com 获取航空公司机型座位图及相关信息、处理机型详情/舱位配置/座椅图片/机上设施,并生成网站展示信息。但该代码块仅是离线后处理工具,不进行网络访问,不抓取任何网页或 API,也不解析 seatmaps.com 数据。它只读取本地目录中的图片文件,根据文件名关键词进行分类复制,并生成分类统计报告。因此,代码行为只覆盖了声明中“自动分类整理图片”的一小部分,且缺失了声明的主要能力,属于明显的描述与实际行为不匹配。
声明描述的是一个面向航空公司/机型座位图数据采集与整理的技能,核心能力应包括抓取外部数据源、解析座位图与机上设施信息、整理并生成网站展示内容。而实际代码完全没有网络访问、抓取逻辑、HTML/API 解析或站点内容生成功能。相反,它只对本地目录中的图片文件进行哈希比对,识别并删除重复项,并输出去重报告。删除文件属于具备副作用的重要能力,但在声明中未体现。因此该代码块与声明用途存在明显且实质性的不匹配。
该代码的核心行为与“抓取 seatmaps.com 内容并保存本地资料”基本相关,但描述明显夸大了自动化处理能力。代码确实支持 seatmaps.com 数据源、按航司发现机型链接、抓取机型页面、下载图片、保存原始页面,并生成整理文档;这些部分与声明部分一致。但声明中的关键能力——自动分类图片、自动处理机型详情/舱位配置/座椅图片/机上设施信息、以及生成可用于网站展示的航司信息——在代码中并未真正实现。生成的“机型详情.md”主要是固定模板,许多核心字段都是“待确认/待补充”;图片也没有按座位图、餐食、娱乐设备等目录进行分类,只统一下载到原始数据目录。因此这是描述与实际行为不一致的情况,属于能力被显著高估。
The skill explicitly instructs users to run with bypassed permissions and broad write/edit access, removing an important safety barrier before the user has validated what the skill will do. In the context of a skill that performs filesystem writes, deletion, and network retrieval, this greatly increases the blast radius of any bug, malicious modification, or unexpected behavior.
The skill directs the user to modify ~/.claude/settings.json, an agent configuration path, to grant broad permissions including Bash, Edit, Write, and MultiEdit. Encouraging persistent expansion of agent privileges at the config level is dangerous because it outlives this task and can expose future sessions to unintended filesystem modification or execution risk.
claude --dangerously-skip-permissions --permission-mode bypassPermissions
或配置 `~/.claude/settings.json`:
```json
{
Referenced artifact was not completely inspected
| 5 | 语义分类 | `node scripts/classify-images.js --base-dir "FlightData/航司目录"` |
Referenced artifact was not completely inspected
| 5 | 语义分类 | `node scripts/classify-images.js --base-dir "FlightData/航司目录"` |
Referenced artifact was not completely inspected
| 6 | 去重 | `node scripts/dedup-images.js --base-dir "FlightData/航司目录"` |
Referenced artifact was not completely inspected
| 6 | 去重 | `node scripts/dedup-images.js --base-dir "FlightData/航司目录"` |
The README advertises automatic deletion of duplicate images but does not warn users that the operation is destructive or potentially irreversible. In a data-collection workflow, mistaken duplicate detection or user misunderstanding can cause unintended loss of scraped assets and reduce reproducibility of the dataset.
The quick-start sequence instructs users to run the deduplication command directly, without any caution that it may remove files. Because users commonly copy-paste setup steps, this increases the chance of accidental destructive actions before they understand the tool's behavior or verify output paths.
Without declared permissions the skill's intent is opaque and cannot be validated.
The natural-language content of the skill, including its description, execution phases, and usage guidance, is presented in Chinese only. This imposes a language constraint on users without opt-in or explanation, which fits the policy category for forced language/locale behavior.
The manual is written in Chinese and includes a zh-CN example URL, but it does not indicate that Chinese is optional or required for a region-specific purpose. Per the policy, skills should not impose a language or locale without user opt-in or documented justification.
The file forces a specific language/locale in its natural-language instructions and headings, and there is no indication that the user can opt into another language. The stated policy requires flagging language or locale constraints unless a choice or clear justification is provided.
This markdown file documents a script that deletes files permanently based on MD5 duplicate detection, but it does not include a clear user warning about destructive or irreversible effects. Although --dry-run is mentioned, the default example still shows the destructive command without an explicit caution to back up data or review results first.
The manifest describes collecting seat map data, classifying images, and generating airline information for website presentation. This utility performs destructive local cleanup by deleting duplicate images and also creates a separate report file, which are maintenance operations not described in the stated skill behavior.
This code file contains natural-language strings and usage text entirely in Chinese, and later generates Chinese-only markdown content and filenames. The policy requires flagging language or locale constraints when the skill forces a specific language without user opt-in, and no option or justification is provided here.
The manifest says the skill will automatically classify seat maps, seat photos, and onboard facility images for website presentation. In the implementation, images are only saved under images/0-原始数据, and no logic exists to sort them into the category folders described by the skill's purpose.
The markdown generated by create_detail_doc asserts that images are stored in categorized folders such as 1-座椅布局/ and 2-座椅图片/. However, elsewhere the scraper only creates images/0-原始数据 and downloads every image there, so the documentation actively misrepresents the actual behavior.
Natural-language policy issues apply to all file types, including markdown. This README presents the operational documentation only in Chinese and does not indicate that the skill is region-specific or offer an opt-in language choice, which can amount to a forced language constraint.
This markdown file provides commands that scrape site content and save results under FlightData/, and the output tree confirms multiple generated files and image directories. The examples describe how to run the commands but do not warn users that the skill will download remote content and create substantial local filesystem output.
The reference file instructs the agent to run scraping commands and generate or update local files, but it does not warn about external network access, downloading untrusted content, or filesystem modifications. In an agent setting, this can cause unintended outbound requests and writes without explicit user awareness or confirmation, increasing the risk of overbroad automation and unsafe handling of remote data.
This markdown template hard-codes Chinese headings, labels, and notes throughout the file. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale constraint is explicitly documented and justified, which is not present here.
The documentation is entirely in Chinese and does not indicate whether other languages are supported or whether the Chinese-only presentation is intentional for a region-specific audience. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale constraint is clearly justified.
No suspicious patterns detected.