Skip to content

blackbox-exporter:v0.25.0 container isolation score: 48/100 (grade D)

Run with plain docker run prom/blackbox-exporter:v0.25.0 defaults, no hardening flags, the blackbox exporter image scores 48/100, grade D (porous) on IronClaw's seven-dimension container containment scale. Higher is safer. This is what you get straight out of a copy-pasted docker run; the fixes below close the gap.

Graded from a read-only docker inspect of prom/blackbox-exporter:v0.25.0 at digest sha256:b04a9fef4fa086a02fc7fcd8dcdbc4b7b35cc30cdee860fdc6a19dd8b208d63e. No workload is executed. How scoring works →

How it scores, dimension by dimension

Dimension Verdict Score What the scan found
Non-root user (uid != 0) ❌ FAIL 0/15 runs as root (user "0 (default)"); a container escape starts with host-uid 0
Dropped capabilities ❌ FAIL 4/20 default capability set retained (includes CAP_NET_RAW, CAP_MKNOD, …)
Seccomp profile ✅ PASS 15/15 seccomp profile active (syscall surface filtered)
Network isolation / egress ⚠️ WARN 4/15 network=bridge: outbound egress is possible; prefer network=none
Read-only root filesystem ❌ FAIL 0/10 root filesystem is writable: tamper/persistence surface
No docker.sock exposure ✅ PASS 15/15 no docker.sock / OCI control socket mounted
No shared host namespaces ✅ PASS 10/10 no host PID/IPC/network namespace sharing

Harden it: the highest-value fixes

Applying these to your docker run blackbox-exporter closes the biggest gaps first (most points recovered first):

  • Dropped capabilities, --cap-drop=ALL
    Drop every Linux capability; add back only what the workload provably needs.
  • Non-root user (uid != 0), --user 65532:65532
    Pin a non-root uid so a container escape does not begin as host uid 0.
  • Network isolation / egress, --network=none
    Cut egress so a compromised workload cannot reach the network or exfiltrate.
  • Read-only root filesystem, --read-only --tmpfs /tmp
    Make the root filesystem read-only to remove the tamper/persistence surface.

A fully hardened run scores 100/100 (grade A):

docker run -d --name blackbox-exporter-hardened \
  --user 65532:65532 \
  --cap-drop=ALL \
  --security-opt=no-new-privileges \
  --read-only --tmpfs /tmp \
  --network=none \
  prom/blackbox-exporter:v0.25.0

Scan your own container

These grades come from ironctl scan, a single, credential-free command that audits any running container, docker-compose service, or Kubernetes manifest, not just this image:

# install (Homebrew)
brew install ironsecco/ironclaw/ironclaw

# grade your own blackbox-exporter the same way this page was generated
ironctl scan my-blackbox-exporter

Badge this image

Maintain blackbox exporter (or run it)? Show its default-config isolation score with a badge that links back to this scorecard:

Container Isolation Score: 48/100 D

[![Container Isolation Score: 48/100 D](https://img.shields.io/badge/container%20isolation-48%2F100%20D-e8873a)](https://ironsecco.github.io/ironclaw/scores/blackbox-exporter/)

The badge is a plain shields.io URL: no server, no build step, nothing to host. It reflects this page's default-configuration grade. Hardened your own deployment? Generate a live badge of your config with ironctl scan --badge-json, or compare every image on the leaderboard.


Part of the Container Isolation Scores directory, default-configuration containment grades for the most-pulled public images.