Back to skill

Security audit

expanso

Security checks for vulnerabilities and agentic risk

Overview

This skill has a coherent Expanso Edge purpose, but its installer can run mutable remote shell scripts and its cloud/data-boundary disclosures are too broad for a security-sensitive local runtime.

Review this carefully before installing. Do not run the curl-to-shell commands unless you are comfortable trusting the live get.expanso.io installer contents at install time; prefer a signed, pinned, checksum-verified package if available. Treat the bootstrap token as sensitive, rotate or revoke it if exposed, and confirm what Expanso Cloud can see or control before using this with private data.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (2)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:17
Finding
Unverified Remote Installer Scripts Executed Directly by the Shell## Vulnerability Details **File Location**: `SKILL.md:17-18` and `SKILL.md:49-52` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```yaml install: - curl -fsSL https://get.expanso.io/edge/install.sh | bash - curl -fsSL https://get.expanso.io/cli/install.sh | sh ``` ```bash # Install Expanso Edge (local runtime) curl -fsSL https://get.expanso.io/edge/install.sh | bash # Install Expanso CLI (deploy to cloud) curl -fsSL https://get.expanso.io/cli/install.sh | sh ``` ### Technical Analysis The skill metadata and setup instructions download mutable scripts from `get.expanso.io` and pass their contents directly to `bash` or `sh`. No exact version, immutable artifact, checksum, or cryptographic signature is specified. The scripts are not included in the reviewed project, so their behavior and required privileges cannot be independently audited. HTTPS protects the connection in transit but does not prevent malicious content from being served if the hosting infrastructure, DNS, domain, deployment process, or publisher account is compromised. Direct piping also prevents a normal inspection step before execution. Inclusion under the metadata `install` section increases the risk because a compatible skill manager may execute these commands automatically. Installing the Edge runtime and CLI supports the declared functionality, but direct execution of unverified, mutable remote content is not the minimum-risk mechanism needed to install those components. A pinned and cryptographically verified release artifact would achieve the same objective with a narrower trust boundary. ### Attack Path 1. An attacker compromises the installer domain, DNS resolution, hosting environment, publication pipeline, or an authorized publisher account. 2. The attacker modifies either `edge/install.sh` or `cli/install.sh` to include arbitrary shell commands. 3. A user or automated ...[truncated 1176 chars]
Remediation
## Remediation Suggestions 1. Replace `curl | bash` and `curl | sh` with downloads of versioned release artifacts from immutable URLs. 2. Pin an exact installer or package version rather than retrieving a mutable latest version. 3. Publish SHA-256 checksums and, preferably, cryptographic signatures through an independently protected channel. 4. Download the artifact first, verify its checksum or signature, and only then execute or install it. 5. Prefer a trusted package manager whose repository metadata and packages are cryptographically signed. 6. If a shell installer remains necessary, store it locally for review and invoke it as a separate step. 7. Document all files, network access, services, and permissions required by the installers. 8. Run installation with an unprivileged account by default and request narrowly scoped elevation only for operations that strictly require it. 9. Ensure automated skill installation does not execute mutable remote commands without explicit user approval.

T03 · Remote Payload Retrieval and Execution

Error
Location
INSTALL.txt:9
Finding
Quick-Install Guide Executes Mutable Remote Scripts Without Verification## Vulnerability Details **File Location**: `INSTALL.txt:9-12` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```bash # Install Expanso Edge (local runtime) curl -fsSL https://get.expanso.io/edge/install.sh | bash # Install Expanso CLI (deploy to cloud) curl -fsSL https://get.expanso.io/cli/install.sh | sh ``` ### Technical Analysis The quick-install guide instructs users to stream two externally hosted scripts directly into command interpreters. The commands provide no version pinning, checksum validation, signature verification, or opportunity to inspect the downloaded scripts. Because the effective payload is controlled outside this project, it can change after the skill has been reviewed. The remote installers may be legitimate, but their trustworthiness cannot be established from the audited files. Compromise of any component in the remote publication chain would turn the documented installation process into an arbitrary code-execution channel. This mechanism exceeds the minimum risk necessary for the declared installation task. Installing the required runtime and CLI is necessary for the documented workflow, but executing mutable and unverified shell content is not. ### Attack Path 1. An attacker gains control over an installer response through compromise of the domain, DNS, hosting platform, release pipeline, or publisher credentials. 2. The attacker replaces a legitimate installer response with a script containing malicious commands. 3. A user follows `INSTALL.txt` and runs one of the supplied commands. 4. The downloaded response is executed immediately by `bash` or `sh`, without integrity verification. 5. The payload operates with the invoking account's privileges and can access all resources available to that account. 6. The payload may steal credentials, modify local tools or configuration, retrieve additional malware, or create persistence ...[truncated 568 chars]
Remediation
## Remediation Suggestions 1. Remove direct shell pipelines from the quick-install instructions. 2. Provide exact, versioned package or release URLs. 3. Supply a trusted checksum and cryptographic signature for every distributed artifact. 4. Require users to download and verify the artifact before installation. 5. Publish explicit verification commands and fail safely if verification does not succeed. 6. Prefer signed operating-system packages or another package manager with authenticated repository metadata. 7. State that installation should occur without administrative privileges unless a documented operation specifically requires elevation. 8. Pin remotely deployed pipeline definitions to immutable versions and verify their provenance before allowing the local Edge runtime to execute them.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (19)

External Script Fetching

High
Category
Supply Chain
Content
## Step 2: Install Tools

# Install Expanso Edge (local runtime)
curl -fsSL https://get.expanso.io/edge/install.sh | bash

# Install Expanso CLI (deploy to cloud)
curl -fsSL https://get.expanso.io/cli/install.sh | sh
Confidence
98% confidence
Finding
This command downloads a shell script from an external domain and executes it immediately via bash. In the context of an install guide for a cloud-connected runtime, compromise of the distribution path could yield full code execution on the local host and persistence through installed components.

Missing User Warnings

High
Confidence
98% confidence
Finding
The guide tells users to fetch and immediately execute remote shell scripts with no integrity verification, review step, or warning. This creates a direct supply-chain and remote-code-execution risk: if the host, CDN, DNS, TLS trust chain, or publisher account is compromised, arbitrary code runs on the user's machine.

Chaining Abuse

High
Category
Tool Misuse
Content
## Step 2: Install Tools

# Install Expanso Edge (local runtime)
curl -fsSL https://get.expanso.io/edge/install.sh | bash

# Install Expanso CLI (deploy to cloud)
curl -fsSL https://get.expanso.io/cli/install.sh | sh
Confidence
96% confidence
Finding
The use of a shell pipe into bash removes any opportunity for meaningful review and turns content retrieval directly into execution. This pattern is especially dangerous in installation docs because users are primed to run it verbatim, magnifying the blast radius of any upstream compromise.

External Script Fetching

High
Category
Supply Chain
Content
curl -fsSL https://get.expanso.io/edge/install.sh | bash

# Install Expanso CLI (deploy to cloud)
curl -fsSL https://get.expanso.io/cli/install.sh | sh

## Step 3: Get Bootstrap Credentials
1. In Expanso Cloud, go to Settings → Edge Nodes
Confidence
98% confidence
Finding
This command has the same external-script execution risk for the CLI installer, again enabling arbitrary code execution if the remote content is altered or intercepted. Because the CLI is used to deploy jobs to cloud infrastructure, compromise could also expose credentials or tamper with later deployments.

Chaining Abuse

High
Category
Tool Misuse
Content
curl -fsSL https://get.expanso.io/edge/install.sh | bash

# Install Expanso CLI (deploy to cloud)
curl -fsSL https://get.expanso.io/cli/install.sh | sh

## Step 3: Get Bootstrap Credentials
1. In Expanso Cloud, go to Settings → Edge Nodes
Confidence
96% confidence
Finding
Piping the downloaded CLI installer into sh has the same chaining-abuse property: fetched data is immediately trusted as executable code. In this skill's context, that increases danger because the installed tooling interfaces with cloud resources and bootstrap credentials, raising the risk of account compromise as well as host compromise.

External Script Fetching

High
Category
Supply Chain
Content
primaryEnv: EXPANSO_EDGE_BOOTSTRAP_TOKEN
    requires:
      bins:
        - curl
      env:
        - EXPANSO_EDGE_BOOTSTRAP_URL
        - EXPANSO_EDGE_BOOTSTRAP_TOKEN
Confidence
99% confidence
Finding
The manifest's install workflow fetches a remote script over the network and executes it via shell during setup. If the remote host, delivery path, or script content is compromised, installing the skill can lead to arbitrary code execution on the user's machine.

Chaining Abuse

High
Category
Tool Misuse
Content
- EXPANSO_EDGE_BOOTSTRAP_URL
        - EXPANSO_EDGE_BOOTSTRAP_TOKEN
    install:
      - curl -fsSL https://get.expanso.io/edge/install.sh | bash
      - curl -fsSL https://get.expanso.io/cli/install.sh | sh
    config:
      requiredEnv:
Confidence
99% confidence
Finding
Piping network-fetched content directly into bash is a classic command-chaining abuse pattern because it collapses retrieval and execution into one step with no validation barrier. In a skill installation context, this gives any compromise of the fetched content immediate execution privileges on the host.

External Script Fetching

High
Category
Supply Chain
Content
- EXPANSO_EDGE_BOOTSTRAP_TOKEN
    install:
      - curl -fsSL https://get.expanso.io/edge/install.sh | bash
      - curl -fsSL https://get.expanso.io/cli/install.sh | sh
    config:
      requiredEnv:
        - name: EXPANSO_EDGE_BOOTSTRAP_URL
Confidence
99% confidence
Finding
This second installer command repeats the same unsafe pattern by fetching and executing a shell script directly from a remote server. Because it installs a CLI used for cloud deployment, compromise could also affect later pipeline operations and credentials handled by that tool.

Chaining Abuse

High
Category
Tool Misuse
Content
- EXPANSO_EDGE_BOOTSTRAP_TOKEN
    install:
      - curl -fsSL https://get.expanso.io/edge/install.sh | bash
      - curl -fsSL https://get.expanso.io/cli/install.sh | sh
    config:
      requiredEnv:
        - name: EXPANSO_EDGE_BOOTSTRAP_URL
Confidence
99% confidence
Finding
Using '| sh' has the same chaining-abuse risk as '| bash' and provides no opportunity for verification before execution. Because this installs a deployment CLI, abuse could compromise both the local system and any downstream interactions with the cloud service.

External Script Fetching

High
Category
Supply Chain
Content
```bash
# Install Expanso Edge (local runtime)
curl -fsSL https://get.expanso.io/edge/install.sh | bash

# Install Expanso CLI (deploy to cloud)
curl -fsSL https://get.expanso.io/cli/install.sh | sh
Confidence
98% confidence
Finding
The user-facing setup guide instructs direct execution of a remote installer script, creating an obvious remote code execution path if the source or network path is tampered with. Including this in documentation makes the risky behavior more likely to be copied verbatim by users.

Chaining Abuse

High
Category
Tool Misuse
Content
```bash
# Install Expanso Edge (local runtime)
curl -fsSL https://get.expanso.io/edge/install.sh | bash

# Install Expanso CLI (deploy to cloud)
curl -fsSL https://get.expanso.io/cli/install.sh | sh
Confidence
98% confidence
Finding
The documentation normalizes a download-and-execute chain for the Edge runtime, which is dangerous because users often run such commands with full account privileges. Any attacker who can influence the fetched script or its delivery can obtain arbitrary code execution during setup.

External Script Fetching

High
Category
Supply Chain
Content
curl -fsSL https://get.expanso.io/edge/install.sh | bash

# Install Expanso CLI (deploy to cloud)
curl -fsSL https://get.expanso.io/cli/install.sh | sh
```

### 3. Get a Bootstrap Token
Confidence
98% confidence
Finding
This command again executes a fetched remote script without verification, extending the attack surface to another component of the toolchain. In the context of a skill that manages deployments, compromise could enable persistent manipulation of jobs, credentials, or subsequent fetched artifacts.

Chaining Abuse

High
Category
Tool Misuse
Content
curl -fsSL https://get.expanso.io/edge/install.sh | bash

# Install Expanso CLI (deploy to cloud)
curl -fsSL https://get.expanso.io/cli/install.sh | sh
```

### 3. Get a Bootstrap Token
Confidence
98% confidence
Finding
This documented '| sh' pattern repeats the same unsafe execution chain for the CLI component. Since the CLI is later used to deploy remote pipeline definitions, a compromised install can have ongoing security consequences beyond the initial setup.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The instructions place a bootstrap token directly into an environment variable without guidance on secure handling, rotation, or shell-history/process exposure. If the token is leaked through logs, history, screenshots, shared terminals, or process inspection, an attacker may be able to register or control an edge node against the cloud account.

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
The manifest and description emphasize local data processing, but the documented setup requires registering an Edge node with Expanso Cloud and deploying pipelines through that service. This creates a misleading trust boundary: users may assume an entirely local/offline workflow when metadata, configuration, and deployment control are mediated remotely.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The installation instructions pipe remote content directly into a shell, which prevents users from inspecting what will execute and turns compromise of the distribution endpoint or TLS-terminating environment into immediate code execution. The absence of a warning further normalizes an unsafe installation pattern for a security-sensitive runtime.

Intent-Code Divergence

Medium
Confidence
89% confidence
Finding
The statement that API keys and data 'never leave your machine' is too absolute given the same document requires cloud bootstrap, node registration, and cloud-mediated deployment. Even if payload data is processed locally, such claims can cause users to expose sensitive workflows under false assumptions about what information is transmitted remotely.

Vague Triggers

Low
Confidence
81% confidence
Finding
This plain-text file provides general-purpose installation and deployment steps but does not define any explicit trigger phrases, scope boundaries, or exclusion conditions for when the associated skill or workflow should be invoked. Under the vague-trigger rule for text files, the absence of specificity can allow overly broad interpretation of when these instructions apply.

Missing User Warnings

Low
Confidence
81% confidence
Finding
The documentation instructs users to connect the local runtime to Expanso Cloud without clearly warning that registration, deployment metadata, and potentially operational telemetry will be transmitted to a remote service. This is primarily a transparency and informed-consent issue, but it can materially affect users handling sensitive environments.

Static analysis

No suspicious patterns detected.