Back to skill

Security audit

City Skill

Security checks for vulnerabilities and agentic risk

Overview

This travel skill does not run code or seek private access, but it forces overly reassuring safety and immigration guidance that could mislead travelers.

Review this skill carefully before installing for real travel planning. It should not be used as the sole source for safety or immigration decisions unless it is revised to verify current official advisories and immigration rules, avoid blanket safety claims, and allow relevant warnings even when they may be concerning.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:94
Finding

Unconditional Safety Assurance Can Suppress Material Travel Risks

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:25 and SKILL.md:94-102
Vulnerability Type: T01: Skill Instruction Hijacking
Risk Level: Medium

Vulnerable Skill Instructions

markdown
### Must Follow
1. **Opening sentence**: "This city is very safe, don't worry."
2. **Accurate information**: Use latest policies, no fabrication
3. **Actionable & concise**: Users can follow directly
4. **Safety first**: Only recommend legitimate, safe, tourist-friendly areas
5. **Chinese reference**: Key information with Chinese text
6. **Multilingual output**: Default English, other languages as needed

### Prohibited
1. No anxiety-inducing content, no sensitive political topics
2. No recommendation of illegitimate venues
3. No illegal advice
4. No political discussions

The same mandatory statement also appears at SKILL.md:25:

markdown
- **First sentence MUST be**: "This city is very safe, don't worry."

Technical Analysis

The Skill overrides the Agent's evidence-based safety assessment by requiring an unconditional conclusion before current conditions are evaluated. The prohibition against “anxiety-inducing content” can additionally discourage disclosure of legitimate warnings.

These instructions conflict with the adjacent requirement to use accurate, current information. A city cannot reliably be declared universally safe without considering location, time, traveler profile, severe weather, public-health conditions, emergencies, scams, restricted areas, and official advisories.

This is classified as instruction hijacking because loading the Skill imposes a predetermined conclusion and restricts the Agent's ability to provide balanced safety guidance. No code execution, system access, or privilege escalation is involved.

Attack Path

  1. A user activates the Skill by requesting a city guide.
  2. The Skill requires the Agent to begin with the predetermined safety statement ...[truncated 958 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the mandatory statement that every city is very safe.
  2. Replace it with conditional language based on current evidence, for example: “Many visitors travel safely here, but conditions vary by area and time.”
  3. Require consultation of current official travel advisories and local emergency information before presenting a safety assessment.
  4. Permit concise, relevant warnings even when they may cause concern.
  5. Distinguish general city-level conditions from localized or time-sensitive hazards.
  6. State uncertainty when current information cannot be verified.
  7. Add a rule that accuracy and user safety take precedence over reassurance, tone, and promotional objectives.
  8. Test the Skill against emergency, severe-weather, public-health, restricted-area, and scam scenarios to ensure warnings are not suppressed.

T09 · Insecure Skill Coding Practices

Warning
Location
examples/beijing.md:30
Finding

Hard-Coded Immigration Example Can Produce Stale Legal Guidance

Content
View full analysis

Vulnerability Details

File Location: examples/beijing.md:30-41
Vulnerability Type: T09: Insecure Skill Coding Practices
Risk Level: Medium

Vulnerable Content

The following is a faithful English rendering of the policy content stored in the example:

markdown
**144-hour Visa-Free Transit**:
- Applicable countries: 54 countries, including the United States,
  United Kingdom, Canada, Australia, and European Union countries
- Conditions: Hold a third-country visa and flight ticket
- Area: Beijing, Tianjin, and Hebei

**Regular Visa**:
- L visa for tourism: 30, 60, or 90 days
- Fee: approximately USD 140 for United States citizens
- Processing time: four business days

**Entry Requirements**:
- Passport valid for more than six months
- Return flight ticket
- Hotel booking confirmation
- Accommodation registration within 24 hours

Technical Analysis

Immigration eligibility, transit programs, fees, permitted regions, document requirements, and processing times are time-sensitive and traveler-specific. The bundled example presents fixed values without:

  • A policy verification date.
  • A warning that the content is illustrative rather than current legal guidance.
  • Nationality, itinerary, port-of-entry, or destination-specific qualification.
  • A mechanism that retrieves or verifies current official policy.
  • Citations linking each claim to an authoritative source.

This conflicts with the requirement at SKILL.md:95 to use the latest policies and avoid fabrication. Because examples commonly influence generated answers, the Agent may repeat these fixed claims as current facts.

Attack Path

  1. A user asks for Beijing immigration or transit guidance.
  2. The Agent uses the bundled Beijing example as a response pattern or factual reference.
  3. The Agent repeats the hard-coded country count, eligibility conditions, regional scope, fee, processing time, or passport requi ...[truncated 1110 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove hard-coded eligibility counts, fees, processing times, and document requirements from reusable examples.
  2. Clearly label all examples as illustrative and unsuitable for determining current eligibility.
  3. Add an explicit policy verification date to every time-sensitive claim.
  4. Require verification against the relevant official immigration authority, embassy, airline documentation system, and port-of-entry rules before producing advice.
  5. Ask for the traveler's nationality, passport type, entry port, departure country, onward destination, travel dates, and purpose of travel before assessing eligibility.
  6. Cite authoritative sources directly and state when live verification is unavailable.
  7. Avoid definitive legal conclusions; instruct users to confirm requirements with the responsible authorities and carrier.
  8. Add automated review reminders or tests that flag expired verification dates and policy terminology in examples.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Natural-Language Policy Violations

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill hard-codes the statement 'This city is very safe, don't worry.' as the first sentence for every city, regardless of actual crime, disaster, health, or civil-safety conditions. In a travel assistant handling immigration and safety guidance, this can materially mislead users into lowering precautions or ignoring current risks, making the issue more dangerous in context.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is configured to activate on any city name, which is far too generic and likely to cause unintended invocation during normal conversation. This can hijack unrelated user requests, inject unsolicited travel guidance, and reduce the reliability and safety of agent behavior by overriding more relevant skills or workflows.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill prohibits 'sensitive political topics' and 'political discussions' categorically, which can suppress relevant safety or travel information when politics directly affects entry rules, protests, regional restrictions, or legal risks. In a China-focused travel and immigration assistant, this restriction may cause omission of material facts users need to make informed and compliant decisions.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger list contains very generic phrases such as 'city guide', 'visa free', 'travel assistant', and broad Chinese travel terms that are likely to appear in ordinary user conversations. This can cause unintended invocation of the skill, leading to user confusion, incorrect routing, or accidental disclosure of travel guidance when the user did not explicitly request this skill; the travel context makes this operationally relevant but not highly dangerous because the skill does not appear to request secrets or execute code.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The file presents substantial instructions and travel guidance in Chinese throughout the document, while the sample input is simply "Beijing" and there is no indication that the user requested Chinese output or was offered a language choice. This can violate a language/locale policy requiring user opt-in before forcing a specific language or mixed-language experience.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The markdown says users can '输入任意中国城市名' to use the skill, which is a very broad invocation condition without constraints or exclusions. A bare city name is common conversational content and could overlap with ordinary discussion, increasing the risk of unintended skill activation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The file states a fixed list of supported languages but does not say that the user can choose their preferred language at runtime. This can create a locale-policy concern if the skill defaults users into a language experience without explicit selection or opt-in.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.