>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Go

Docker containerbeveiliging controleren zonder extra hoofdpijn

DockerScan Logo

Onlangs vonden beveiligingsonderzoekers meer dan vier miljoen lege placeholder-containers en honderdduizenden images met verborgen cryptominers op Docker Hub. We zijn eraan gewend geraakt om base images of derden-afhankelijkheden te pullen met een enkele docker pull-opdracht, zelden nadenkend over wat er verborgen zou kunnen zitten in lagen — niet alleen een kwetsbaar pakket, maar een ingebed toegangstoken naar iemands anders infrastructuur of een sandbox-escape-script.

Voor het scannen van images gebruiken mensen meestal Trivy, Grype of Clair. Ze doen redelijk werk door bekende CVE's in systeempakketten te vinden, maar missen vaak subtiele zaken zoals slechte runtime-configuratie, gelekte API-sleutels en nieuwe aanvalsvectoren die gericht zijn op supply chains.

Het dockerscan-project van Spaanse beveiligingsonderzoeker Daniel Garcia (cr0hn) lost dit probleem op met uitgebreide auditing. De eerste versie van het hulpmiddel was geschreven in Python in 2017 en draaide langzaam, maar in de tweede versie heeft de auteur de engine volledig herschreven in Go, de snelheid vertienvoudigd, en kwetsbaarheidsscanning, geheimdetectie en configuratie-auditing gecombineerd in één binary.

Wat zit er in de nieuwe DockerScan

In plaats van drie verschillende hulpmiddelen na elkaar uit te voeren om images te controleren, voert dockerscan uitgebreide diagnostiek uit over meerdere gebieden tegelijk.

Het hulpmiddel combineert vijf analysemodules:

  • CIS Docker Benchmark v1.7.0. Controleert meer dan 80 beveiligingsparameters, waaronder draaien als root, onnodige open poorten, ontbrekende HEALTHCHECK-richtlijn en correcte systeembestandsmachtigingen.
  • Supply chain-aanvalsdetector. Zoekt naar sporen van populaire campagnes uit de afgelopen jaren: verborgen miners (zoals xmrig), backdoors in systeembibliotheken (naar aanleiding van het xz-utils-incident), phishing-tekst en containers zonder echte lagen.
  • Ingebedde geheimen detectie. Herkent meer dan 40 sleutel- en tokenformaten (AWS, GCP, OpenAI, Stripe, privé SSH-sleutels, databaseverbindingsreeksen). Onbekende tokens worden opgevangen via Shannon-entropieberekening met een drempel boven 4,5.
  • CVE-kwetsbaarheidsdatabase. Volgt gevaarlijke container-escape-kwetsbaarheden (CVE-2024-21626 in runc), BuildKit-problemen en verouderde base images. De database is samengesteld uit de officiële MITRE cvelistV5-snapshot, dus het hulpmiddel raakt de NVD API-limieten niet.
  • Runtime-beveiligingsauditing. Controleert gevaarlijke Linux-mogelijkheden (bijvoorbeeld CAP_SYS_ADMIN), Seccomp- en AppArmor-profielen en namespace-isolatievlaggen.

In versie 2.1.0 heeft de auteur een belangrijke bug in eerdere v2.0.x-builds opgelost die ervoor zorgde dat pakket-kwetsbaarheidsscanning stilzwijgend nul resultaten retourneerde. Nu volgt pakketversie-matching dpkg-regels met distributie-backports.

Snelle start en checks uitvoeren

Het hulpmiddel wordt gedistribueerd als kant-en-klare binary voor Linux, macOS en Windows. Geen afhankelijkheden om te downloaden.

Installatie op Linux amd64 kost drie regels:

curl -L https://github.com/cr0hn/dockerscan/releases/latest/download/dockerscan-linux-amd64 -o dockerscan
chmod +x dockerscan
sudo mv dockerscan /usr/local/bin/

Voor de eerste keer uitvoeren, download de lokale CVE-database:

dockerscan update-db

De database wordt dagelijks bijgewerkt via GitHub Actions en weegt ongeveer 30 MB gecomprimeerd. Daarna kan de scanner naar elke lokale of externe image worden gericht:

dockerscan nginx:latest

Als je alleen geïnteresseerd bent in specifieke checks, bijvoorbeeld geheimdetectie en CIS Benchmark-naleving, kun je modules beperken met de --scanners-vlag:

dockerscan --scanners cis,secrets ubuntu:22.04

Voor automatisering scripts zijn de stille modus -q en ernstfiltering handig:

dockerscan -q --only-critical my-app:prod

Werken met privé-registers

Een veelvoorkomend probleem bij veel scanners is onhandige authenticatie met privé-repositories. Dockerscan ondersteunt alle populaire scenario's: Docker Hub, GHCR, AWS ECR, Google Artifact Registry, Azure ACR en GitLab.

Als je al bent geverifieerd via docker login, haalt het hulpmiddel automatisch tokens op van ~/.docker/config.json. Het ondersteunt ook systeem-credential helpers (osxkeychain op macOS, wincred op Windows en pass op Linux).

Voor CI/CD-pipelines is het handiger om inloggegevens via omgevingsvariabelen door te geven:

export DOCKER_USERNAME=ci-bot
export DOCKER_PASSWORD=ghp_secret_token_here
dockerscan ghcr.io/my-org/private-service:v1.2.0

Het hulpmiddel retourneert duidelijke exit codes: 0 voor een schone rapport, 1 wanneer High-level problemen worden gevonden en 2 wanneer kritieke kwetsbaarheden worden gedetecteerd. Dit maakt het mogelijk om de pipeline-build onmiddellijk te stoppen bij het vinden van een gevaarlijke bug.

Integreren in CI/CD en rapportage

Dockerscan-resultaten worden opgeslagen in JSON- en SARIF-formaten. Het SARIF-formaat wordt standaard begrepen door GitHub Security, GitLab en Azure DevOps, dus gevonden problemen worden onmiddellijk weergegeven in de pull request-interface.

Voorbeeldstap voor GitHub Actions:

name: Security Scan
  run: |
    ./dockerscan update-db
    ./dockerscan -q myapp:${{ github.sha }}

name: Upload SARIF report
  uses: github/codeql-action/upload-sarif@v2
  if: always()
  with:
    sarif_file: dockerscan-report.sarif

Licentie en beperkingen

De projectlicentie verdient speciale aandacht. De auteur koos voor een Source-Available-model. De broncode is volledig open, het hulpmiddel kan gratis worden gebruikt voor interne bedrijfsbehoeften, ingebed in persoonlijke CI/CD-pipelines en gebruikt in audits en pentests. Alleen één ding is verboden: dockerscan verpakken in een commerciële SaaS en verkopen als betaalde cloud scanning-service zonder toestemming van de auteur.

Is het de moeite waard om over te schakelen naar DockerScan

Als je snelle statische analyse van images nodig hebt gecombineerd met container-machtigingscontroles en gelekte token-detectie, dekt dockerscan al deze taken af met één opdracht. Het verbruikt ongeveer 50-100 MB RAM en draait merkbaar sneller dan oude Python-oplossingen.

Het hulpmiddel is ideaal voor DevOps-engineers en beveiligingsspecialisten voor reguliere productie-image-auditing en het toevoegen van strikte controles aan deployment-pipelines. De beste manier om te beginnen is door het uit te voeren tegen een paar van je eigen werkende containers om het werkelijke aantal verborgen CIS Benchmark-waarschuwingen te zien.

Gerelateerde projecten