Back to skill

Security audit

Nimrobo

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to document a real Nimrobo CLI workflow, but it combines ambiguous global installation, plaintext credential storage, and high-impact account, organization, applicant, messaging, transcript, and audio operations without enough safety guidance.

Review this before installing. Verify the correct official npm package and version with Nimrobo, avoid pasting API keys into shell history or logs, protect or rotate the `~/.nimrobo/config.json` key, and require explicit human confirmation before deletes, org membership changes, role changes, messages, applicant accept/reject decisions, or bulk operations. Treat transcripts, evaluations, and signed audio URLs as confidential personal data.

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
installation.md:6
Finding

Conflicting and Unpinned npm Package Identity

Content
View full analysis

Vulnerability Details

File Location: installation.md:6-10; core.md:12-16
Vulnerability Type: Supply-chain ambiguity and unsafe dependency installation
Risk Level: High

Vulnerable Code

installation.md:6-10:

bash
To install the Nimrobo CLI globally via npm:

```bash
npm install -g @nimrobo/cli
text

`core.md:12-16`:

```bash
## Installation

```bash
npm install -g nimrobo-cli
text

### Technical Analysis

The documentation identifies two different npm packages as the same Nimrobo CLI:

- Scoped package: `@nimrobo/cli`
- Unscoped package: `nimrobo-cli`

No explanation establishes whether both packages are official, equivalent, or maintained by the same publisher. Neither installation command pins a reviewed version or provides an integrity value. Because npm installation can execute package lifecycle scripts, globally installing the unintended package allows that package to run code with the privileges of the user performing the installation.

This creates a dependency-confusion or package-spoofing opportunity. The audit did not establish that either package is currently malicious; the vulnerability is the conflicting package identity and lack of verification that can direct users to an unintended dependency.

### Attack Path

1. A user or automated Agent follows `core.md` instead of `installation.md`.
2. npm resolves the unscoped `nimrobo-cli` package rather than the documented scoped package.
3. An attacker publishes, takes control of, or compromises the unintended package or a future version.
4. The user runs `npm install -g nimrobo-cli`.
5. Malicious package lifecycle scripts execute under the installing user's account.
6. The package can access local files and credentials available to that account, including the documented Nimrobo API-key configuration.
7. The attacker may subsequently impersonate the user or perform authenticated Nimrobo operations.

### Imp
...[truncated 654 chars]
Remediation
View remediation

Remediation Suggestions

  1. Select one canonical, publisher-verified npm package and use it consistently in every document.
  2. Remove the conflicting package name from core.md or explicitly document why both names are valid.
  3. Pin installation instructions to a reviewed version, for example:
    bash
    npm install -g @nimrobo/cli@X.Y.Z
    
  4. Publish the expected npm organization, package owner, registry URL, and package signature or integrity-verification procedure.
  5. Prefer project-local installation with a lockfile over global installation where operationally possible.
  6. Disable lifecycle scripts during initial inspection where supported, and review the package before enabling them.
  7. Add automated documentation tests that fail when installation instructions reference inconsistent package names.
  8. Establish dependency provenance controls such as npm provenance attestations, protected publisher accounts, mandatory multifactor authentication, and release signing.

T09 · Insecure Skill Coding Practices

Error
Location
core.md:36
Finding

API Key Persisted in Plaintext User Configuration

Content
View full analysis

Vulnerability Details

File Location: core.md:36-49
Vulnerability Type: Plaintext storage of authentication credentials
Risk Level: High

Vulnerable Code

markdown
## Configuration

**Config file location:** `~/.nimrobo/config.json`

```json
{
  "API_BASE_URL": "https://app.nimroboai.com/api",
  "NET_API_BASE_URL": "https://net-api.nimroboai.com",
  "API_KEY": "api_...",
  "defaultProject": null,
  "context": {
    "orgId": null,
    "postId": null,
    "channelId": null,
    "userId": null
  }
}
text

### Technical Analysis

The Skill documents storage of the Nimrobo API key directly in `~/.nimrobo/config.json`. It does not specify restrictive file permissions, encryption at rest, use of an operating-system credential manager, token expiration, or automatic rotation.

A home-directory configuration file can be exposed through permissive permissions, malware running as the user, development-environment synchronization, backups, diagnostic archives, accidental repository commits, or other processes operating under the same account. Any party obtaining the key can authenticate as the affected Nimrobo user until the key expires or is revoked.

The configuration also stores API endpoint values next to the credential. If the CLI permits these values to be modified without validation, redirecting API requests to an attacker-controlled endpoint could additionally disclose the stored key. The documentation does not provide enough implementation evidence to confirm such endpoint redirection, so that scenario is not treated as a separate vulnerability.

### Attack Path

1. The user authenticates with `nimrobo login`.
2. The CLI writes the API key to `~/.nimrobo/config.json`.
3. The configuration file is read by malware, another process with the same account privileges, an insecure backup, or an unauthorized local user if file permissions are permissive.
4. The attacker extracts the pla
...[truncated 1168 chars]
Remediation
View remediation

Remediation Suggestions

  1. Store API keys in an operating-system credential manager such as Keychain, Credential Manager, or Secret Service rather than in the JSON configuration.
  2. If file-based storage is unavoidable, separate credentials from non-secret configuration and enforce owner-only permissions equivalent to 0600.
  3. Reject credential files owned by another user or readable by group and other users.
  4. Use short-lived, narrowly scoped access tokens with refresh-token rotation instead of long-lived API keys.
  5. Provide immediate credential revocation and rotation through logout and account-management workflows.
  6. Ensure status, JSON output, logs, errors, telemetry, and diagnostic bundles always redact authentication material.
  7. Exclude credential paths from backups, synchronization tools, source control, and support archives by default.
  8. Document how users can inspect permissions, rotate exposed credentials, and securely remove residual credential files.
  9. Validate API endpoints against trusted HTTPS origins and never transmit credentials to a user-modified or untrusted endpoint without an explicit security warning.
  10. Avoid examples that pipe keys through echo; use hidden interactive input, standard input from a secure secret provider, or a credential-helper integration.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (21)

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

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

nimrobo net orgs get current nimrobo net posts applications current

View/clear context

nimrobo net context show nimrobo net context clear

text

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · commands.md (reported line 137)May include surrounding context.

View context

nimrobo net context show

Clear context

nimrobo net context clear

text

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · core.md (reported line 106)May include surrounding context.

View context

nimrobo net context show

Clear context

nimrobo net context clear

text

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The onboarding instruction is triggered by broad natural language ('run only if the user says to onboard') and then directs the agent to follow CLI-driven instructions and ask questions to fill onboarding. In an agent setting, this creates a weak invocation boundary for a state-changing workflow that may modify profile or organization data based on ambiguous user phrasing or prompt-injected context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs the agent to set up profile and organization data from JSON without any warning that this operation can create or modify persistent user and organizational records. In practice, an agent could ingest untrusted JSON or incomplete user input and perform unintended account, profile, or org changes without informed consent.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill metadata says it is for voice screening, but the documented command set also enables broad matching-network operations such as user search, organization management, invitations, applications, messaging, and deletions. This scope expansion increases the chance an agent could access or manipulate unrelated social/organizational data beyond user expectations, creating an over-privileged capability surface.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The command reference includes many state-changing and destructive actions such as delete, remove-member, update-role, approve/reject requests, accept/reject applications, and send messages, but provides no warning, confirmation, or safety guidance. In an agent setting, this makes unintended writes or destructive actions materially more likely, especially when identifiers or context are inferred incorrectly.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation explicitly instructs users to store a long-lived API key in a plaintext local config file under the home directory, but gives no warning about file permissions, credential sensitivity, or safer storage options. In a CLI used for voice screening and network operations, compromise of this file could grant unauthorized API access and exposure or manipulation of organizational data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The markdown describes orgs delete and provides direct invocation examples, but it does not warn that this operation is destructive and potentially irreversible. A user following this reference could delete an organization without any explicit caution about impact or need for confirmation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manage remove-member section shows how to remove users from an organization but provides no warning that this revokes access and may disrupt collaboration. For markdown documentation, access-changing actions should include user-facing cautions when they affect other users' data or permissions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The posts delete section presents a deletion command with no cautionary text about permanence or consequences for applicants and related workflows. This omits an important warning for a user-data-affecting operation in a markdown skill reference.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The applications batch-action section enables bulk acceptance or rejection of multiple applications, but the documentation does not warn that this can affect many users at once and may create channels or send final decisions in bulk. Bulk operations merit explicit caution because mistakes scale immediately.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The scripted login example encourages piping an API key on the command line without any warning about credential exposure through shell history, process inspection, CI logs, or copied scripts. Even though the example uses a placeholder, it models an unsafe pattern for handling long-lived credentials.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation instructs users how to retrieve full session transcripts but provides no warning that transcripts can contain highly sensitive interview content, personal data, or other confidential conversation material. In a voice screening platform, normalizing transcript access without privacy, retention, or authorization guidance increases the risk of mishandling or overexposing sensitive data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation exposes retrieval of a signed audio URL for session recordings without warning that recordings may contain biometric voice data and sensitive personal information. Because signed URLs are directly reusable for a limited time, users may underestimate the confidentiality risk and share or log them insecurely.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The workflow demonstrates retrieval of interview evaluations and transcripts, which are privacy-sensitive artifacts containing candidate voice and assessment data, but it provides no caution about access control, consent, retention, or safe handling. In a reusable skill, this can normalize indiscriminate collection/export of sensitive applicant information and increase the chance of unauthorized disclosure or mishandling.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This workflow tells users to submit profile details, city, bio, application notes, and expected salary without warning that these are personal and potentially sensitive data sent to a remote service. Omitting cautionary guidance can lead users to overshare personal information or misunderstand the visibility and retention of what they submit.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The organization management commands perform high-impact administrative actions such as inviting admins, approving requests, changing roles, and removing members, but the workflow includes no warning to verify identity, authorization, or consequences. This increases the risk of accidental privilege changes or account access disruptions, especially in shared or scripted operational contexts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The applicant review section shows bulk accept/reject operations affecting multiple applicants at once, yet it provides no caution about validation, review, or irreversible business consequences. In practice, this can cause large-scale mistaken actions, unfair applicant handling, and unintended disclosure through downstream channel creation or messaging.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

Although the section notes auto-marks as read, it is framed as part of the title rather than a clear caution that viewing the message changes message state. Because this affects user-visible read status, a more explicit warning would better disclose the side effect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The channels read-all command changes read status for every message in a channel, but the documentation provides no warning about the scope of the change. Even though not destructive in the deletion sense, it is a bulk, user-visible state modification that should be disclosed clearly.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.