T08 · Insecure Dependencies
- Location
references/output-formats.md:50- Finding
Unpinned Marp CLI Installation and Runtime Execution
- Content
View full analysis
Vulnerability Details
File Locations:
SKILL.md:5references/output-formats.md:50-54references/output-formats.md:118
Vulnerability Type: T08: Insecure Dependencies
Risk Level: MediumVulnerable Code
SKILL.md:5:yaml metadata: { "openclaw": { "emoji": "📊", "requires": { "bins": ["marp"] }, "install": [{ "id": "node-marp", "kind": "node", "package": "@marp-team/marp-cli", "bins": ["marp"], "label": "Install Marp CLI (node)" }] } }references/output-formats.md:50-54:markdown Optional editable mode: ```bash npx --yes @marp-team/marp-cli input.slides.md --pptx --pptx-editable -o output.slides.pptxtext `references/output-formats.md:118`: ```markdown - If `marp` is unavailable, install `@marp-team/marp-cli` before rendering.Technical Analysis
The Skill instructs the Agent to install or execute
@marp-team/marp-cliwithout specifying an exact reviewed version or verifying a package integrity hash. Thenpx --yescommand can automatically download and execute the package selected by the package registry without requesting confirmation.Consequently, the effective executable dependency may change after the Skill has been audited. If the package registry account, distribution channel, or a future package release is compromised, the Agent could retrieve and execute attacker-controlled package code. Installation lifecycle scripts and the CLI itself execute with the permissions of the account running the Agent.
The package name is consistent with the Skill's declared Marp functionality, and the reviewed files contain no evidence that its current release is malicious. The vulnerability is the unsafe, mutable dependency acquisition process rather than a confirmed malicious payload.
Attack Path
- An attacker compromises the package publisher, registry account, distribution infrastructure, or a future release of
@marp-team/marp-cli. - The attacker publishes a modified package containing malicious ...[truncated 1122 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin the CLI to an exact, reviewed version in both metadata and commands:
yaml "package": "@marp-team/marp-cli@<reviewed-exact-version>"bash npx --yes @marp-team/marp-cli@<reviewed-exact-version> input.slides.md --pptx --pptx-editable -o output.slides.pptx -
Declare the dependency in a project manifest and commit a lockfile containing registry resolution and integrity data. Use reproducible, lockfile-enforcing installation commands such as
npm ci. -
Configure the package manager to use an approved registry and validate package provenance and integrity before execution.
-
Avoid runtime package fetching where possible. Preinstall the reviewed CLI in a controlled build image and invoke the locally installed binary.
-
Do not automatically install a missing executable without explicit authorization. Fail safely with a clear dependency error when the approved version is unavailable.
-
Run rendering in a sandbox with least privilege, restricted network access, no unnecessary credentials, and write access limited to the intended input and output directories.
-
Review dependency updates before changing the pinned version, including package provenance, release changes, transitive dependencies, and lockfile integrity.
-
