T06 · System Persistence
- Location
- SKILL.md:234
- Finding
- Persistent Third-Party Residential Proxy Node<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:234-239` **Additional Locations**: `README.md:177-183`, `REWARDS.md:43-51`, `earn/DOCKER.md:5-20`, `earn/NODE-AGENT.md:9-25` **Vulnerability Type**: Persistent externally controlled network service **Risk Level**: High ### Vulnerable Code ```bash ## 🐳 Earn Free Proxy Credits Share unused bandwidth → earn proxy credits. **1 GB shared = 1 GB of proxy access.** docker run -d --name iploop-node --restart=always ultronloop2026/iploop-node:latest ``` The Docker Compose instructions provide equivalent persistence: ```yaml services: iploop-node: image: ultronloop2026/iploop-node:latest container_name: iploop-node restart: always ``` ### Technical Analysis The documented command starts a detached third-party container with an `always` restart policy. The node connects to `gateway.iploop.io` and relays third-party HTTP/HTTPS proxy requests through the user's residential Internet connection. The restart policy causes the service to resume after Docker daemon restarts and system reboots. This behavior crosses session boundaries and is not necessary for the Skill's primary declared function of fetching user-selected URLs through an upstream proxy. Although the bandwidth-sharing feature is described as opt-in, its security consequences are understated. The bundled documentation claims that the node is safe and cannot access local resources, but the reviewed repository does not contain the node implementation or image definition needed to verify those claims. ### Attack Path 1. A user or Agent follows the prominently advertised “earn credits” instructions. 2. Docker retrieves the externally maintained `ultronloop2026/iploop-node:latest` image. 3. The container starts in the background and connects to the IPLoop gateway. 4. The gateway assigns third-party proxy traffic to the node. 5. That traffic exits through the user's public residential IP address. 6. The `--restart=always` policy r ...[truncated 943 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove bandwidth-sharing installation instructions from the core URL-fetching Skill and distribute the node as a separate, explicitly selected product. 2. Do not use `--restart=always` by default. Prefer no restart policy or `--restart=on-failure` with a bounded retry count. 3. Require explicit informed consent before installation, clearly explaining that arbitrary third-party traffic will exit through the user's IP address. 4. Document complete shutdown and removal commands: ```bash docker stop iploop-node docker rm iploop-node docker image rm ultronloop2026/iploop-node ``` 5. Apply CPU, memory, process, and bandwidth limits. 6. Publish the container source, build process, security model, destination restrictions, and independent audit results. 7. Restrict relay destinations and block loopback, link-local, private, metadata-service, and other sensitive address ranges. 8. Provide transparent traffic accounting, abuse controls, revocation, and an emergency kill switch. ]]>
