Skip to content

fix(allium-x402): fetch the installer over HTTPS (LABS-255) - #94

Open
kevarifin14 wants to merge 1 commit into
mainfrom
kevinarifin/labs-255
Open

fix(allium-x402): fetch the installer over HTTPS (LABS-255)#94
kevarifin14 wants to merge 1 commit into
mainfrom
kevinarifin/labs-255

Conversation

@kevarifin14

Copy link
Copy Markdown
Contributor

Closes LABS-255.

The documented install is a plaintext fetch piped straight into a shell:

curl -sSL http://agents.allium.so/cli/install.sh | sh

Anyone able to MITM that first hop gets arbitrary code execution on the user's machine.

Why the existing redirect doesn't already cover it

agents.allium.so does 302 httphttps. That doesn't help: the redirect is discovered over plaintext, so an attacker on the path answers the first request instead of the real server, and | sh runs whatever came back. The redirect only protects users who were never being attacked.

Verified the direct HTTPS URL works, so there's no behaviour change for anyone else:

https -> HTTP 200, final: https://agents.allium.so/cli/install.sh   (no redirect)
http  -> HTTP 200, final: https://agents.allium.so/cli/install.sh   (302 to https)

Two occurrences updated — the install: frontmatter and the CLI row in the reference table.

Deliberately not changed

grep http:// skills/ also matches:

  • skills/moonpay-trading-automation/SKILL.md:88
  • skills/moonpay-price-alerts/SKILL.md:96

Both are http://www.apple.com/DTDs/PropertyList-1.0.dtd in plist DOCTYPE declarations. Those are XML public identifiers, not URLs that get fetched — rewriting them to https would be wrong and could break plist parsing. Flagging so a future sweep doesn't "fix" them.

Follow-up needed in the other repo

moonpay-cli/src/content/skills-manifest.json is generated from this repo (scripts/build-skills.ts reads ../moonpay-skills) and currently embeds the http:// string, which is what moonpay.com/skills serves. This PR alone does not fix the website — the manifest needs regenerating in moonpay-cli once this merges. Happy to raise that PR then.

The documented install was 'curl -sSL http://agents.allium.so/cli/install.sh | sh'
— a plaintext fetch piped straight into a shell, so anyone able to MITM that
first hop gets arbitrary code execution on the user's machine.

agents.allium.so already serves the script over HTTPS directly (verified: 200,
no redirect). The http URL only 302s to https, which does not help: the
redirect is discovered over plaintext, and by then an attacker on the path has
already had the chance to answer instead.

Left the two 'http://www.apple.com/DTDs/PropertyList-1.0.dtd' strings in
moonpay-trading-automation and moonpay-price-alerts alone — those are plist
DOCTYPE identifiers, not URLs that get fetched, and rewriting them would be
wrong.
@kevarifin14
kevarifin14 requested a review from a team as a code owner September 10, 2026 15:14
@linear-code

linear-code Bot commented Sep 10, 2026

Copy link
Copy Markdown

LABS-255

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant