Docker audit fixes
Network & Supply Chain: fixing all 5 checks
The network and supply chain audit reads published ports, network membership, container environment and pending engine updates: who can reach a container, and how far you can trust what it runs.
Four of the five need a reachable daemon and three of those also need at least one running container, so they skip together on an idle host. Docker Engine Updates is the exception, because it queries apt, dnf, yum, zypper or apk and skips only when Docker is absent or no supported package manager is found.
Transcribed from the docker-security-network-supply-chain audit script.
Find your finding
Listed in the order the audit runs them. Take the check name from the third field of the result line and open its page.
Published Container Ports
SoonCheck for containers publishing ports on all interfaces, which bypasses UFW host firewall rules
HighNeeds root3 resultsInter-Container Connectivity
SoonCheck whether containers share the default bridge network with inter-container communication enabled
MediumNeeds root3 resultsSecrets In Env
SoonCheck for secret-like values (passwords, keys, tokens) passed as container environment variables
HighNeeds root3 resultsDocker Engine Updates
SoonCheck for pending Docker engine, containerd or runc package updates across supported package managers
HighNo root4 resultsUnpinned Running Images
SoonCheck whether running containers use pinned image tags and whether a vulnerability scanner is installed
MediumNeeds root3 results
How the Network & Supply Chain audit reads your server
Every check in this audit runs after the same preamble, and several of its results only make sense once you know what that preamble could and could not see.
Docker detection: DOCK=direct if docker ps works as the audit user (docker group), DOCK=root if it works through sudo; the dk helper wraps docker accordingly. IDS is the list of running container IDs and NRUN their count; dk inspect --format is used with Go templates. Podman is recognised but not audited.
A SKIP is never a pass
A skipped check verified nothing at all. The most common cause is privilege: 4 of the 5 checks in this audit need root for a complete result. Before every run, each script works out which of four privilege modes it is in.
| Mode | How it is reached | What it means for your results |
|---|---|---|
root | The audit runs as UID 0. | Every privileged branch runs directly. No check skips for lack of permission. |
nopass | sudo -n true succeeds, so the account has passwordless sudo. | Privileged commands run through sudo -n. |
pass | A sudo password was supplied in the CtrlOps audit settings and accepted. | Privileged commands run through sudo -S. |
none | None of the above worked. | CAN_ROOT=0. Every privileged branch returns SKIP with a "Need root" message rather than guessing. |
If many checks skip with a “need root” message, run the audit as root, grant the audit account sudo (with or without NOPASSWD), or supply the sudo password in the CtrlOps audit settings. For Docker checks, membership of the docker group is an alternative to sudo: run usermod -aG docker <user> and log in again.
Network & Supply Chain questions
Run all 5 Network & Supply Chain checks, in one click
CtrlOps runs this audit over your existing SSH connection - no agents, no scripts to manage. $7/user/month after a 1 month free trial - no credit card required.
✓ Start instantly·✓ No credit card·✓ No sneaky autorenewals