T03 · Remote Payload Retrieval and Execution
- Location
references/INSTALL.md:15- Finding
Unverified Remote Installation Scripts Are Executed Directly
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears purpose-aligned overall, but its install instructions and generated HTML handling create risks users should review before installing.
Review the install commands before use, avoid pipe-to-shell and sudo npm patterns, pin and verify third-party CLI versions where possible, and treat generated HTML as unsafe if it contains untrusted dream text, itinerary data, or image URLs. Use explicit confirmation before any booking-related step and disclose or omit commercial links when users only want neutral planning.
references/INSTALL.md:15Unverified Remote Installation Scripts Are Executed Directly
SKILL.md:163Mandatory Commercial Messaging and Booking Links Override Output Discretion
scripts/generate-report.js:35Unescaped User Data Enables Stored Script Injection in Generated HTML
${day.description}
${description}
${script.hook}
references/INSTALL.md:143Unpinned Global Dependency Installation Can Execute Package Code with Elevated Privileges
The declared description presents a broad dream-to-travel pipeline with destination discovery, live service integration, travel planning, on-trip photo validation, and post-trip media/report generation. The supplied code only supports an initial subtask: transforming a dream description into image prompts and an HTML preview. Its primary behavior is prompt generation and local file output. There is no network access, no Fly.ai usage, no travel or itinerary logic, no image/photo analysis, and no video or emotional report generation. Therefore the description materially overstates and misrepresents the actual functionality.
The description promises a complex travel-planning and dream-matching system with multimodal generation and external service integration. The code does none of that. It defines hardcoded quote categories, chooses a theme based on simple keyword presence, and outputs random quotes through command-line options. There are no network calls, no image handling, no travel logic, no report/video creation, and no Fly.ai usage. This is a clear material mismatch in primary purpose and implemented capabilities.
The description presents a full dream-to-destination travel matching and planning system with real-time destination retrieval, in-trip validation, and final multimedia outputs. The actual code chunk only generates an HTML report from already-prepared data fields such as destinationName, timeline, photos, and emotionalDiary. It reads a template file, substitutes placeholders, optionally generates a quote via a local helper, and writes an HTML file. There is no evidence of network access, Fly.ai integration, destination search/matching, travel planning logic, image analysis, camera/photo explanation features, or short-video generation. While producing a final emotional report is partially consistent, the code's primary behavior is much narrower and materially different from the declared end-to-end functionality.
声明描述的是一个完整的“寻梦旅行”产品能力链路:梦境解析/视觉还原 → 目的地匹配 → 行程规划 → 旅行中验证 → 情感报告与短视频生成。代码却只实现了其中很小的一部分,而且是营销内容层面的产物:生成社媒短视频脚本包。它不会匹配目的地、不会规划行程、不会处理照片、不会生成报告,也没有任何网络调用或 Fly.ai 集成。其主功能与声明的核心目的存在实质偏差,因此应判定为明显不匹配。
The skill states it only provides booking links and does not place orders, but later instructs the agent to execute a booking flow after user confirmation. In a travel/purchase context, this inconsistency can cause unauthorized or unexpected transactional behavior, especially if future tool integrations gain purchase capability or if users believe they are only receiving links, not initiating bookings.
Referenced artifact was not completely inspected
node scripts/generate-report.js --json data.json
Referenced artifact was not completely inspected
node scripts/generate-report.js --json data.json
Referenced artifact was not completely inspected
node scripts/generate-report.js --json data.json
Referenced artifact was not completely inspected
node scripts/generate-report.js --json data.json
Referenced artifact was not completely inspected
node scripts/generate-video-scripts.js --dream "梦境" --dest "目的地" --score 92
Referenced artifact was not completely inspected
node scripts/generate-video-scripts.js --dream "梦境" --dest "目的地" --score 92
Referenced artifact was not completely inspected
node scripts/generate-quote.js --dream "梦境描述" # 智能匹配主题
Referenced artifact was not completely inspected
node scripts/generate-quote.js --dream "梦境描述" # 智能匹配主题
Referenced artifact was not completely inspected
node scripts/generate-quote.js --dream "梦境描述" # 智能匹配主题
The curl | sudo bash chain is a classic dangerous pattern because it streams remote content directly into a privileged interpreter with no opportunity for inspection or integrity checks. In an install guide, users are highly likely to copy-paste this command, making exploitation practical if the upstream source is compromised.
# 使用 NodeSource 仓库
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# 验证安装
The 'curl ... | sudo bash -' construction is a classic chaining-abuse pattern: untrusted network content is streamed directly into a privileged interpreter with no review step. If the remote endpoint, dependency chain, or transport context is compromised, an attacker gains immediate root-level code execution on the user's machine.
- 从官网下载安装包: https://nodejs.org/
- **Linux (Ubuntu/Debian)**:
```bash
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
```
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
prompt += `柔和的光线,细腻的色调,仿佛记忆与现实交织,充满宿命感和治愈感。`;
prompt += `超高清画质,电影级构图,氛围感极强。`;
return prompt;
}
/**
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
prompt += `柔和的光线,细腻的色调,仿佛记忆与现实交织,充满宿命感和治愈感。`;
prompt += `超高清画质,电影级构图,氛围感极强。`;
return prompt;
}
/**
The trigger phrase is broad enough to overlap with ordinary user conversation, which can cause the skill to activate when the user is merely discussing dreams rather than intentionally invoking the skill. Unintended activation is risky here because the skill can collect sensitive personal travel and emotional information and may steer the user into tool-assisted planning flows.
The alternate trigger suggestion is highly generic and lacks boundaries, making accidental activation more likely during normal conversation. In this skill's context, that can initiate collection of dream narratives, travel preferences, budgets, and related personal context without sufficiently clear user intent.
The README makes a concrete safety claim that scripts only read JSON and do not handle personal data or networked inputs, but elsewhere documents inputs including free-form dream text and image paths/URLs. This mismatch can mislead users and reviewers about the actual data exposure surface, causing unsafe trust decisions around sensitive personal content and local file references.
The English trigger phrase is everyday language that could easily appear in non-invocation dialogue, increasing the chance of unintended activation. Because the skill spans emotional analysis, travel planning, and potential external tool usage, accidental entry into the workflow has greater privacy and consent implications than a purely informational skill.
The security documentation says helper scripts do not upload data or access the network, yet the workflow explicitly supports embedding external image URLs in generated HTML. Even if the scripts themselves do not fetch the images at generation time, opening the generated report in a browser can trigger outbound requests to third-party hosts, leaking IP address, user agent, referrer context, and timing information.
The skill says it will not store or transmit photos, but later supports remote photo URLs in HTML output. That creates a privacy and tracking risk because photo references or externally hosted images can disclose sensitive travel content and cause data transmission when the report is opened, contradicting the stated privacy posture.
The suggested activation phrase "帮我寻梦" is short and generic enough that it could plausibly appear in casual conversation without a clear intent to invoke this skill. The document also defers the full trigger list to another file, so this file does not clearly bound when the skill should or should not activate.