T03 · Remote Payload Retrieval and Execution
- Location
tools/SKILL.md:24- Finding
Unverified Remote Foundry Installer Is Piped Directly into Bash
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is mostly coherent Hyperliquid development documentation, but it gives conflicting instructions for a real fund-transfer bridge operation and includes risky install guidance.
Review and correct the HYPE bridge instructions against current official Hyperliquid documentation before using this skill for any wallet, bridge, contract, or UI flow. Run remote installers and package installs only in a clean development environment without production wallet keys or sensitive credentials, and test all transaction flows on testnet first.
tools/SKILL.md:24Unverified Remote Foundry Installer Is Piped Directly into Bash
frontend-playbook/SKILL.md:24Unpinned Third-Party Dependencies and Package-Executed Setup Commands
architecture/SKILL.md:181Contradictory HYPE Bridge-Direction Instructions Can Cause Incorrect Fund Transfers
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.gitignore must include:
.env
.env.local
.env.*.local
Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.
[ ] All unit tests pass locally
[ ] Fuzz tests run with at least 10,000 runs (FOUNDRY_FUZZ_RUNS=10000)
[ ] Invariant tests find no violations
[ ] Contract compiles without warnings
[ ] No hardcoded addresses — use constructor params or config files
[ ] Deployment script tested locally with `--dry-run`
[ ] Contract verified on testnet explorer after deploy
The command pipes a remotely fetched script directly into bash, which allows arbitrary code execution if the remote server, transport, or install script is compromised. In a security context this is a well-known unsafe installation pattern because users execute unaudited code immediately on their machine.
# Install Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup
# Initialize a project
The '| bash' construct is the dangerous part of the install command because it chains network retrieval directly into shell execution without review. This reduces user opportunity to inspect the payload and makes compromise of the upstream source immediately exploitable on developer systems.
# Install Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup
# Initialize a project
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Perp markets — use asset index from meta.universe:
meta = requests.post('https://api.hyperliquid.xyz/info',
json={'type': 'meta'}).json()
# ETH perp is typically at index 1
# BTC perp is typically at index 0