Back to skill

Security audit

多目的地航线组合比价助手

Security checks for vulnerabilities and agentic risk

Overview

This flight-planning skill matches its purpose, but it repeatedly tells the agent to disable HTTPS certificate checks for flight searches.

Review before installing. Use only if you are comfortable with an external FlyAI command-line tool handling your travel searches and with the skill saving preferences and writing itinerary HTML files. Prefer a version that removes NODE_TLS_REJECT_UNAUTHORIZED=0 and keeps normal HTTPS certificate validation enabled.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (23)

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The skill explicitly instructs use of `NODE_TLS_REJECT_UNAUTHORIZED=0`, which disables TLS certificate validation for flight-search requests. That makes any network response potentially vulnerable to man-in-the-middle interception or tampering, allowing altered prices, routes, links, or malicious content to be returned under the guise of a trusted service.

Context-Inappropriate Capability

Medium
Confidence
99% confidence
Finding
The documentation explicitly instructs users to disable TLS certificate verification for all FlyAI commands via NODE_TLS_REJECT_UNAUTHORIZED=0. This defeats HTTPS trust checks and exposes flight-search queries and returned booking links to man-in-the-middle interception or tampering, which is unjustified for a travel-search skill and made worse by repeating it as a universal prerequisite.

Intent-Code Divergence

Medium
Confidence
99% confidence
Finding
Presenting TLS bypass as a required fix normalizes insecure transport behavior and encourages operators to run the skill in a permanently weakened security posture. In this context, an attacker on the network path could spoof API responses, alter prices, destinations, or booking URLs, and potentially redirect users to malicious content.

Context-Inappropriate Capability

Medium
Confidence
99% confidence
Finding
The guide explicitly instructs users to set NODE_TLS_REJECT_UNAUTHORIZED=0 for all FlyAI commands, which disables TLS certificate validation and permits man-in-the-middle interception or spoofing of supposedly secure connections. In a travel-booking/search workflow this can expose itinerary queries, session data, or manipulated search results, and the capability is unrelated to the business need of flight comparison itself.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
The skill directs creation of an HTML file in the user's working directory as part of normal operation, but frames it as automatic behavior rather than an explicit opt-in side effect. Unexpected file writes can surprise users, clutter or overwrite local workspace content, and create a vehicle for unsafe rendered content if any user- or network-sourced data is embedded into the HTML without sanitization.

Missing User Warnings

Medium
Confidence
80% confidence
Finding
The skill is designed to read and update persistent memory containing travel preferences and user profile details without any explicit privacy notice or consent flow in the skill description. Silent collection and reuse of personal preference data can violate user expectations and creates privacy risk if sensitive travel habits or locations are stored longer than necessary.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The description includes broad trigger phrases such as “帮我搜机票” and “机票怎么买最便宜”, which are common natural-language requests and can cause the skill to activate unintentionally in ordinary travel-related conversations. Overly broad activation increases the chance of unexpected data collection, unintended tool use, or workflow hijacking when a user did not explicitly intend to invoke this specific skill.

Missing User Warnings

High
Confidence
99% confidence
Finding
The document normalizes insecure transport by telling operators to disable certificate verification without any warning or compensating control. That makes active network attacks materially easier and can lead to tampered flight data, credential exposure, or silent redirection to malicious endpoints.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
# FlyAI 命令参考

> ⚠️ **重要**:所有命令执行前需加 `NODE_TLS_REJECT_UNAUTHORIZED=0` 解决 SSL 证书验证问题

## 目录
Confidence
100% confidence
Finding
Using NODE_TLS_REJECT_UNAUTHORIZED=0 globally disables TLS certificate verification in Node.js for the invoked process, making encrypted connections vulnerable to interception and server impersonation. Because this appears as a default prerequisite at the top of the command reference, it increases the chance that all downstream searches operate insecurely.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
**命令格式**:
```bash
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "[出发城市]" \
  --destination "[目的地城市]" \
  --dep-date [出发日期] \
Confidence
99% confidence
Finding
The canonical command format embeds TLS verification bypass directly into the primary search-flight invocation. This makes insecure transport the documented normal path, enabling tampering with search results or booking metadata whenever the command is run on an untrusted or compromised network.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
```bash
# 搜索去巴塞罗那的最便宜航班
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "杭州" --destination "巴塞罗那" \
  --dep-date-start 2026-10-01 --dep-date-end 2026-10-02 \
  --sort-type 3
Confidence
98% confidence
Finding
This example teaches users to disable TLS verification for a Barcelona flight search. Although it is only an example, repeated insecure examples reinforce dangerous operator behavior and can lead to exposure of queries and manipulated response data.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
--sort-type 3

# 搜索去马德里的最便宜航班
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "杭州" --destination "马德里" \
  --dep-date-start 2026-10-01 --dep-date-end 2026-10-02 \
  --sort-type 3
Confidence
98% confidence
Finding
This Madrid example repeats the unsafe TLS bypass pattern, again normalizing certificate validation disablement. Even example-level documentation can cause real-world insecure execution because users often copy-paste commands verbatim.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
--sort-type 3

# 搜索去里斯本的最便宜航班
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "杭州" --destination "里斯本" \
  --dep-date-start 2026-10-01 --dep-date-end 2026-10-02 \
  --sort-type 3
Confidence
98% confidence
Finding
This Lisbon example includes the same TLS-verification disablement, extending the insecure default across routine use cases. The broader the repetition, the more likely users are to assume the bypass is harmless or required.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
```bash
# 搜索从巴塞罗那回杭州的最便宜航班
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "巴塞罗那" --destination "杭州" \
  --dep-date-start 2026-10-06 --dep-date-end 2026-10-07 \
  --sort-type 3
Confidence
98% confidence
Finding
This return-flight example continues to require disabled TLS validation, so both outbound and return searches may be performed without authenticating the remote service. That increases exposure to manipulated itineraries, malicious links, or falsified pricing data.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
--sort-type 3

# 搜索从马德里回杭州
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "马德里" --destination "杭州" \
  --dep-date-start 2026-10-06 --dep-date-end 2026-10-07 \
  --sort-type 3
Confidence
98% confidence
Finding
This example for flights from Madrid to Hangzhou includes the same unsafe default and contributes to systemic insecure usage. In a travel-booking context, tampered responses could mislead users into poor booking decisions or phishing destinations.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
--sort-type 3

# 搜索从里斯本回杭州
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "里斯本" --destination "杭州" \
  --dep-date-start 2026-10-06 --dep-date-end 2026-10-07 \
  --sort-type 3
Confidence
98% confidence
Finding
This Lisbon return example again embeds TLS bypass into a routine workflow. Repetition throughout the document means the skill context makes the issue more dangerous, because insecure transport is effectively institutionalized rather than isolated.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
```bash
# 仅直飞
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "杭州" --destination "巴塞罗那" \
  --dep-date 2026-10-01 \
  --journey-type 1 --sort-type 3
Confidence
98% confidence
Finding
The direct-flight-only example still disables TLS verification, showing that even filtered or constrained searches are expected to run insecurely. The problem is not the flight filter but the transport-layer trust being removed from normal usage.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
--journey-type 1 --sort-type 3

# 指定舱位
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "杭州" --destination "巴塞罗那" \
  --dep-date 2026-10-01 \
  --seat-class-name "经济舱" --sort-type 3
Confidence
98% confidence
Finding
This seat-class example also uses NODE_TLS_REJECT_UNAUTHORIZED=0, demonstrating that the insecure setting is pervasive across all examples. Copy-paste reuse makes this a practical security problem rather than a theoretical documentation issue.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
--seat-class-name "经济舱" --sort-type 3

# 限制最高价格
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "杭州" --destination "巴塞罗那" \
  --dep-date 2026-10-01 \
  --max-price 5000 --sort-type 3
Confidence
98% confidence
Finding
The max-price example repeats the same TLS bypass, so even price-sensitive searches may rely on unauthenticated responses. This is especially concerning in a price-comparison skill because response tampering directly undermines the core purpose of accurate cost optimization.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
--max-price 5000 --sort-type 3

# 按飞行时长排序(省时模式)
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai search-flight \
  --origin "杭州" --destination "巴塞罗那" \
  --dep-date 2026-10-01 \
  --sort-type 4
Confidence
98% confidence
Finding
This duration-sorted example continues the insecure transport pattern. Because the skill outputs top recommendations and booking links, manipulated results could influence the final ranked options shown to users.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
**命令格式**:
```bash
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai keyword-search --query "[搜索词]"
```

**示例**:
Confidence
99% confidence
Finding
The keyword-search command format includes the same TLS verification bypass, expanding the insecure default beyond the core structured search command. Since keyword search may touch broader travel-product queries, it can widen exposure to spoofed results and malicious redirection.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
**示例**:
```bash
# 搜索替代机场
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai keyword-search --query "杭州飞巴塞罗那 机票"

# 搜索区域航线
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai keyword-search --query "杭州到南欧 国庆机票"
Confidence
98% confidence
Finding
This keyword-search example for alternative airports includes TLS bypass and therefore teaches insecure execution for exploratory searches as well. Attackers could tamper with returned alternatives or links, degrading trust in the assistant's recommendations.

Unsafe Defaults

Medium
Category
Tool Misuse
Content
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai keyword-search --query "杭州飞巴塞罗那 机票"

# 搜索区域航线
NODE_TLS_REJECT_UNAUTHORIZED=0 flyai keyword-search --query "杭州到南欧 国庆机票"
```

---
Confidence
98% confidence
Finding
This regional-route keyword-search example repeats the same insecure pattern. The issue is amplified by the skill context: users are expected to compare options and act on returned links, so manipulated network responses can directly influence travel choices.

Static analysis

No suspicious patterns detected.