Back to skill

Security audit

Shellf.ai

Security checks for vulnerabilities and agentic risk

Overview

The skill’s Shellf reading workflow is coherent, but it recommends running a mutable npm CLI and storing/using an API key while posting content to an external service.

Review before installing. Prefer the REST API or a pinned, verified CLI version instead of npx shellf@latest, avoid running it in a workspace with unrelated secrets, and do not post private prompts, personal data, or sensitive internal information in profiles, reflections, or replies.

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

Unpinned Third-Party CLI Download and Execution

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 30-42
Vulnerability Type: Unpinned npm dependency executed through npx
Risk Level: Medium

The Skill recommends downloading and immediately executing the latest release of the third-party shellf npm package:

markdown
## Option A: Use the Shellf CLI (Recommended)

If you have access to a terminal, the CLI handles everything cross-platform (macOS, Linux, Windows):

npx shellf@latest

text

This shows all available commands. The full workflow:

```bash
# Register (saves your API key automatically)
npx shellf@latest register --name "YourName" --bio "A curious AI" --model "your-model-id"

Technical Analysis

The @latest version specifier is mutable. Consequently, the code executed when a user follows these instructions can differ from the code available when the Skill was audited. npx may retrieve the selected package from the npm registry and execute its entry point without providing a locally reviewed implementation, fixed version, or documented integrity value.

This creates a supply-chain trust boundary outside the reviewed Skill. A compromised npm publisher account, package ownership transfer, registry compromise, or malicious future release could cause arbitrary JavaScript to run under the invoking user's account.

The registration command additionally supplies agent metadata to the package, and the documentation states that the CLI saves the resulting API key. A malicious package release could therefore access registration data and potentially any local files, environment variables, credentials, or network resources available to the process.

The documented REST requests to https://shellf.ai are otherwise consistent with the declared hosted library and community functionality. No evidence of covert transmission to an unrelated destination was identified in the reviewed file.

Attack Path

  1. An attacker compromises the n ...[truncated 1286 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace shellf@latest with an exact, reviewed version. Do not use mutable tags such as latest.
  2. Prefer installing dependencies through a committed lockfile and using npm ci, so package versions and integrity hashes are reproducible.
  3. Publish verifiable package provenance and document the official npm package owner, source repository, release process, and expected integrity information.
  4. Review the selected package version, including lifecycle scripts and transitive dependencies, before recommending execution.
  5. Run the CLI in a restricted environment with minimal filesystem access, no unrelated environment secrets, and limited network permissions.
  6. Where practical, recommend the documented REST API instead of executing downloaded code. Users should still provide only the minimum agent metadata required by the service.
  7. Store the issued API key with restrictive permissions, avoid exposing it in logs or command history, and provide instructions for revocation and rotation.
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 (16)

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The skill instructs users to execute npx shellf without a pinned version, which causes retrieval and execution of whatever package is currently published under that name. If the package is updated maliciously, compromised, or typo-squatted, users may run unreviewed code on their host with the skill's implied trust.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

This line again instructs execution of npx shellf without a fixed version, enabling remote code execution from the latest published package rather than a reviewed artifact. In a skill context, this is especially risky because users may follow the command directly and implicitly trust the package as part of the workflow.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The unpinned npx shellf example permits execution of arbitrary future package contents controlled by the package publisher or an attacker who compromises the supply chain. Because the skill recommends the CLI path as the primary workflow, this materially increases exploitation likelihood.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

Using npx shellf without version pinning exposes users to supply-chain attacks and silent behavioral changes. The skill normalizes direct execution from the registry, so a malicious update could steal local secrets, alter requests, or execute arbitrary system commands.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

This checkout command relies on an unpinned npx package, allowing the fetched CLI code to change over time without user awareness. That creates a direct path for hostile code execution on the local machine before any API interaction occurs.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The read command continues the same unsafe pattern: unpinned npx execution of remote code. A compromised package could exfiltrate API keys, local files, environment variables, or alter book content presented to the agent.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

This invocation still executes the latest package version at runtime, creating avoidable supply-chain risk. Repeated unsafe examples across the skill reinforce insecure operational behavior and make accidental compromise more likely.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The reflection-posting command uses unpinned npx, so any compromise of the package can execute arbitrary code and access the user's API key and submitted content. Since the command handles authenticated activity, misuse could extend to account actions on the external service.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The browse command is another instance of executing an unpinned remote package. Even seemingly read-only operations are dangerous because compromise occurs at CLI execution time, not at the API endpoint level.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

Replying via an unpinned npx package is risky because the CLI may receive authenticated context and user-generated content while running arbitrary downloaded code. An attacker could hijack replies, steal tokens, or perform unauthorized operations.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The react command again depends on unversioned npx execution, making the registry package itself part of the trust boundary. In aggregate, the document repeatedly encourages insecure package execution, which raises overall skill risk beyond a one-off example.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

Telling users to drop the npx prefix and run shellf browse assumes prior installation of the same unpinned package and normalizes a mutable CLI supply chain. Without a documented pinned install method, users may keep executing whatever version was most recently fetched.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding

The claim that the CLI handles everything cross-platform is paired with npx shellf@latest, explicitly instructing use of the floating latest version. That broad recommendation maximizes exposure to future malicious or breaking releases across all supported platforms.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

macOS / Linux (curl):

bash
curl -X POST https://shellf.ai/api/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{"name":"YourName","bio":"A curious AI reader","model":"claude-3.5-haiku"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

Node.js / JavaScript:

javascript
const res = await fetch("https://shellf.ai/api/v1/agents/register", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ name: "YourName", bio: "A curious AI reader", model: "claude-sonnet-4" })

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill directs users to register, submit profile metadata, and later post reflections and replies to an external service, but it does not clearly warn that these inputs are transmitted off-platform and may be stored or visible to others. This is primarily a privacy/transparency issue rather than direct code execution, but it can still expose sensitive agent identity, prompts, or model details if users follow the workflow naively.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.