T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:18- Finding
Unverified Remote Installation Script Is Piped Directly to Bash
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears purpose-aligned, but its install and network setup require careful review before use.
Review this skill before installing. Avoid the remote curl-to-bash flow; use only inspected local setup code, verify downloaded binaries, and run the phone node only on a trusted isolated network. Do not send sensitive prompts unless traffic is protected by an authenticated encrypted channel or trusted overlay network.
SKILL.md:18Unverified Remote Installation Script Is Piped Directly to Bash
setup.sh:15Mutable Ollama Executable Is Downloaded and Run Without Integrity Verification
setup.sh:38Ollama Service Is Exposed on All Interfaces Without Access Controls
phone_nodes.py:76Inference Prompts and Responses Are Transmitted Over Plaintext HTTP
Fetching and executing an external script from albionwakes.com creates a supply-chain risk: if the server, DNS, TLS termination, or hosting account is compromised, arbitrary code will run on the target phone. Because the phone is being turned into a network-reachable inference worker, compromise could also be used to pivot into the local Wi‑Fi environment or tamper with model-serving behavior.
curl -s https://albionwakes.com/phone_setup.sh | bash
bash ~/start_node.sh
The use of '| bash' is a classic command-chaining anti-pattern that removes any opportunity for the user or tooling to inspect the downloaded content before execution. This makes transient compromise especially dangerous, since a single modified response from the remote endpoint results in immediate arbitrary shell execution.
curl -s https://albionwakes.com/phone_setup.sh | bash
bash ~/start_node.sh
The usage line fetches a script from a remote domain and executes it immediately in the shell, which is a classic arbitrary code execution risk. The danger is increased because the URL uses plain HTTP rather than HTTPS, allowing tampering in transit as well as server-side compromise to deliver malicious code.
# After this runs, Pi can route inference jobs to this phone.
#
# Usage: paste this URL in Termux browser, or:
# curl -s http://albionwakes.com/phone_setup.sh | bash
set -e
Piping network-fetched content directly into bash bypasses review and turns any upstream compromise or network interception into immediate shell execution. Because this setup script performs installation and persistence-related actions, the resulting blast radius on the device is substantial.
# After this runs, Pi can route inference jobs to this phone.
#
# Usage: paste this URL in Termux browser, or:
# curl -s http://albionwakes.com/phone_setup.sh | bash
set -e
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
"aarch64" ]; then
OLLAMA_URL="https://github.com/ollama/ollama/releases/latest/download/ollama-linux-arm64"
else
OLLAMA_URL="https://github.com/ollama/ollama/releases/latest/download/ollama-linux-amd64"
fi
mkdir -p $HOME/bin
wget -q -O $HOME/bin/ollama "$OLLAMA_URL"
chmod +x $HOME/bin/ollama
export PATH="$HOME/bin:$PATH"
# Persist PATH
grep -q 'albion-node' $HOME/.bashrc 2>/dev/null || echo '# albion-node' >> $HOME/.bashrc
grep -q '$HOME/bin' $HOME/.bashrc 2>/dev/null || echo 'export PATH="$HOME/bin:$PATH"' >> $HOME/.bashrc
echo "Pulling default model (qwen2.5:0.5b — 394MB)..."
$HOME/bin/ollama pull qwen2.5:0.5b
# Write a startup script
cat > $HOME/start_node.sh << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash
export PATH="$HOME/bin:$PATH"
export OLLAMA_HOST=0.0.0.0:11434
echo "Starting Ollama node on port 11434..."
ollama serve
EOF
chmod +x $HOME/start_node.sh
echo ""
echo "=== Done ==="
echo ""
echo "To start the node:"
echo " bash ~/start_node.sh"
echo ""
echo "T
The skill instructs users to execute a remotely hosted shell script directly via curl-to-bash, which gives the remote server immediate code execution on the Android Termux environment without inspection, pinning, or integrity verification. In this context, the script provisions an inference node and could install backdoors, exfiltrate local data, or expose the device and adjacent network resources.
The module sends full chat messages to arbitrary URLs stored in the local node registry over plain HTTP, with no authentication, encryption, or trust validation of the destination. If an attacker can modify the registry, control the network, or register a malicious node, they can intercept sensitive prompts/responses or impersonate a healthy inference endpoint.
if system_override:
msgs = [{'role': 'system', 'content': system_override}] + [m for m in msgs if m.get('role') != 'system']
try:
r = requests.post(url, json={
'model': model, 'messages': msgs, 'stream': False,
'options': {'temperature': 0.7, 'num_predict': 1024},
}, timeout=CALL_TIMEOUT)
The code sends the full messages payload, and optionally a system override, over HTTP to configured phone nodes via requests.post. While network transmission is core functionality here, this file provides no user-facing warning in comments, docstrings, or logs that conversational content will be sent to external devices on the local network.
The script explicitly instructs users to execute a remotely hosted script directly via curl-to-bash, eliminating any opportunity to inspect the content before execution. In this context, that remote script performs package installation, downloads a binary, alters shell startup files, and prepares a network-reachable service, so compromise of the hosting site or traffic path could immediately lead to arbitrary code execution on the device.
The script downloads and runs substantial third-party software, pulls a model, and creates a startup script that binds the service to 0.0.0.0, making it network-accessible, yet provides no meaningful safety warning about exposure or trust assumptions. In a mobile/Termux context, exposing a local inference service to the network can unintentionally widen the attack surface and enable unauthorized access from the local network.
The script silently appends PATH changes to ~/.bashrc, creating persistent environment modification without clear prior consent. While not inherently malicious here, silent persistence reduces transparency and can have unintended side effects or normalize unsafe installation behavior.