Back to skill

Security audit

Openapi Lark

Security checks for vulnerabilities and agentic risk

Overview

The skill has a clear OpenAPI-to-Lark documentation purpose, but it asks users to repeatedly run mutable remote code while using Lark or CI credentials and writes persistent agent instructions by default.

Install only if you are comfortable reviewing and pinning the external CLI source yourself. Prefer a fixed commit or reviewed package version, run it with narrowly scoped Lark credentials, keep unrelated CI secrets out of the environment, review any CLAUDE.md changes before committing, use --no-claude-md when persistent agent instructions are not needed, and prefer dry-run or prune: move over irreversible delete.

Vulnerability Patterns
  • 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
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (2)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:16
Finding

Execution of Mutable Remote Code Without Version Pinning

Content
View full analysis
npx @larksuite/cli@latest install lark-cli auth login --recommend ``` ### Technical Analysis The Skill directs users and AI Agents to retrieve and execute `openapi-lark` directly from a mutable GitHub repository reference. It does not specify an immutable commit hash or a cryptographically verified release. It also installs the Lark CLI through the mutable `@latest` package tag. Consequently, the code executed at runtime may differ from the code that existed when this Skill was reviewed. The implementation of the downloaded `openapi-lark` package is not included in the audited artifact, so its actual behavior cannot be independently verified from this project. This is particularly sensitive because the downloaded program is expected to run inside project repositories and authenticated CI environments. The documented environment can contain: - Lark application IDs and application secrets. - Lark authentication tokens and document permissions. - OpenAPI authorization headers. - Repository files and configuration. - CI credentials and other environment variables. - Permission to modify Lark wiki and docx content. The use of an official package name for the Lark CLI reduces some provenance risk but does not mitigate the mutable-version problem created by `@latest`. ### Attack Path 1. An attacker compromises the referenced GitHub repository, its maintainer account, the relevant package publication channel, or an upstream dependency. 2. The attacker modifies the payload referenced by the repository default branch or the `@latest` package tag. 3. A user, Agent, developer hook, or CI job follows the Skill instructions and invokes the documented `npx` command. ...[truncated 1081 chars]
Remediation
View remediation
openapi-lark ``` 2. Pin the Lark CLI to an exact reviewed version instead of using `@latest`. 3. Prefer signed releases and verify release signatures or checksums before execution. 4. Use a package lockfile and integrity metadata where supported. 5. Vendor or include the executable implementation in the audited project when feasible. 6. Review dependency changes before updating the pinned revision. 7. Run the synchronization process in a restricted CI environment with: - Minimal filesystem access. - Repository-scoped credentials. - Narrow Lark scopes. - No unrelated secrets in the process environment. - Restricted outbound network access. 8. Separate read-only lookup credentials from document synchronization credentials. 9. Require explicit review before allowing a dependency update to execute in CI. ]]>

T02 · Agent Memory Poisoning

Warning
Location
SKILL.md:86
Finding

Persistent Modification of Project-Level AI Agent Instructions

Content
View full analysis
\ --openapi api/openapi.yaml \ --doc-url ``` The documented default behavior of this command writes a managed instruction block into the project-root `CLAUDE.md`. The Skill recommends committing the resulting `CLAUDE.md` to the repository. An opt-out flag, `--no-claude-md`, is documented, but it is not the default. ### Technical Analysis `CLAUDE.md` is a persistent project instruction file that can influence future AI Agent sessions. Modifying and committing this file creates a cross-session and cross-user instruction channel. The exact generated instruction block and the implementation that writes it are not included in the audited artifact. Instead, they are supplied by the mutable remote package identified in the first finding. Therefore, users cannot determine from this Skill alone precisely which persistent instructions will be inserted. Writing Agent instructions is not required for the core OpenAPI-to-Lark synchronization operation. It is an auxiliary convenience feature and exceeds the minimum filesystem changes required to render and upload API documentation. Although the Skill states that the write is marker-delimited and offers `--no-claude-md`, default modification followed by a recommendation to commit the file creates a durable trust-boundary risk. If the remote generator is compromised, arbitrary instructions could be placed in a file automatically trusted by later Agents. ### Attack Path 1. A user or Agent runs the documented `init` command without `--no-claude-md`. 2. The remotely retrieved CLI writes a managed block into the repository’s `CLAUDE.md`. 3. The generated change is committed, as recommended by the Skill. 4. Future AI Agent sessions ...[truncated 1058 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (7)

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The skill instructs users to install and execute code directly from a remote source via npx skills add leeguooooo/openapi-lark without any immutable version pinning or integrity verification. That creates a supply-chain risk: if the upstream package, account, or dependency chain is compromised, users may execute attacker-controlled code during installation or later invocations.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

npx -y -p github:leeguooooo/openapi-lark openapi-lark <cmd> fetches and runs code from GitHub at execution time, apparently tracking a mutable repo reference rather than a fixed commit. This is especially risky because the skill is designed for repeated operational use, so every run can become a fresh remote-code-execution opportunity if the repository or dependency path is tampered with.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The prerequisite npx @larksuite/cli@latest install explicitly tracks latest, which is mutable and may pull unreviewed code. Although this is documentation rather than embedded code, it still instructs users to execute a remote package with broad document-management capabilities, increasing supply-chain exposure.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

This is another instance of runtime execution from a mutable GitHub source via npx -y -p github:leeguooooo/openapi-lark ..., again enabling supply-chain compromise to become code execution on the user's machine or CI runner. Because the skill targets CI and documentation sync workflows with access to tokens and wiki permissions, exploitation could expose secrets or alter remote documentation at scale.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest description states '中文优先标题', which indicates a default language preference baked into the skill behavior. Under the policy, forcing a specific language or locale without offering user choice can be a natural-language policy violation unless it is clearly opt-in or justified as region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The text says '中文优先标题 / 段落本地化 / operationId→summary 都已生效', describing language-localized behavior as a default. Because no user opt-in or alternative locale behavior is provided nearby, this reads as a forced language preference.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The automatic rendering section explicitly states '中文优先标题' and '段落本地化' as unconditional defaults. This is natural-language guidance that imposes a language preference without stating that users can opt in, opt out, or select another locale.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.