Back to skill

Security audit

Extract Formulas From Pdf

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent for PDF formula extraction, but it under-discloses external document handling and installs an unpinned third-party CLI.

Review this skill before installing. Use it only with PDFs and URLs you are comfortable sending to MinerU/OpenDataLab services, avoid confidential or internal-only documents unless approved, and prefer pinning the mineru-open-api package to a reviewed version in a least-privileged environment.

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:5
Finding

Unpinned Third-Party CLI Installation Creates Supply-Chain Risk

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 5 and 13–18
Vulnerability Type: Unpinned third-party dependencies installed from remote package registries
Risk Level: Medium

Vulnerable Code

yaml
metadata: {"openclaw": {"emoji": "📄", "requires": {"bins": ["mineru-open-api"], "env": ["MINERU_TOKEN"]}, "primaryEnv": "MINERU_TOKEN", "install": [{"id": "npm", "kind": "node", "package": "mineru-open-api", "bins": ["mineru-open-api"], "label": "Install via npm"}, {"id": "go", "kind": "go", "package": "github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api", "bins": ["mineru-open-api"], "label": "Install via go install", "os": ["darwin", "linux"]}]}}
bash
npm install -g mineru-open-api
# or via Go (macOS/Linux):
go install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@latest

Technical Analysis

Both installation mechanisms resolve dependency content dynamically rather than selecting an audited, immutable release. The npm command omits a version, causing the package manager to install the registry's current default release. The Go command explicitly uses @latest. The skill metadata likewise identifies packages without pinned versions.

Consequently, the code installed when the skill is deployed may differ from the code available during this audit. If the relevant registry account, upstream repository, publishing workflow, or transitive dependency is compromised, an attacker could distribute a malicious release through an otherwise legitimate installation command. An npm package may execute lifecycle scripts during installation, while either installed CLI can execute attacker-controlled behavior when subsequently invoked.

This is classified as T08: Insecure Dependencies because the primary weakness is unsafe dependency resolution through mutable third-party package sources. The audited file itself contains no embedded malicious implementation, persistence mechanism, ...[truncated 1666 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin npm installation to a reviewed exact version, for example:
    bash
    npm install -g mineru-open-api@<reviewed-exact-version>
    
  2. Pin the Go installation to a reviewed semantic version or immutable commit rather than @latest:
    bash
    go install github.com/opendatalab/MinerU-Ecosystem/cli/mineru-open-api@<reviewed-version-or-commit>
    
  3. Apply the same exact version constraints in the skill's installation metadata so automated installation cannot silently select newer releases.
  4. Record and verify package integrity hashes or checksums where the installation system supports them.
  5. Review the pinned package, its transitive dependencies, and npm lifecycle scripts before approval.
  6. Prefer installation in an isolated, least-privileged environment rather than a privileged global context.
  7. Use a trusted internal registry or artifact mirror with release allowlisting for production deployments.
  8. Establish a controlled update process in which new versions are reviewed, tested, and explicitly pinned before rollout.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill is presented narrowly as PDF formula extraction, but the documentation states it also supports URL inputs and broader content extraction/conversion. This mismatch can cause an agent or user to invoke the skill on remote resources or for broader document processing than expected, increasing exposure to unreviewed network access and data handling behaviors.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation advertises a token-authenticated crawl capability that is outside the stated purpose of extracting formulas from PDFs. Mentioning a broader remote-fetching feature expands the apparent operational scope and may lead agents to use undocumented network behavior with authenticated access.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation says the tool supports local files and URLs and requires an API token, but it does not clearly warn that user-provided documents or URLs are transmitted to the external MinerU service for processing. This is dangerous because users or agents may send sensitive local documents or internal URLs to a third party without informed consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation states a default language hint of ch and instructs users to switch to en for English, which imposes a locale default in natural language. Because no opt-in, choice-first behavior, or region-specific justification is provided, this may violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.