Back to skill

Security audit

AllOurThings

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to manage household inventory as advertised, but it should go through Review because it runs unpinned npm packages and exposes deletion of personal records without explicit confirmation guidance.

Install only if you trust the npm packages and are comfortable granting the MCP server access to the configured inventory vault. Prefer a pinned reviewed package version, run it with filesystem access limited to ALLOURTHINGS_DATA_DIR, and require explicit confirmation before deleting items or attachments.

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:26
Finding

Unpinned Third-Party Packages Executed Through npx

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:26-27
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Vulnerable configuration:

json
"command": "npx",
"args": ["-y", "@allourthings/mcp-server"],

Additional affected examples (SKILL.md:121-127):

markdown
AllOurThings also ships a standalone CLI (`@allourthings/cli`) for scripting
and automation outside of an AI session:

```bash
npx @allourthings/cli list
npx @allourthings/cli search "bosch"
npx @allourthings/cli add --name "Dyson V15" --category "Appliances"
text

### Technical Analysis

The MCP configuration invokes `npx` with an unversioned npm package name. If the package is unavailable locally, `npx` may retrieve the package from the configured npm registry and execute its package-controlled code. Because no exact version or integrity value is specified, the code ultimately executed can change after the Skill has been reviewed.

The `-y` option suppresses the installation confirmation for the MCP package, making this behavior automatic. The documented CLI commands likewise execute an unpinned version, although they do not include `-y`.

Exploitation depends on compromise or malicious control of the package release, maintainer account, registry resolution, or transitive dependency chain. The supplied project contains only `SKILL.md`; the external package implementations and their transitive dependencies were not available for inspection.

### Attack Path

1. An attacker compromises the npm package, its publisher account, or a dependency resolved by a future package release.
2. The attacker publishes a malicious release under `@allourthings/mcp-server` or `@allourthings/cli`.
3. The MCP configuration launches:
   ```bash
   npx -y @allourthings/mcp-server
   ```
   Alternatively, a user runs one of the documented unversioned CLI commands.
4. `npx` resolves and downloads the current registry 
...[truncated 1095 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin every executable npm package to an exact reviewed version, for example:

    json
    "command": "npx",
    "args": ["--yes", "@allourthings/mcp-server@X.Y.Z"]
    

    Replace X.Y.Z with a verified release and update it only through a controlled review process.

  2. Pin the CLI examples similarly:

    bash
    npx @allourthings/cli@X.Y.Z list
    npx @allourthings/cli@X.Y.Z search "bosch"
    npx @allourthings/cli@X.Y.Z add --name "Dyson V15" --category "Appliances"
    
  3. Prefer a preinstalled dependency managed through a lockfile and a reproducible installation workflow. Commit the lockfile and use immutable or frozen-lockfile installation modes.

  4. Verify package provenance, signatures or attestations where supported, and registry integrity metadata before approving upgrades. Review relevant transitive dependency changes.

  5. Avoid automatic confirmation through -y when interactive approval is practical. If unattended operation is required, combine exact version pinning with an approved package cache or internal registry.

  6. Run the MCP process with least privilege and sandbox it where possible. Restrict filesystem access to the intended vault directory and limit unnecessary environment variables and network access.

  7. Establish dependency monitoring and a controlled upgrade process so security fixes can be adopted without automatically accepting unreviewed releases.

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

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill exposes destructive operations like delete_item and delete_attachment but provides no guidance to require explicit user confirmation before invoking them. In an agent setting, ambiguous prompts or model mistakes could cause irreversible deletion of inventory records and associated receipts, photos, or warranty documents.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The skill documentation instructs use of npx @allourthings/cli without a pinned version, which causes the latest package version to be fetched at execution time. This creates a supply-chain risk: a compromised publisher account, malicious dependency update, or unexpected breaking release could execute arbitrary code on the user's system.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

This example again uses npx @allourthings/cli without version pinning, meaning execution depends on whatever package version is current at runtime. In a skill handling sensitive household inventory and documents, arbitrary code execution via a poisoned package could expose private records, receipts, and attachment data.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The unpinned npx @allourthings/cli invocation allows remote code from the npm registry to be resolved dynamically at use time. Because the skill targets a local vault and synced folders, exploitation could lead to tampering with or exfiltration of inventory JSON files and attached documents.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.