Back to skill

Security audit

OpenMM Portfolio

Security checks for vulnerabilities and agentic risk

Overview

This skill is mostly coherent, but it asks users to give an unpinned third-party command-line tool access to exchange account credentials without enough scoping or safety guidance.

Review this before installing. Use separate read-only exchange API keys, disable trading and withdrawal permissions, avoid placing secrets directly in shell history, and consider whether you trust the current @3rd-eye-labs/openmm package release before exposing account credentials to it.

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:13
Finding
Unpinned Third-Party Package Exposes Exchange Credentials to Supply-Chain Risk## Vulnerability Details **File Location**: `SKILL.md`, lines 13–16 **Vulnerability Type**: Unpinned executable dependency **Risk Level**: Medium ### Complete Code Snippet ```yaml install: - kind: node package: "@3rd-eye-labs/openmm" bins: [openmm] ``` The package is installed without an exact version or integrity hash. The resulting `openmm` executable operates in an environment containing high-value exchange credentials documented elsewhere in `SKILL.md`, including API keys, secrets, a UID, and a passphrase. ### Technical Analysis The dependency declaration resolves a mutable version of `@3rd-eye-labs/openmm`. Because the project contains neither the package source nor a lockfile or integrity constraint, the installed implementation cannot be verified from the audited artifact. An attacker who compromises the package publisher account, registry distribution path, or a subsequently selected package release could introduce malicious installation or runtime behavior. npm lifecycle scripts may execute during installation, while the installed CLI may access inherited environment variables when invoked. This creates a supply-chain trust boundary around credentials used for MEXC, Gate.io, Bitget, and Kraken. The audit found no evidence that the package is currently malicious. The vulnerability is the absence of reproducible, integrity-verified dependency resolution combined with the dependency's access to sensitive exchange credentials. ### Attack Path 1. An attacker compromises the package publisher, registry account, or package distribution process. 2. The attacker publishes a malicious release under the legitimate package name. 3. A new Skill installation resolves the unpinned dependency to that release. 4. Malicious code executes through an installation lifecycle hook or when an agent invokes the `openmm` binary. 5. The code reads exchange API keys, secrets, UID, or passphrase values from inherited environment variables. 6. The attacker exfilt ...[truncated 845 chars]
Remediation
## Remediation Suggestions 1. Pin `@3rd-eye-labs/openmm` to a reviewed, exact version rather than using mutable dependency resolution. 2. Enforce package integrity with a committed lockfile and verified registry integrity hashes. 3. Audit or vendor the exact package source, including npm lifecycle scripts and transitive dependencies. 4. Disable installation scripts where operationally feasible, such as with `npm install --ignore-scripts`. 5. Install and execute the CLI in a sandbox with restricted filesystem, network, and process permissions. 6. Expose credentials only to the specific process that needs them rather than broadly exporting them into an agent environment. 7. Use separate, read-only, least-privilege API keys for portfolio queries. 8. Disable trading, withdrawal, transfer, and account-management permissions unless explicitly required. 9. Apply exchange-supported IP allowlists and rotate credentials after any suspected dependency compromise. 10. Add automated dependency provenance, vulnerability, and unexpected-release monitoring.
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
89% confidence
Finding
The skill asks users to configure exchange API credentials and then use them for balance and open-order queries, but it does not warn that these commands transmit authenticated account data to third-party exchange APIs and may expose sensitive financial metadata. Even if the commands are read-oriented, authenticated requests can reveal holdings, trading activity, and account identifiers, which is privacy- and security-relevant in a portfolio-management context.

Static analysis

No suspicious patterns detected.