Back to skill

Security audit

Lark / Feishu Skill via OpenAPI MCP servers (300+ tools)

Security checks for vulnerabilities and agentic risk

Overview

This skill is a real Lark MCP integration, but it asks agents to use broad enterprise access while storing token-bearing URLs in `.env` and running an unpinned npm tool.

Install only if you are comfortable giving the agent access to the Lark MCP services represented by your URLs. Use narrowly scoped MCP URLs, avoid committing `.env`, prefer a pinned or preinstalled `mcporter`, and confirm recipients and content before any send, edit, file, mail, document, calendar, or task action.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:42
Finding

Automatic Execution of an Unpinned npm Dependency

Content
View full analysis
' --all-parameters # Get the schema of the specified tool npx -y mcporter list 'open.larksuite.com/mcp/stream/' --json | jq '.tools[] | select(.name == "")' ``` ```shell npx -y mcporter call 'open.larksuite.com/mcp/stream/.' param1:"value1" foo:"bar" ``` ```text To improve compatibility, use `npx -y mcporter` instead of `mcporter` when executing commands. ``` ### Technical Analysis The Skill explicitly instructs the Agent to execute `mcporter` through `npx -y` without specifying an exact package version or verifying package integrity. If the package is not already available locally, `npx` can retrieve the currently resolved release from the configured npm registry and immediately execute it. The `-y` option suppresses the interactive installation prompt. Consequently, the code reviewed during this audit is not necessarily the code executed later. A compromised npm account, registry response, dependency, or future package release could introduce arbitrary executable behavior after the Skill has been approved. The package executes with the permissions of the Agent process. It may also be able to observe the workspace, process environment, network configuration, and token-bearing MCP URL supplied as a command-line argument. ### Attack Path 1. An attacker compromises the `mcporter` package, one of its dependencies, its publisher account, or the package source used by the configured npm registry. 2. The Agent follows the Skill instruction and runs `npx -y mcporter` without an exact version. 3. `npx` resolves, downloads, and executes the attacker-controlled release without requesting confirmation. 4. The malicious package runs with the Agent's local permissions. 5. It read ...[truncated 997 chars]
Remediation
View remediation
... ``` 2. Prefer declaring the dependency in a project manifest and committing a lockfile with integrity metadata. 3. Install dependencies during a controlled setup phase, then invoke the verified local binary instead of downloading code during normal Skill execution: ```shell ./node_modules/.bin/mcporter ... ``` 4. Use a trusted registry and enforce package integrity or provenance verification where supported. 5. Review the package and its transitive dependencies before updating the pinned version. 6. Execute the tool in a restricted environment with minimal filesystem, environment-variable, and network access. 7. Avoid exposing credential-bearing URLs in command-line arguments where feasible because process listings and diagnostic tooling may record them. ]]>

T09 · Insecure Skill Coding Practices

Note
Location
SKILL.md:31
Finding

Plaintext Persistence of Credential-Bearing Lark MCP URLs

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • 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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (9)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The description presents broad capabilities across user information, chats, emails, documents, tasks, and calendars without clear activation boundaries or least-privilege constraints. That increases the chance the skill is invoked in overly broad contexts and used to access or act on sensitive enterprise resources beyond user expectations.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · SKILL.md (reported line 4)May include surrounding context.

md
---
name: mcp-lark
description: Based on FeiShu(飞书) / Lark's OpenAPI MCP server, manage user information, chats, emails, cloud documents, multidimensional tables, tasks, calendars, etc.
homepage: https://github.com/aahl/skills/blob/main/skills/mcp-lark/SKILL.md
metadata:
  {
    "openclaw":

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs reading from and updating .env with user-provided MCP service URLs, but it does not warn the user before modifying workspace files or handling sensitive configuration. This can lead to unreviewed persistence of secrets/endpoints, accidental leakage through source control, or redirection to attacker-controlled MCP servers.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

The skill instructs use of npx -y mcporter without pinning a specific package version, which causes the latest package to be fetched and executed at runtime. This creates a supply-chain risk: a compromised or malicious upstream release could execute arbitrary code in the user's environment when the skill is used.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

This command again relies on unpinned npx -y mcporter, which implicitly trusts whatever package version is current at execution time. If the npm package or one of its install-time behaviors is compromised, running the command can lead to arbitrary code execution and credential exposure.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

Using npx -y mcporter for tool execution fetches and runs code from the package registry without a fixed version. Because this skill is designed to interact with enterprise Lark resources, compromise of the fetched package could directly affect sensitive chats, mail, documents, and tokens available in the environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

The recommendation to prefer npx -y mcporter broadly normalizes execution of an unpinned remote package. In a skill that handles potentially sensitive MCP URLs and enterprise data, this expands the blast radius of any upstream npm compromise or typosquatting incident.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
80% confidence
Finding

This markdown file documents constructing and sending messages, including direct sends, replies, edits, mentions, group shares, user shares, and media/file delivery, but it does not include a user-facing warning that these actions transmit content to recipients and may expose data to chats or users. Under the markdown-file criteria for SQP-2, behaviours affecting user data or privacy should be accompanied by warnings, and none are present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
72% confidence
Finding

The rich-text examples and parameter description explicitly center only zh_cn and en_us configurations and describe them as the Chinese and English configurations, without indicating user choice or whether other locales are supported. This can be read as a locale restriction in the skill documentation, which falls under natural-language language/locale policy concerns.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.