T09 · Insecure Skill Coding Practices
- Location
scripts/china_travel.py:23- Finding
Hardcoded Reusable Proxy Credential
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a travel booking helper, but it sends user travel details through an under-disclosed proxy, embeds a reusable proxy token, and exposes broader travel modes than its hotel-booking description suggests.
Install only if you are comfortable sending hotel and potentially broader travel details to an undisclosed proxy service. Avoid entering sensitive personal data such as passport numbers, payment details, phone numbers, or exact private plans, and treat returned booking links as untrusted until verified.
scripts/china_travel.py:23Hardcoded Reusable Proxy Credential
scripts/china_travel.py:23Undisclosed Transmission of User Travel Data Through an Opaque Proxy
scripts/china_travel.py:192Executable Capabilities Exceed the Published Hotel-Booking Scope
The documentation says the skill is for hotel search and direct booking via Trip.com, but the described behavior includes additional functions such as flights, attractions, itinerary planning, general travel Q&A, multilingual behavior, and use of a proxy API. This mismatch is dangerous because it obscures the actual operational scope and third-party data flows, preventing informed consent, accurate review, and least-privilege enforcement.
The skill metadata says it is for hotel search/booking in China, but the script exposes additional capabilities for flights, attractions, itineraries, and generic travel tips. This scope expansion can bypass user and platform expectations, causing users to disclose travel details for functions they did not explicitly authorize and weakening trust and review controls tied to the declared capability.
The skill invokes a Python script that performs real-time hotel lookups, implying network access, but the manifest does not declare any explicit tool scope or permissions. This creates a transparency and governance gap: reviewers and runtime policy systems cannot easily verify or constrain what external access the skill requires, increasing the risk of unexpected data egress or broader-than-expected external communication.
Mandating --locale=ru forces Russian-language output regardless of the user's language preference. While not a classic code-execution issue, it can mislead users, degrade comprehension of travel or booking details, and increase the chance of mistakes when users expect another language.
Stating that all results are always displayed in Russian without offering a language choice creates a user-control and transparency issue. In a travel-booking context, forcing a language can cause misunderstanding of prices, dates, booking terms, or location details, though the impact is primarily usability and trust rather than direct compromise.
User-provided travel queries, which may contain itinerary dates, destinations, budgets, and preferences, are sent to an external proxy service without any visible disclosure, consent flow, or explanation in the user-facing behavior. The hardcoded remote endpoint and proxy token reinforce that data is leaving the local skill boundary to a third party, creating privacy and compliance risk if users believe processing is local or limited to hotel search.
The cross-feature guidance actively nudges users from hotel search into unrelated functions such as flights, attractions, itineraries, and tips, despite the skill being described as a hotel-focused tool. In context, this increases the practical impact of the scope mismatch by encouraging additional data sharing and use of undeclared features.