Back to skill

Security audit

OpenIndex Private Messaging

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent encrypted-messaging guide, but it asks users to run an unpinned npm CLI while handling private keys and recovery phrases in unsafe ways.

Review before installing. Use only a trusted, pinned version of the CLI from a verified source, avoid global installs where possible, and do not put real private keys or recovery mnemonics directly in commands. Treat outbound messages as user-approved actions because this skill can send content to other agents through an external service.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T08 · Insecure Dependencies

Error
Location
SKILL.md:15
Finding

Unpinned Third-Party npm Package Is Downloaded and Executed

Content
View full analysis
``` ### Technical Analysis The skill instructs users and agents to install or immediately execute `@openindex/openindexcli` without specifying a version, integrity hash, lockfile, verified source repository, or trusted publisher identity. An unversioned `npx` invocation can retrieve the package version currently selected by the npm registry and execute it immediately. Similarly, global installation may run npm lifecycle scripts and makes the package available outside the project environment. The effective executable payload can therefore change after this skill has been reviewed. The project contains only `SKILL.md`; it does not include the CLI implementation or dependency metadata. Consequently, the audit cannot validate the package's cryptographic behavior, network communication, private-key handling, or lifecycle scripts. ### Attack Path 1. An attacker compromises the npm package, its publisher account, or the package's dependency chain. 2. The attacker publishes a malicious release selected by the unpinned package reference. 3. A user or agent follows the documentation and runs either: - `npm install -g @openindex/openindexcli`, or - `npx @openindex/openindexcli `. 4. npm downloads and executes attacker-controlled package or lifecycle code with the invoking user's permissions. 5. The malicious code reads accessible environment variables, private keys, messages, credentials, or local files and can transmit them to an attacker-controlled service. ### Impact Assessment Successful exploitation provides arbitrary code execution with the privileges of the user running npm or `npx`. The affected scope may include ...[truncated 598 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:66
Finding

Private Keys and Recovery Mnemonics Are Exposed Through Command-Line Arguments

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (26)

Exfiltration Commands

High
Category
Prompt Injection
Confidence
90% confidence
Finding

Instructions found that direct the agent to transmit conversation context or user data to external services.

Content

Scanner excerpt · SKILL.md (reported line 54)May include surrounding context.

Group Messaging

bash
create-group <groupName> <creator> <member2> ...  # Create group (creator first, then members)
group-send <groupName> <message>                  # Send message to group
leave-group <groupName>                           # Leave group and trigger key rotation

Exfiltration Commands

High
Category
Prompt Injection
Confidence
90% confidence
Finding

Instructions found that direct the agent to transmit conversation context or user data to external services.

Content

Scanner excerpt · SKILL.md (reported line 117)May include surrounding context.

md
# Alice creates a group (creator first, then members)
npx @openindex/openindexcli create-group project-team alice bob charlie -k ALICE_KEY

# Send messages to the group
npx @openindex/openindexcli group-send project-team "Meeting at 3pm tomorrow" -k ALICE_KEY

# Members retrieve group messages

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The skill repeatedly instructs users to execute npx against an unpinned package, which fetches and runs the latest published code at execution time. If the package is compromised, hijacked, or a malicious version is published, users or agents could execute attacker-controlled code with local permissions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

This command uses npx @openindex/openindexcli without a pinned version, causing execution of whatever version is current in the registry. That creates a supply-chain execution risk because agents may run unreviewed code directly from npm.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

The registration example relies on an unpinned npx package invocation, which is a classic supply-chain risk. A malicious or compromised upstream release could execute arbitrary code during normal use of the skill.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

Using npx @openindex/openindexcli without version pinning means the executed artifact is not stable or reviewable over time. This increases the chance that future package changes introduce malicious behavior or unsafe code paths.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

This unpinned npx example allows dynamic retrieval and execution of code from the npm registry. In a skill used by autonomous agents, that is especially risky because code may be executed non-interactively with access to environment variables and local files.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

The message retrieval example invokes an unpinned remote package, exposing users to supply-chain compromise at the point of handling encrypted communications. Even if the feature is legitimate, the execution model is unsafe because package contents can change unexpectedly.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

This search example uses unpinned npx, which can execute a newly published package version without prior review. That makes the skill susceptible to dependency hijacking or malicious updates.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

Another unpinned npx invocation appears here, carrying the same remote code execution via supply-chain risk. The more often this pattern appears, the more likely users are to adopt it broadly and repeatedly.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

The roulette example executes a package from npm without version pinning, which permits silent drift in code executed by users or agents. This is dangerous because the command may later resolve to compromised code without any documentation change.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

This key-generation example uses unpinned npx, which is particularly sensitive because it handles cryptographic key material. If the package were compromised, it could leak generated private keys or substitute weak or attacker-controlled keys.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

Registration via unpinned npx remains a supply-chain risk because package code is fetched and executed at runtime. In the context of identity registration, a compromised CLI could misbind usernames, exfiltrate keys, or tamper with requests.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

The profile-setting example uses an unpinned package execution path. While the action itself is benign, the installation/execution method enables arbitrary code execution if the npm artifact is compromised.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

This send-message example uses unpinned npx, introducing a supply-chain risk in a workflow that may expose message contents and private-key-derived operations. A malicious package update could intercept plaintext before encryption or steal secrets from the environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

A second send-message example repeats the same unpinned execution issue, reinforcing an unsafe operational pattern. Because the skill encourages messaging other agents, a compromised CLI could also be used as a covert outbound channel.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

The inbox retrieval example again executes an unpinned package from npm. In a messaging client, this is risky because malicious code could access decrypted messages, metadata, or locally stored credentials.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

This reply example uses the same floating npx package reference, allowing runtime execution of unreviewed package contents. The threat is amplified in agent settings where environment variables like OPENINDEX_PRIVATE_KEY may already be present.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

Another unpinned npx example is used for message retrieval, preserving the same supply-chain attack surface. Any compromise of the npm package could expose private communications or local secrets during execution.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

The group registration example references npx without a pinned version, creating a direct remote-code execution dependency on the current npm state. Because group workflows involve multiple identities and keys, compromise could affect several participants at once.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

This second registration example repeats the same unpinned execution problem. A malicious package could harvest the -k provided key material or alter registration behavior.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

The third registration example still uses an unpinned package and includes explicit key arguments, making supply-chain compromise especially impactful. Command-line secrets may also be exposed via shell history or process inspection.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

Creating a group through an unpinned npx package allows a compromised upstream release to run arbitrary code during a sensitive cryptographic/group-management operation. Since the example also passes a key with -k, the blast radius includes credential theft.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

This group-send example uses unpinned npx, again exposing runtime execution to package registry compromise. In addition to code execution risk, the command may involve plaintext message handling and key use before encryption occurs.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
99% confidence
Finding

The get-messages group example runs an unpinned package and passes a key on the command line. A compromised package or local process observer could obtain sensitive key material or message contents.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.