T09 · Insecure Skill Coding Practices
- Location
SKILL.md:30- Finding
Insecure Plaintext Docker Daemon Configuration Guidance
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 30-31
Vulnerability Type: Unauthenticated plaintext Docker daemon access
Risk Level: HighVulnerable Code Snippet:
markdown - `DOCKER_HOST: tcp://docker:2375` required — job uses wrong Docker otherwise - `DOCKER_TLS_CERTDIR: ""` or configure TLS properly — half-configured TLS breaks buildsTechnical Analysis
The Skill recommends connecting to a Docker daemon over plaintext TCP port 2375 and presents disabling TLS as a normal configuration option. A Docker API exposed this way does not provide transport encryption or certificate-based client authentication.
If an attacker can reach the daemon endpoint, the attacker may issue Docker API requests to create containers, run arbitrary commands, access images and volumes, or mount resources available to the daemon. Because Docker-in-Docker daemons are frequently privileged, successful control may also create a path to the CI runner host. The guidance does not state that disabling TLS is acceptable only under strict network isolation, nor does it warn against publishing port 2375 beyond the isolated job network.
Attack Path
- A user follows the Skill guidance and configures
DOCKER_HOSTto usetcp://docker:2375. - TLS is disabled by setting
DOCKER_TLS_CERTDIRto an empty value. - The Docker API becomes reachable from another workload, runner, or adjacent network due to insufficient service-network isolation or port exposure.
- An attacker connects to port 2375 without credentials or client certificates.
- The attacker invokes Docker API operations to launch attacker-controlled containers, inspect images or volumes, and access resources available to the daemon.
- If the daemon is privileged or exposes host resources, the attacker may pivot from daemon control to compromise of the runner host.
Impact Assessment
Exploitation can grant administrative control over the affect ...[truncated 338 chars]
- A user follows the Skill guidance and configures
- Remediation
View remediation
Remediation Suggestions
- Prefer a TLS-authenticated Docker daemon on port 2376 and require certificate verification and client authentication.
- Do not recommend
DOCKER_TLS_CERTDIR: ""without a prominent security warning and explicit constraints. - If plaintext Docker-in-Docker is unavoidable, limit it to an ephemeral, per-job network namespace that is inaccessible to other jobs, runners, and external networks.
- Never publish port 2375 on a host or broadly reachable interface.
- Apply firewall and network-policy rules so that only the intended job container can reach the Docker service.
- Use dedicated, disposable runners and avoid mounting the host Docker socket or sensitive host paths.
- Prefer rootless or daemonless build systems where feasible, and apply least-privilege controls to the build environment.
- Add guidance for validating network isolation and daemon exposure before enabling plaintext access.
