T09 · Insecure Skill Coding Practices
- Location
scripts/ctrip_flight.py:24- Finding
TLS Certificate and Hostname Verification Disabled
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This flight-search skill is mostly purpose-aligned, but it uses reverse-engineered anti-bot signing code and disables HTTPS verification, which creates review-worthy privacy, integrity, and compliance risk.
Install only if you are comfortable with a Ctrip-specific, reverse-engineered integration that caches Ctrip cookie material locally and runs an obfuscated signing script. The TLS verification bypass should be fixed before normal use, and the quickjs dependency and signing artifact should be pinned and integrity-verified.
scripts/ctrip_flight.py:24TLS Certificate and Hostname Verification Disabled
SKILL.md:15Unpinned QuickJS Dependency Installation
scripts/ctrip_flight.py:154Automatic Execution of Heavily Obfuscated Bundled JavaScript
The declared purpose is simple flight search, but the skill documentation admits reverse-engineering anti-crawl protections, generating special signatures, and extracting cookies. That behavior materially exceeds normal search functionality and can involve browser fingerprinting, identifier collection, and anti-bot evasion, creating privacy, compliance, and misuse risks not disclosed to the user.
The file contains substantial obfuscated environment-inspection and anti-automation/fingerprinting behavior, including checks over window/document/navigator/screen, plugin enumeration, canvas/WebGL/audio capability inspection, timezone and cookie harvesting, and collection of client identifiers. For a flight-search skill, this exceeds the minimally necessary scope and creates a covert data-collection surface that can track users or fingerprint execution environments without clear necessity or transparency.
The code explicitly disables TLS hostname checking and certificate validation for all outbound HTTPS requests. This makes flight-search traffic vulnerable to man-in-the-middle interception or tampering, allowing an attacker on the network path to alter API responses, inject malicious data, or harvest request metadata and cookies.
The skill declares executable behavior that implies file access, network access, and local script usage, but it does not declare any tool scope or permissions boundary. That omission makes the skill harder to sandbox, review, and govern, increasing the chance of unintended file or network operations beyond what users expect from a flight-search skill.
The manifest says the skill should be used for broad requests like "find the cheapest flights," "flights," and even "any mention of Chinese city pairs with travel dates." Those conditions overlap with common travel conversation and do not clearly distinguish when this specific skill should or should not activate.
The documentation explicitly says the skill reverse-engineers and bypasses anti-crawl protections, yet this is not surfaced as a user-facing warning in the main description or prerequisites. Concealing evasion behavior undermines informed consent, masks legal/compliance risk, and makes the skill more dangerous in an agent environment because users and operators may not realize it is performing anti-bot bypass logic.
The manifest describes a domestic flight search skill, but the shipped code is heavily obfuscated and primarily performs request-signing plus telemetry/environment collection rather than visible flight-query logic. This mismatch is dangerous because it hides non-obvious behavior from reviewers and users, increasing the chance of undisclosed tracking, policy bypass, or supply-chain abuse inside a seemingly benign travel skill.
The module docstring and all user-facing CLI/help text are written only in Chinese, indicating a fixed language/locale experience rather than offering a user choice. Under the policy, locale or language should not be forced unless the constraint is explicitly documented and justified as region-specific.
The trigger and usage examples rely heavily on Chinese phrases and Chinese city/province names, but the skill does not clearly state that it is intentionally Chinese-locale-only or offer any user language/locale choice. That can create a locale policy concern because the language expectation is implicit rather than clearly documented and justified.