Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Beyond SBOMs: The Future of Container Supply Ch...

Beyond SBOMs: The Future of Container Supply Chain Security

The Black Forest Commandos framework + how to defend yourself against the newly emerged lineage of Shai Hulud and Mini Shai Hulud.

Avatar for Mohammad-Ali A'râbi

Mohammad-Ali A'râbi

July 10, 2026

Other Decks in Technology

Transcript

  1. Mohammad-Ali A’râbi Software Engineer @ JobRad Docker Captain Author of

    “Docker and Kubernetes Security” Books: DockerSecurity.io LinkedIn, Twitter, Medium: @aerabi BlueSky, website: aerabi.com
  2. CVE Common Vulnerabilities and Exposures They lurk in the shadows,

    awaiting an opportunity to attack! Which CVEs do you know?
  3. CVE Common Vulnerabilities and Exposures They lurk in the shadows,

    awaiting an opportunity to attack! Meet: - React2Shell CVE-2025-55182 - Log4Shell CVE-2021-44228
  4. Log4Shell Log4Shell was a zero-day vulnerability discovered in November 2021.

    In early 2022, everyone was talking about SBOMs .
  5. SBOM Software Bill of Material is a list of all

    of the packages on a Docker image. It became more popular after the Log4Shell incident. Docker added the SBOM CLI plugin in mid 2022.
  6. September 1st, 2022 Docker announced the SBOM CLI plugin Docker

    Community All Hands September 29th, 2022 Docker Meetup Black Forest SBOM: What’s the Hype About?
  7. $ docker sbom <image> This command is available on Docker

    Desktop. For Docker CE, you need to install sbom-cli-plugin. The SBOM CLI plugin basically runs Syft.
  8. $ docker scout sbom <image> Just to see: --format list

    To save it: docker scout sbom <image> --format spdx --output <file>
  9. $ docker scout cves <image> Checks the Docker image for

    CVEs. Will use SBOM attestations if available.
  10. $ docker buildx build --sbom=true -t <image> . This command

    builds the image and generate SBOM. The SBOM attestation is pushed with the image by setting the --push flag.
  11. FROM ubuntu:latest AS build RUN apt-get update && apt-get install

    -y build-essential WORKDIR /app COPY hello.cpp . RUN g++ -o hello hello.cpp -static # -------------------- FROM scratch COPY --from=build /app/hello /hello CMD ["/hello"]
  12. FROM ubuntu:latest AS build ARG BUILDKIT_SBOM_SCAN_STAGE=true RUN apt-get update &&

    apt-get install -y build-essential WORKDIR /app COPY hello.cpp . RUN g++ -o hello hello.cpp -static # -------------------- FROM scratch COPY --from=build /app/hello /hello CMD ["/hello"]
  13. - name: Build and push uses: docker/build-push-action@v6 with: context: .

    push: true tags: ${{ steps.meta.outputs.tags }} cache-from: type=gha cache-to: type=gha,mode=max
  14. - name: Build and push uses: docker/build-push-action@v6 with: context: .

    push: true tags: ${{ steps.meta.outputs.tags }} cache-from: type=gha cache-to: type=gha,mode=max provenance: mode=max sbom: true
  15. Norse runes A B C D E F G H

    I J K L M N O P R S T U TH Y Z EE U
  16. DHI Docker Hardened Images are a set of near-zero-CVE that

    were open-sourced in December 2025. These images are available for dev (installation stages) and production (final stage of a production image).
  17. # Not hardened FROM node:24 AS build # For build

    stage FROM dhi.io/node:24-dev AS build # For production stage FROM dhi.io/node:24 Guess what’s the CVE difference?
  18. # Not hardened FROM node:24 AS build # For build

    stage FROM dhi.io/node:24-dev AS build # For production stage FROM dhi.io/node:24 Node 24 has 9 high CVEs, 17 medium, and 169 low. DHI Node has 8 low CVEs. 95% fewer CVEs 95%
  19. vexctl create \ --author="[email protected]" \ --product="pkg:docker/$IMAGE" \ --subcomponents="pkg:deb/debian/openssl@x"\ --vuln="CVE-2026-28390" \

    --status="not_affected" \ --justification="vulnerable_code_not_in_ execute_path" \ --file="CVE-2026-28390.vex.json" docker scout attestation add \ --file CVE-2026-28390.vex.json \ --predicate-type https://openvex.dev/ns/v0.2.0 \ $IMAGE
  20. docker buildx build \ --sbom=true \ --output type=local,dest=out . cosign

    attest \ --type spdxjson \ --predicate out/sbom-build.spdx.json \ --key cosign.key \ $IMAGE
  21. oras discover dhi.io/node:25 \ --platform linux/amd64 To check hardened images

    using Oras, first you need to log into Docker Hub account.
  22. SLSA v1.2 Build Track L1. Provenance exists Builds don’t influence

    each other. Sign key is not accessible in build steps. Provenance is generated Build is done on a hosted environment, provenance is generated and signed L2. Hosted build platform L3. Hardened build slsa.dev
  23. docker buildx build \ --sbom=true \ --attest type=provenance,mode=min,version=v1 . On

    min: • Build timestamps • Build materials • Source repository and revision • Build platform On max: • The Dockerfile • Exact steps taken to build the image
  24. If sorrow gathers to overwhelm the hearts of lovers, The

    cupbearer and I will unite to dismantle its very foundations. —Hafez, the Lissan al-Ghayb (1315–1390)
  25. Shai Hulud There are 1.0, 2.0, and Mini Shai Hulud.

    Self-propagating worm compromising pre-install and post-install script.
  26. November 2025 Uses preinstall instead of postinstall September 2025 Autonomous,

    harvests PATs and API keys Shai Hulud 2.0 Shai Hulud 1.0 $ npm ci --ignore-scripts
  27. Mini Shai Hulud So cute and tiny! 29th of April.

    Compromised SAP Cloud Application Programming. Targets coding agents and IDE lifecycles.
  28. $ sbx run claude Docker Sandbox puts your AI agent

    in a microVM and doesn’t give it access to the tokens.
  29. TanStack Poisoning CI cache poisoning! May 11th, 2026. The worm

    is blocking sunshine, you can’t get tanned. Rendered SLSA level 3 insufficient.
  30. Miasma Wave 1 June 1st The worm of Shai Hulud

    family compromised 32 packages in @redhat-cloud-services namespace.
  31. Miasma Wave 2: Phantom Gyp June 3rd Exploits the gyp

    binding. Bypasses --ignore-scripts.
  32. Checklist Put your AI coding agents into a Sandbox Implement

    SLSA L3 to protect your keys Use pinned dependencies Use keyless signing to avoid stolen keys Have a cool-down period before installing Disable lifecycle scripts by default Harden Build Pin Your Version Cool Down Don’t Trust AI Short-Lived Key Disable Scripts
  33. Checklist When the next React2Shell happens, you need to delete

    caches, rebuild, redistribute, and act fast Have an Incident Playbook
  34. CREDITS: This presentation template was created by Slidesgo , and

    includes icons by Flaticon , and infographics & images by Freepik Thanks! Do you have any questions? [email protected] aerabi.com
  35. The duality between Thor and Loki His hand can hold

    swords or big jars of beer Bravery Attribute Effective against giant serpents, but not CVEs Hammer, Mjolnir Jfokus organizer also gave me horns Cunning and malice Green cloak is also very useful in dark forests Defender of Asgard Loki can shapeshift and turn into Jfokus speaker Ability to transform The gods is with small G, so lesser gods like Baldur. Deceiver of gods