Back to skill

Security audit

dmp-cli

Security checks for vulnerabilities and agentic risk

Overview

The skill has a legitimate DMP CLI purpose, but its install and data-operation instructions use high-impact access without enough verification or guardrails.

Review before installing. Prefer a pinned, verified dmp release installed in a user-local path, use least-privilege DMP credentials from a secret manager or masked CI secrets, and run audience upload, sync, and deal changes only against authorized datasets and the intended DMP context/platform.

Vulnerability Patterns
  • 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
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • 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 (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:23
Finding
Unverified Remote Binary Retrieval and Execution## Vulnerability Details **File Location**: `SKILL.md:23-37`; `references/commands.md:22-38` **Vulnerability Type**: Remote payload retrieval and execution through an unverified, mutable release artifact **Risk Level**: High ### Vulnerable Code `SKILL.md:23-37`: ```bash # Detect platform OS=$(uname -s | tr '[:upper:]' '[:lower:]') # linux or darwin ARCH=$(uname -m) [ "$ARCH" = "x86_64" ] && ARCH="amd64" [ "$ARCH" = "aarch64" ] && ARCH="arm64" # Get latest release tag TAG=$(curl -sf https://api.github.com/repos/a652/dmp-cli/releases/latest | grep '"tag_name"' | cut -d'"' -f4) # Download binary FILENAME="dmp-${TAG}-${OS}-${ARCH}" curl -fL "https://github.com/a652/dmp-cli/releases/download/${TAG}/${FILENAME}" -o /usr/local/bin/dmp chmod +x /usr/local/bin/dmp ``` `references/commands.md:22-38`: ```bash OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) case "$ARCH" in x86_64) ARCH="amd64" ;; aarch64|arm64) ARCH="arm64" ;; esac TAG=$(curl -sf https://api.github.com/repos/a652/dmp-cli/releases/latest | grep '"tag_name"' | cut -d'"' -f4) FILENAME="dmp-${TAG}-${OS}-${ARCH}" curl -fL "https://github.com/a652/dmp-cli/releases/download/${TAG}/${FILENAME}" -o dmp chmod +x dmp sudo mv dmp /usr/local/bin/ dmp version ``` ### Technical Analysis The installation procedure resolves the mutable GitHub `latest` release at runtime, downloads an executable from that release, grants it execute permission, and installs it on the system `PATH`. The reference procedure immediately executes the downloaded artifact with `dmp version`. No cryptographic checksum, digital signature, signed provenance statement, or immutable artifact digest is verified before installation or execution. Consequently, the effective code executed by a user or agent can change after the skill itself has been reviewed. HTTPS protects the connection in transit but does not protect against compromise o ...[truncated 2294 chars]
Remediation
## Remediation Suggestions 1. Pin installation instructions to a reviewed, immutable release version rather than resolving `releases/latest` at runtime. 2. Publish SHA-256 or stronger checksums through a separately protected channel and verify the selected artifact before granting execute permission: ```bash echo "$EXPECTED_SHA256 $FILENAME" | sha256sum --check - ``` 3. Prefer cryptographically signed release artifacts and verify signatures against a documented, pinned public key. Consider Sigstore/Cosign attestations with identity and issuer restrictions. 4. Fail closed if the checksum, signature, release version, operating system, or architecture does not match an explicitly supported value. 5. Avoid parsing GitHub API JSON using `grep` and `cut`; use a proper JSON parser and validate the resulting tag against a strict version pattern. This does not replace artifact verification. 6. Download into a newly created, permission-restricted temporary directory and use safe shell settings such as `set -euo pipefail`. 7. Install into a user-scoped directory unless system-wide installation is operationally necessary. Do not use `sudo` in automated agent workflows. 8. Do not execute the binary, including for a version check, until all integrity and provenance checks succeed. 9. Document the expected repository ownership, release-signing identity, checksum source, and key-rotation process so operators can validate provenance independently. 10. Where feasible, distribute the CLI through a managed package repository that supports version pinning, signed metadata, and reproducible provenance.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill instructs users to download a release artifact from the internet and write it directly to /usr/local/bin, which modifies a privileged system path and can affect the host environment beyond the current task. The absence of warnings about elevated privileges, environment modification, version pinning, or checksum/signature verification increases the risk of accidental unsafe installation or supply-chain compromise.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The documentation tells users to provide plaintext secrets through environment variables without warning that such values may be exposed through shell history, process inspection, CI logs, or inherited subprocess environments. In an agent or automation context, this can lead to credential leakage and unauthorized access to the DMP API or upload endpoints.

Session Persistence

Medium
Category
Rogue Agent
Content
## When To Use

- The user needs to create, inspect, or manage DMP audiences.
- The user needs to create or inspect DMP insight tasks.
- The user needs to sync DMP audiences to media platforms.
- The user needs to create or modify RTQ deals.
- The user needs DMP reference data for tags, apps, regions, or ad dimensions.
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

External Transmission

Medium
Category
Data Exfiltration
Content
aarch64|arm64) ARCH="arm64" ;;
esac

TAG=$(curl -sf https://api.github.com/repos/a652/dmp-cli/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
FILENAME="dmp-${TAG}-${OS}-${ARCH}"

curl -fL "https://github.com/a652/dmp-cli/releases/download/${TAG}/${FILENAME}" -o dmp
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
aarch64|arm64) ARCH="arm64" ;;
esac

TAG=$(curl -sf https://api.github.com/repos/a652/dmp-cli/releases/latest | grep '"tag_name"' | cut -d'"' -f4)
FILENAME="dmp-${TAG}-${OS}-${ARCH}"

curl -fL "https://github.com/a652/dmp-cli/releases/download/${TAG}/${FILENAME}" -o dmp
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
curl -fL "https://github.com/a652/dmp-cli/releases/download/${TAG}/${FILENAME}" -o dmp
chmod +x dmp
sudo mv dmp /usr/local/bin/
dmp version
```
Confidence
70% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
These examples create upload audiences and sync tasks against real remote DMP systems, potentially moving audience data to third parties or triggering processing of personal/advertising identifiers. Without warnings about privacy, authorization, and production impact, an agent or user could run them against live systems and unintentionally transmit regulated or sensitive marketing data.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The examples show secret-bearing usage patterns such as `DMP_UPLOAD_PASSWORD=<s3-secret>` and account/access-key parameters without any adjacent warning about protecting credentials. In an agent skill context, users may copy-paste commands into shells, shell history, logs, screenshots, or shared terminals, increasing the chance of credential disclosure even if the placeholders are not real secrets in the document.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
This markdown file documents commands that create audiences, upload user data via SFTP, and sync audiences to an external platform, but it does not include any warning about privacy, production impact, or the need to verify identifiers and target advertiser/platform before running them. For markdown files, safety-relevant behaviors that can affect user data or external systems should be accompanied by explicit warnings.

Natural-Language Policy Violations

Low
Confidence
96% confidence
Finding
The examples use Chinese literal values for command arguments, such as `活动维度` and `购物`, which imposes a specific language/locale in the workflow documentation. The file does not indicate that the tool is region-specific or provide an alternative or opt-in for other locales.

Static analysis

No suspicious patterns detected.