T05 · Unauthorized Access and Privilege Escalation
Error
- Location
- scripts/install_ubuntu_24_mvp.sh:23
- Finding
- Persistent Root-Equivalent Access Through Docker Service and Group Membership<![CDATA[ ## Vulnerability Details **File Location**: `scripts/install_ubuntu_24_mvp.sh:23-24`; equivalent behavior also appears in `scripts/bootstrap_eda_demo.sh:72-78` **Vulnerability Type**: Persistent service enablement and excessive privilege assignment **Risk Level**: High ### Vulnerable Code ```bash sudo systemctl enable --now docker sudo usermod -aG docker "$USER" ``` Equivalent bootstrap behavior: ```bash log "Enabling Docker service" run_privileged systemctl enable --now docker if [[ "$AS_ROOT" -eq 1 ]]; then NEED_NEWGRP=0 else if ! id -nG "$USER" | grep -qw docker; then log "Adding $USER to docker group" run_privileged usermod -aG docker "$USER" NEED_NEWGRP=1 else NEED_NEWGRP=0 fi fi ``` ### Technical Analysis The installation scripts both enable the Docker daemon immediately and configure it to start automatically on future boots. They also permanently add the invoking user to the `docker` group. Docker is a legitimate dependency for the OpenLane backend, but permanent Docker-group membership is effectively root-equivalent access on conventional Docker installations. A Docker-group member can start a privileged container, mount the host root filesystem, access host devices, or modify host files as root. This exceeds the minimum privilege necessary for a single EDA run. The service enablement is disclosed in `SKILL.md` and `references/SECURITY.md` and does not appear to be a covert backdoor. Nevertheless, it creates persistent system state that survives completion of the Skill and host restarts. ### Attack Path 1. A user runs either optional installation script. 2. The script enables the Docker service across reboots. 3. The script permanently adds the user to the `docker` group. 4. After group membership becomes active, any process running as that user can communicate with the Docker socket. 5. A malicious dependency, compromised agent process, or local attacker operating under that account starts a container that mo ...[truncated 754 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Do not add users permanently to the `docker` group by default. 2. Prefer rootless Docker or rootless Podman for OpenLane execution. 3. If system Docker is unavoidable, use narrowly scoped privileged wrappers rather than unrestricted Docker-socket access. 4. Start Docker only when required: ```bash sudo systemctl start docker ``` Do not invoke `systemctl enable` unless the user explicitly requests boot-time startup. 5. Require a separate, explicit confirmation before making persistent privilege changes. 6. Run the backend in a dedicated VM or isolated build host with no sensitive host data. 7. Provide rollback instructions and optionally an uninstall script: ```bash sudo gpasswd -d "$USER" docker sudo systemctl disable --now docker ``` 8. Avoid mounting the host Docker socket into other agent containers, because socket access preserves the same root-equivalent risk. 9. Add a preflight warning that clearly states that Docker-group membership is equivalent to administrative access. ]]>
