Back to skill

Security audit

Lingua Universale Protocol Verification

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent local MCP protocol-verification tool, with the main caution being unpinned package and dependency installation.

Install only from a trusted package source, prefer pinning an exact reviewed version, and consider running the MCP server in a least-privilege environment. The inspected skill itself is scoped to local protocol verification.

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
pyproject.toml:18
Finding
Unbounded Third-Party Dependencies and Unverified Package Execution<![CDATA[ ## Vulnerability Details **File Location**: `pyproject.toml:18-21` **Related Locations**: `README.md:18-23`, `SKILL.md:139-144` **Vulnerability Type**: Supply-chain exposure through open-ended dependency resolution **Risk Level**: Medium ### Complete Code Snippet ```toml dependencies = [ "mcp>=1.0", "cervellaswarm-lingua-universale>=0.3.3", ] ``` The documented installation instructions execute packages resolved from an external package registry: ```bash # Run as MCP server (uvx, no install needed) uvx openclaw-skill-lingua-universale # Or install and run pip install openclaw-skill-lingua-universale lu-mcp ``` ```bash # As a Claude Code MCP server uvx openclaw-skill-lingua-universale # Or install directly pip install openclaw-skill-lingua-universale lu-mcp # starts stdio MCP server ``` ### Technical Analysis Both runtime dependencies are specified with minimum versions and no upper bounds. The audited project also contains no dependency lockfile or package hashes. Consequently, `pip` or `uvx` may install future versions that were not included in this audit. Python modules can execute code during import, and this server imports both `mcp.server.fastmcp` and `cervellaswarm_lingua_universale` during normal operation. A compromised or malicious future release satisfying these broad version constraints could therefore execute code under the identity of the user running the MCP server. The reviewed source does not itself download or execute a remote payload at runtime, and no currently malicious dependency was established. The issue is the lack of reproducible and integrity-verified dependency resolution, which increases supply-chain risk. ### Attack Path 1. An attacker compromises the publishing account or release infrastructure of an accepted dependency, or otherwise causes a malicious version to be served by the configured package index. 2. The malicious release uses a version satisfying `mcp>=1.0` or `cervellaswarm-lingua-univers ...[truncated 1125 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin reviewed runtime dependencies to exact versions rather than open-ended minimum versions, for example: ```toml dependencies = [ "mcp==<reviewed-version>", "cervellaswarm-lingua-universale==<reviewed-version>", ] ``` 2. Generate and publish a lockfile containing all transitive dependencies so deployments resolve a reproducible dependency graph. 3. Use hash verification for deployment artifacts, such as a requirements file generated with hashes and installed using: ```bash pip install --require-hashes -r requirements.lock ``` 4. Configure installation workflows to use an explicitly trusted package index and prevent unintended fallback to untrusted indexes. 5. Add automated dependency scanning, provenance verification, and release review before updating pinned versions. 6. Consider publishing signed artifacts and documenting signature or checksum verification for users running the package through `uvx`. 7. Run the MCP server in a least-privilege environment with restricted filesystem, credential, and network access to limit the impact of a future dependency compromise. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The README instructs users to run the MCP server via `uvx openclaw-skill-lingua-universale` without pinning a specific package version. This creates a supply-chain risk: future releases or a compromised package version could be fetched and executed implicitly, which is especially relevant for an MCP server that will run locally and interact with agent workflows.

Rp1

Medium
Category
MCP Rug Pull
Confidence
65% confidence
Finding
uvx/uv tool run commands without ==version create a rug-pull risk.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The installation instruction `uvx openclaw-skill-lingua-universale` references and executes a package without pinning an exact version. If the upstream package is updated maliciously, compromised, or unexpectedly changed, users may install and run unreviewed code, which is especially relevant because this skill launches an MCP server that can integrate into agent workflows.

Rp1

Medium
Category
MCP Rug Pull
Confidence
65% confidence
Finding
uvx/uv tool run commands without ==version create a rug-pull risk.

Intent-Code Divergence

Low
Confidence
91% confidence
Finding
The docstring says actions should use LU action names like "asks" and "returns" (L219-L220), but the example immediately below uses singular forms "ask" and "return". The code lowercases the provided action and looks it up in the evaluator's action map (L273-L284), so this example contradicts the stated interface and may cause callers to send the wrong message format.

Unverifiable Dependency: mcp has 12 known advisory(ies) (CVE-2025-53366 (MCP Python SDK vulnerability in the FastMCP Server causes validation error, lead); CVE-2025-66416 (Model Context Protocol (MCP) Python SDK does not enable DNS rebinding protection); CVE-2026-52870 (MCP Python SDK: Experimental task handlers allow any client to access and cancel) +9 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
93% confidence
Finding
The dependency on `mcp` is specified as `>=1.0` rather than being pinned or constrained to a known-safe range, so builds may resolve to versions with known advisories. In a security-sensitive skill that verifies agent-to-agent communication, relying on an unbounded protocol SDK increases the chance of pulling in a vulnerable release that could undermine transport, validation, or access-control guarantees.

Static analysis

No suspicious patterns detected.