Back to skill

Security audit

Anylist

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward AnyList shopping-list helper, but users should be careful with the global npm install, account password handling, and delete-style commands.

Before installing, verify the npm package source, consider pinning a reviewed anylist-cli version, avoid storing your AnyList password in shared shell history or committed files, and ask the agent to confirm before removing items or clearing checked items.

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

Unpinned Global Installation of a Third-Party npm Package

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 14–18
Vulnerability Type: Unpinned and globally installed third-party dependency
Risk Level: Medium

Vulnerable Code:

markdown
## Installation

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

### Technical Analysis

The installation instructions direct users to install the latest available version of `anylist-cli` globally without specifying a reviewed version or verifying package integrity.

Because npm packages can execute lifecycle scripts during installation, installing an unpinned package may execute code that was not present when this Skill was audited. The `-g` option also places the package executable in a shared command path, increasing the package's reach beyond an isolated project environment.

The audit did not establish that `anylist-cli` is currently malicious. The vulnerability is the unsafe dependency acquisition model: package ownership compromise, a malicious future release, or another npm supply-chain incident could change the effective code executed by users without requiring any modification to this Skill.

### Attack Path

1. An attacker compromises the npm publisher account, package repository, or release process associated with `anylist-cli`.
2. The attacker publishes a malicious package version containing an npm lifecycle script or altered CLI implementation.
3. A user follows the Skill's unpinned installation instruction:
   ```bash
   npm install -g anylist-cli
   ```
4. npm resolves and downloads the attacker-controlled release.
5. Malicious lifecycle code may execute during installation with the privileges of the installing user.
6. The globally installed executable may subsequently execute attacker-controlled behavior whenever the documented `anylist` commands are invoked.

### Impact Assessment

Successful exploitation could permit arbitrary code execution with the privileges of the user performing the inst
...[truncated 565 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin anylist-cli to a specific version that has been reviewed:
    bash
    npm install --global anylist-cli@<reviewed-version>
    
  2. Document the expected package source, publisher, version, and integrity hash so users can verify provenance before installation.
  3. Prefer a project-local or otherwise isolated installation instead of -g, reducing exposure of the shared command environment.
  4. Use a lockfile and npm integrity metadata where the deployment model permits it.
  5. Review the selected package version, including its dependency tree and npm lifecycle scripts.
  6. Consider installation with lifecycle scripts disabled when compatible:
    bash
    npm install --ignore-scripts anylist-cli@<reviewed-version>
    
  7. Establish a controlled update process in which new package versions are audited before the pinned version is changed.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The trigger description is broad enough to activate on routine shopping or grocery-related conversation, which can cause the agent to invoke this skill when the user did not clearly intend to interact with AnyList. In a skill that can read and modify remote lists, over-broad routing increases the chance of unintended data access or list changes.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documented commands include destructive operations like remove and clear without any warning, guardrails, or confirmation guidance. In an agent setting, this makes accidental or overly eager execution more dangerous because user data can be deleted or altered irreversibly through natural-language misunderstandings.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The setup instructions encourage storing account credentials in environment variables without any warning about secret exposure, shell history, process inspection, or logging. While common, this is still risky in shared or multi-user environments and may lead to credential leakage if operators copy these examples directly.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.