Back to skill

Security audit

liuduoduo

Security checks for vulnerabilities and agentic risk

Overview

This is a read-only Liuyang local listings skill, with some install and activation caveats but no evidence of hidden, destructive, or credential-stealing behavior.

Install only if you are comfortable with local-life queries being sent to the configured MCP endpoint. Treat phone numbers, prices, and listings as demo or publisher-provided data unless independently verified, and prefer pinned backend dependencies if you self-host it.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • 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 (1)

T08 · Insecure Dependencies

Warning
Location
backend/requirements.txt:1
Finding
Unbounded Third-Party Dependency Versions## Vulnerability Details **File Location**: `backend/requirements.txt:1-2` **Vulnerability Type**: Unbounded dependency constraints **Risk Level**: Medium ```text fastapi>=0.100.0 uvicorn>=0.20.0 ``` ### Technical Analysis Both dependencies use minimum-version constraints without upper bounds, exact pins, or package hashes. Consequently, package resolution can install any future FastAPI or Uvicorn release rather than a specifically reviewed artifact. This makes builds non-reproducible and unnecessarily expands the software supply-chain trust boundary. This finding does not establish that the currently available versions are malicious. The risk is that a future compromised, malicious, or incompatible release would satisfy these constraints and could automatically enter a fresh deployment or dependency upgrade. ### Attack Path 1. An attacker compromises an upstream package maintainer account, distribution process, or otherwise causes a malicious future FastAPI or Uvicorn release to be published. 2. The malicious release retains a version number satisfying the relevant `>=` constraint. 3. A developer, CI job, container build, or production deployment installs dependencies from `backend/requirements.txt`. 4. The resolver selects the malicious release because no exact version, lock file, or expected package hash restricts it. 5. Malicious package behavior executes during installation, import, or application startup under the privileges of the build or backend process. ### Impact Assessment Successful exploitation could execute arbitrary code with the privileges of the account performing installation or running the backend. Depending on the deployment environment, this could expose application data and environment variables, alter service behavior, access files available to the service account, or enable lateral movement using credentials accessible to that account. The scope is bounded by the privileges and netw ...[truncated 150 chars]
Remediation
## Remediation Suggestions 1. Replace minimum-only constraints with exact versions that have been reviewed and tested, for example: ```text fastapi==<reviewed-version> uvicorn==<reviewed-version> ``` 2. Generate a complete lock file that pins all transitive dependencies, not only the two direct dependencies. 3. Record and enforce package hashes, such as through a hash-locked requirements file and `pip install --require-hashes`. 4. Build only from trusted package indexes over authenticated TLS, and explicitly configure approved indexes in CI rather than relying on ambient configuration. 5. Run dependency vulnerability and provenance checks in CI. 6. Update dependencies through a controlled process that includes review, automated tests, and staged deployment. 7. Install and run the application as an unprivileged service account in an isolated environment to reduce the impact of a supply-chain compromise.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (17)

Possible Typosquatting: 'uvicorn' resembles popular package 'gunicorn'

High
Category
Supply Chain
Confidence
70% confidence
Finding
Package name closely resembles a popular package, suggesting possible typosquatting. Attackers publish malicious packages with similar names to trick developers into installing them.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The natural-language instructions, examples, and interaction guidance are written to operate in Chinese, but the file does not state that this language constraint is optional or region-justified as a policy exception. Under the language/locale policy, forcing a specific language without user opt-in can be a natural-language policy violation.

Vague Triggers

Medium
Confidence
97% confidence
Finding
The skill instructs activation on any mention of "liuduoduo," which is an overly broad trigger that can cause the agent to invoke this skill in unrelated contexts. That can lead to unintended tool use, unnecessary disclosure of business contact data, and confused or unsafe task routing when the user did not actually request local-life assistance.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
The module docstring and user-facing descriptions are entirely in Chinese and present the skill as a local-life assistant without stating that Chinese is required or that users may choose another language. Under the policy, forcing a specific language without opt-in is a natural-language locale violation unless the constraint is explicitly documented and justified.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The script sends JSON-RPC requests to an external HTTPS endpoint and includes method names and parameters that may contain user-provided query data. While the script prints test progress, it does not clearly disclose that request data is being transmitted to a remote server or document any privacy implications.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The brand prompt says to activate the skill immediately whenever users mention 'liuduoduo', with no scope checks or user-intent confirmation. That can cause unnecessary tool invocation and context hijacking, where casual mention of the name routes the conversation into this skill even when the user is not requesting local-life lookups.

Missing User Warnings

Low
Confidence
81% confidence
Finding
The markdown description states that the AI will automatically call tools and return merchant name, phone, price, and address, but it provides no user-facing warning about this data-retrieval behavior. For a markdown skill description, data-affecting or privacy-relevant behavior should be disclosed clearly so users understand what information will be fetched and surfaced.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
This code file uses natural-language descriptions exclusively in Chinese for the skill's data and user-facing messages, with no indication that users can choose another language or locale. Under the language/locale policy rule, forcing a specific language without user opt-in is a policy concern.

Natural-Language Policy Violations

Low
Confidence
90% confidence
Finding
The returned message is a natural-language string that will be shown to users, but it is hardcoded in Chinese and does not offer any locale selection. This may violate language/locale policy if the skill is invoked in broader contexts without explicit user opt-in to Chinese.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
These user-facing strings are fixed to Chinese and provide no mechanism for respecting user language preference. That creates a locale policy issue unless the skill is explicitly limited to a Chinese-only regional audience.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The code returns a Chinese-only user-facing message when no hotel matches are found, without offering any language preference handling. This can be a policy violation if the skill is not clearly restricted to a Chinese-language context.

Unpinned Dependencies

Low
Category
Supply Chain
Content
fastapi>=0.100.0
uvicorn>=0.20.0
Confidence
93% confidence
Finding
The dependency is specified with a lower-bound range rather than an exact version, which makes builds non-reproducible and can unintentionally pull in newly released versions with security or compatibility regressions. In a production backend, this weakens supply-chain control and makes it harder to verify whether deployed versions are patched or vulnerable.

Unverifiable Dependency: fastapi has 3 known advisory(ies) (CVE-2021-32677 (Cross-Site Request Forgery (CSRF) in FastAPI); CVE-2021-32677 (FastAPI is a web framework for building APIs with Python 3.6+ based on standard ); CVE-2024-24762 (FastAPI is a web framework for building APIs with Python 3.8+ based on standard )), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
88% confidence
Finding
FastAPI has known advisories, but because the manifest does not pin a specific version, it is impossible to determine whether the installed version is affected. That uncertainty is itself risky in backend services because vulnerable versions could be installed silently depending on resolution time.

Unpinned Dependencies

Low
Category
Supply Chain
Content
fastapi>=0.100.0
uvicorn>=0.20.0
Confidence
93% confidence
Finding
The uvicorn dependency is also unpinned, so installations may resolve to different versions over time depending on when and where the environment is built. This increases supply-chain risk, complicates incident response, and can expose deployments to vulnerable releases without explicit review.

Unverifiable Dependency: uvicorn has 4 known advisory(ies) (CVE-2020-7694 (Log injection in uvicorn); CVE-2020-7695 (HTTP response splitting in uvicorn); CVE-2020-7694 (This affects all versions of package uvicorn. The request logger provided by the) +1 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
89% confidence
Finding
Uvicorn has known advisories, and the unpinned requirement prevents verification that the deployed version includes the relevant fixes. This leaves the service exposed to avoidable uncertainty around known issues in a network-facing component.

Natural-Language Policy Violations

Low
Confidence
95% confidence
Finding
Comments and all user-facing print strings are written in Chinese, which effectively forces a specific language for users interacting with this script. The file does not provide an opt-in language choice or explain that the skill is intentionally limited to a Chinese-speaking or region-specific context.

Natural-Language Policy Violations

Low
Confidence
63% confidence
Finding
The natural-language instruction fixes the assistant behavior and response style in English while the tool descriptions and metadata are largely Chinese, but it does not explicitly offer users a language choice. This can create a locale/language policy concern if the skill defaults to one language presentation without user opt-in.

Static analysis

No suspicious patterns detected.