Back to skill

Security audit

agent-email-inbox

Security checks for vulnerabilities and agentic risk

Overview

This skill appears benign: it openly guides setup of an Anima agent inbox, with clear external service use and basic consent safeguards.

Install only if you are comfortable creating an Anima account/inbox and sending signup details to Anima. Review the default vault creation, keep the API key in a proper secret store, and prefer the API/MCP path or run the optional npm CLI in a minimal workspace if you want to reduce supply-chain exposure.

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 (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:44
Finding
Execution of an Unverified Third-Party npm Dependency## Vulnerability Details **File Location**: `SKILL.md`, lines 44-49 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium **Vulnerable code:** ```bash CLI alternative (pin 0.9.0): ```bash npm install @anima-labs/cli@0.9.0 --save-exact npx anima init ``` ``` ### Technical Analysis The skill directs users to download, install, and execute the third-party npm package `@anima-labs/cli`. Pinning the package to version `0.9.0` improves reproducibility, but it does not authenticate the package contents or establish that the dependency has been security-reviewed. No package source, lockfile integrity record, checksum, signature, or restricted execution procedure is included in the audited project. npm installation can execute package lifecycle scripts, while `npx anima init` directly runs code supplied by the dependency. Such code ordinarily inherits the invoking user's access to local files, environment variables, credentials, and network resources. The dependency implementation was not included in the project and therefore could not be audited. This finding identifies the unsafe dependency execution path; it does not establish that the referenced package is currently malicious. ### Attack Path 1. A user or agent follows the documented CLI alternative. 2. `npm install` retrieves version `0.9.0` and its transitive dependencies from the configured npm registry. 3. npm may execute lifecycle scripts supplied by those packages during installation. 4. The user runs `npx anima init`, executing the downloaded package with the user's privileges. 5. If the package, a transitive dependency, the registry account, or the resolution environment is compromised, attacker-controlled code can access resources available to the invoking process. ### Impact Assessment A compromised dependency could read or modify files accessible to the current user, inspect environment variables and locally available secrets, make ...[truncated 357 chars]
Remediation
## Remediation Suggestions - Require explicit user approval immediately before installing or executing the CLI. - Publish or reference auditable source code for the exact CLI release. - Provide a lockfile containing integrity metadata for the package and all transitive dependencies. - Document the expected registry and prevent dependency resolution through untrusted registry configuration. - Verify a signed release artifact or documented cryptographic checksum before execution. - Where feasible, install with lifecycle scripts disabled and enable only specifically reviewed scripts. - Run initialization in a sandbox with minimal filesystem access, a restricted environment, no unrelated credentials, and limited outbound network access. - Prefer documented API requests when they can perform the task without installing executable third-party code.

other

Note
Location
SKILL.md:29
Finding
Default Provisioning of an Unnecessary External Credential Vault## Vulnerability Details **File Location**: `SKILL.md`, lines 29-35 **Vulnerability Type**: `other: Excessive External Service Provisioning` **Risk Level**: Low **Vulnerable code:** ```bash curl -X POST https://api.useanima.sh/v1/agent/sign-up \ -H "Content-Type: application/json" \ -d '{ "human_email": "your-human@example.com", "username": "preferred-username", "provision_vault": true }' ``` ### Technical Analysis The documented signup request enables `provision_vault` by default even though the skill's primary task is creating and operating an email inbox. A credential vault is a separate sensitive capability and is not shown to be necessary for the email workflow. Automatically provisioning this additional service expands the external trust boundary and creates a repository intended to hold sensitive credentials. Although the skill requires explicit approval before submitting the human's email address, it does not require separate informed approval for creating the vault. The audited content does not show that credentials are automatically inserted into the vault, so the immediate exposure is limited to unnecessary service creation and the associated future attack surface. ### Attack Path 1. The user approves submission of their email address for inbox signup. 2. The agent sends the documented request with `provision_vault` set to `true`. 3. An external credential vault is created alongside the requested inbox. 4. The user may later store credentials in that vault under the assumption that it was required for email operation. 5. Compromise of the service account, API key, or vault service could then expose credentials placed in this unnecessarily provisioned repository. ### Impact Assessment Provisioning the vault does not itself grant local system privileges or demonstrate immediate credential disclosure. It expands the account's sensitive functionality and creates an additional target ...[truncated 252 chars]
Remediation
## Remediation Suggestions - Set `provision_vault` to `false` in the default email-inbox signup example. - Treat vault creation as a separate optional action rather than part of inbox provisioning. - Obtain explicit, informed user approval immediately before enabling the vault. - Explain what data the vault stores, its retention and deletion behavior, and which identities or API keys can access it. - Apply least-privilege access controls and separate vault authorization from ordinary email operations where the service supports it. - Provide instructions for deleting an accidentally provisioned or unused vault.
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 (3)

External Transmission

Medium
Category
Data Exfiltration
Content
Get an **explicit OK** from your human before submitting their email. Never spam or phish.

```bash
curl -X POST https://api.useanima.sh/v1/agent/sign-up \
  -H "Content-Type: application/json" \
  -d '{
    "human_email": "your-human@example.com",
Confidence
60% 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
Get an **explicit OK** from your human before submitting their email. Never spam or phish.

```bash
curl -X POST https://api.useanima.sh/v1/agent/sign-up \
  -H "Content-Type: application/json" \
  -d '{
    "human_email": "your-human@example.com",
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Static analysis

No suspicious patterns detected.