Back to skill

Security audit

QMAP Client

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real devnet CLI skill, but it asks users to install mutable global code, create a local wallet identity, and run automatic network tasks with limited safety detail.

Install only after reviewing the npm package and preferably using a pinned version in an isolated environment. Use a disposable devnet identity, keep ~/.qmap out of synced or shared directories, and avoid running worker tasks from an account that has access to unrelated secrets or important files.

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:15
Finding
Unpinned Globally Installed npm Dependency## Vulnerability Details **File Location**: `SKILL.md`, lines 15–21 and 32–35 **Vulnerability Type**: Unpinned third-party package installed globally **Risk Level**: Medium ### Vulnerable Code ```yaml install: - id: qmap-cli kind: npm label: Install qmap CLI package: "@alphify/qmap-client" bins: - qmap ``` ```bash npm i -g @alphify/qmap-client ``` ### Technical Analysis The Skill installs `@alphify/qmap-client` without specifying an exact version or integrity digest. Consequently, the package content installed by users can change after this Skill has been reviewed. The repository contains only `SKILL.md`; it does not include the npm package implementation needed to verify its installation scripts, runtime behavior, identity handling, or task-execution safeguards. The `-g` option installs the package globally for the current npm environment. npm packages may run lifecycle scripts during installation, and the resulting `qmap` executable runs with the invoking user's privileges. If the package publisher account, npm distribution channel, or a future package release is compromised, attacker-controlled code could execute during installation or when users invoke the CLI. The Skill subsequently directs users to initialize an identity, connect to an external distributed-computing network, and execute claimed tasks. This increases the potential exposure of local identity material and user-accessible resources if the dependency becomes malicious. ### Attack Path 1. An attacker compromises the npm publisher account, package distribution process, or a later release of `@alphify/qmap-client`. 2. The attacker publishes a malicious package version containing a harmful lifecycle script or modified `qmap` executable. 3. A user follows the Skill's unversioned `npm i -g @alphify/qmap-client` instruction. 4. npm resolves the mutable package reference to the attacker-controlled release. 5. Malicious ...[truncated 1310 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to a reviewed exact version, for example: ```bash npm install --global @alphify/qmap-client@0.1.2 ``` The selected version must be independently reviewed rather than inferred solely from the version displayed in the documentation. 2. Publish and verify the expected npm package integrity digest. Where practical, use a lockfile or another reproducible installation mechanism that validates package integrity. 3. Avoid global installation. Prefer a project-local, isolated installation or a locked execution environment with minimal filesystem and credential access. 4. Review and include the executable implementation in the audit scope. In particular, inspect npm lifecycle scripts, external network communication, identity storage, signature handling, and worker task execution. 5. Disable npm lifecycle scripts during installation when they are not required: ```bash npm install --global --ignore-scripts @alphify/qmap-client@0.1.2 ``` This should only be adopted after confirming that the package operates correctly without installation scripts. 6. Execute network-supplied tasks inside a restricted sandbox or container with no sensitive host mounts, minimal network access, resource limits, and an unprivileged user. 7. Document the authoritative package publisher, source repository, expected version, and cryptographic checksum so users can detect unexpected package changes.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill tells users to initialize and use a wallet/identity, but it does not clearly warn that this creates sensitive key material on local disk under ~/.qmap/profiles/devnet.env and related identity storage. Even on devnet, undisclosed local credential creation can lead users to mishandle, back up, sync, or expose wallet files, increasing the risk of credential theft or unintended persistence on shared systems.

Static analysis

No suspicious patterns detected.