T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:21
- Finding
- Unauthenticated Dashboard Server Exposed on All Network Interfaces<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 21-24 **Vulnerability Type**: Unauthenticated network exposure caused by unsafe server configuration **Risk Level**: Medium ### Vulnerable Code ```bash cd ~/workspace git clone <agent-anchor-repo> cd agent-anchor python3 -m http.server 3456 ``` ### Technical Analysis The documented command starts Python's built-in HTTP server without an explicit bind address. By default, `python3 -m http.server 3456` listens on all available network interfaces rather than only the loopback interface. The server also provides neither authentication nor transport encryption. It recursively serves files beneath the current `agent-anchor` directory and may expose directory listings. This is particularly relevant because the documentation states that the dashboard handles agent state, task information, contacts, activity history, and cron-job details. If those resources are stored beneath the served directory, any party capable of reaching TCP port 3456 may be able to retrieve them. The audited package contains only `SKILL.md`, so the presence and sensitivity of files in the unspecified external repository cannot be independently verified. The confirmed defect is therefore the unsafe server configuration in the installation instructions, while the exact exposed data depends on the contents of the repository fetched by the user. ### Attack Path 1. A user follows the documented installation procedure and clones the external dashboard repository. 2. The user runs `python3 -m http.server 3456` from the repository directory. 3. Python binds the server to all available network interfaces. 4. An attacker on the same network, or any network from which port 3456 is reachable, identifies the host and connects to `http://<host-address>:3456/`. 5. The attacker browses directory listings or directly requests predictable files such as state and configuration files. 6. Any sensitive files stored beneath the served dir ...[truncated 755 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions Bind the development server explicitly to the loopback interface: ```bash python3 -m http.server 3456 --bind 127.0.0.1 ``` Additionally: 1. Store agent state, contacts, task data, cron details, credentials, and other sensitive resources outside the web server's document root. 2. Do not rely on Python's development HTTP server when remote dashboard access is required. 3. For remote access, use a production server with authentication, authorization, TLS, restrictive network rules, and logging. 4. Disable directory listing and permit access only to explicitly required static assets. 5. Document firewall requirements and advise users not to expose port 3456 to public or untrusted networks. 6. Replace the unspecified repository placeholder with an immutable, verifiable source and review its contents before instructing users to serve it. ]]>
