Back to skill

Security audit

Feishu Project(Meego) Connector

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a real Feishu Project connector, but it asks the agent to handle OAuth credential files and runs an unpinned npm tool that could change after review.

Review this skill before installing. Prefer the browser OAuth path where the agent does not see credential contents, avoid pasting authorized credential files into chat, restrict Feishu OAuth permissions to the minimum needed, and use a pinned, verified version of @lark-project/meego-mcporter rather than unversioned npx commands.

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
SKILL.md:18
Finding
Unpinned npm Package Is Downloaded and Executed Through npx<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:18`, `SKILL.md:32`, `SKILL.md:65`, `SKILL.md:81`, and `SKILL.md:109` **Vulnerability Type**: Unpinned executable third-party dependency **Risk Level**: Medium ### Vulnerable Code ```yaml install: - kind: node package: "@lark-project/meego-mcporter" bins: - meego-mcporter ``` ```markdown - **@lark-project/meego-mcporter**: MCP transport utility obtained from npm (`npm install -g @lark-project/meego-mcporter` or downloaded automatically through `npx`) ``` ```bash npx @lark-project/meego-mcporter auth meego --config meego-config.json ``` ```bash npx @lark-project/meego-mcporter auth meego --config meego-config.json --oauth-timeout 1000 ``` ```bash npx @lark-project/meego-mcporter call meego <tool_name> --config meego-config.json ``` ### Technical Analysis The Skill installs or invokes `@lark-project/meego-mcporter` without specifying an exact reviewed version or integrity value. When the package is unavailable locally, `npx` can retrieve the currently resolved release from the npm registry and execute it with the privileges of the user running the agent. Consequently, the code that ultimately executes can differ from the code present when this Skill was audited. A compromised publisher account, malicious future release, registry compromise, or other supply-chain incident could cause users to execute altered package code. This risk is particularly significant because the dependency performs OAuth authentication and manages `~/.mcporter/credentials.json`. Although access to that credential file is necessary for the declared Feishu OAuth functionality and the Skill includes appropriate user-confirmation and storage restrictions, those textual restrictions cannot constrain a compromised npm package. ### Attack Path 1. An attacker compromises the npm publisher account, release process, or another component of the package distribution chain. 2. The attacker publishes an altered v ...[truncated 1386 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin every installation and invocation to an exact, reviewed package version: ```yaml package: "@lark-project/meego-mcporter@1.0.10" ``` ```bash npx --yes @lark-project/meego-mcporter@1.0.10 auth meego --config meego-config.json ``` 2. Prefer installation through a lockfile-backed project rather than resolving the package independently on every invocation. 3. Commit and verify the package-lock integrity metadata or use an equivalent reproducible dependency mechanism. 4. Review package provenance, publisher identity, release signatures, and npm provenance attestations before upgrading. 5. Disable unexpected lifecycle scripts where compatible with the package, and perform dependency installation in a restricted environment. 6. Execute the package under a dedicated, minimally privileged operating-system account with access only to the required configuration and credential paths. 7. Restrict OAuth scopes to the minimum Feishu project permissions required for the requested operation. 8. Align the package version throughout the project. `SKILL.md` declares Skill version `1.0.10`, while `_meta.json` declares `1.0.9`; this discrepancy should be corrected to improve release traceability. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (11)

Credential Access

High
Category
Privilege Escalation
Content
- node
        - npx
      config:
        - ~/.mcporter/credentials.json
    install:
      - kind: node
        package: "@lark-project/meego-mcporter"
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- node
        - npx
      config:
        - ~/.mcporter/credentials.json
    install:
      - kind: node
        package: "@lark-project/meego-mcporter"
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- node
        - npx
      config:
        - ~/.mcporter/credentials.json
    install:
      - kind: node
        package: "@lark-project/meego-mcporter"
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- node
        - npx
      config:
        - ~/.mcporter/credentials.json
    install:
      - kind: node
        package: "@lark-project/meego-mcporter"
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
**步骤 A — 向用户展示 OAuth 客户端配置(需用户确认):**

读取 `~/.mcporter/credentials.json` 的内容(此时仅包含 OAuth 客户端参数,不含 token),向用户展示并告知:

> 以下是 OAuth 客户端配置,请参考文档 https://project.feishu.cn/b/helpcenter/1ykiuvvj/1n3ae9b4 在本地电脑中完成授权,授权完成后请将生成的凭证文件提供给我。
Confidence
95% confidence
Finding
The skill explicitly instructs the agent to read ~/.mcporter/credentials.json and display its contents to the user. Even if the file is expected to contain only OAuth client parameters at that moment, this creates a dangerous pattern where the agent accesses a credential store directly, and any state mismatch, prior auth, or file confusion could expose tokens or other secrets into chat history.

Credential Access

High
Category
Privilege Escalation
Content
**步骤 B — 接收用户提供的已授权凭证(需用户确认):**

用户在本地完成 OAuth 后会提供已授权的凭证文件。在得到用户确认后,将其写入 `~/.mcporter/credentials.json`。

写入完成后,立即清理操作过程中可能产生的任何中间临时文件。凭证内容仅存储在 `~/.mcporter/credentials.json`,不得保存到其他任何位置。
Confidence
96% confidence
Finding
The skill instructs the agent to accept a user-provided authorized credential file and write it into ~/.mcporter/credentials.json. This places raw secrets directly into the agent workflow, increasing the risk of accidental logging, prompt retention, mishandling of file contents, or credential substitution attacks if the file is malformed or maliciously crafted.

Credential Access

High
Category
Privilege Escalation
Content
用户在本地完成 OAuth 后会提供已授权的凭证文件。在得到用户确认后,将其写入 `~/.mcporter/credentials.json`。

写入完成后,立即清理操作过程中可能产生的任何中间临时文件。凭证内容仅存储在 `~/.mcporter/credentials.json`,不得保存到其他任何位置。

#### 3.4. 验证授权结果
Confidence
95% confidence
Finding
Although this line says credentials must only be stored in ~/.mcporter/credentials.json and temporary files must be cleaned up, it confirms the workflow involves the agent handling authorized credential material. That is still dangerous because the agent may inadvertently persist secrets in logs, memory, traces, or intermediate artifacts outside the intended file.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The skill metadata installs and runs an npm-delivered MCP component without a pinned version, allowing the executed code to change over time. If the upstream package is compromised or a malicious version is published, the agent could fetch and run attacker-controlled code during install or invocation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding
The OAuth command uses npx to fetch and execute @lark-project/meego-mcporter without specifying an exact version. This creates a supply-chain execution risk because a different package version may be retrieved later and run with access to the user's environment and credentials flow.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding
The remote OAuth bootstrap command again executes an unpinned npm package via npx. Because this step participates in credential setup, compromise of the package could expose OAuth client data, alter the auth flow, or capture tokens once the credential file is written.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding
The operational call example uses npx without a pinned version, so every later tool invocation may execute changed upstream code. Since the tool can query and modify project data, a compromised package could abuse both local credentials and remote Meego permissions.

Static analysis

No suspicious patterns detected.