CVE-2026-120306
Publiée le 2026-11-01 · Dernière modification le 2026-11-02
Les agents de build Beta9 (versions antérieures à 0.1.756) utilisent Buildah pour exécuter des commandes shell provenant des définitions d'images des clients. Comme l'agent utilise l'isolation chroot au lieu d'une isolation OCI complète, le processus de build partage les espaces de noms (namespaces) réseau, PID et IPC du pod hôte. Cela permet à une étape de build d'accéder au système de fichiers de l'agent via `/proc/1/root` tout en s'exécutant avec des privilèges root et des capacités étendues.
Un attaquant disposant d'un jeton d'espace de travail peut exécuter un seul build d'image pour prendre le contrôle total du pod de l'agent. À partir de là, il peut voler des jetons de compte de service Kubernetes ou modifier les binaires utilisés pour démarrer d'autres conteneurs, entraînant une compromission totale de la confidentialité, de l'intégrité et de la disponibilité. Cette attaque est facile à réaliser via le réseau et ne nécessite qu'une authentification de bas niveau, sans aucune interaction de l'utilisateur.
DÉTAIL DU VECTEUR CVSS
RÉFÉRENCES
Description officielle du NVD (en anglais)
Beta9 turns each shell command in a tenant image definition into a Dockerfile RUN line and executes it with Buildah on the build worker. The worker image sets BUILDAH_ISOLATION=chroot, and no buildah invocation passes --isolation, so the step only changes its filesystem root. It keeps the worker pod's PID, network, IPC, and user namespaces, runs as uid 0, and holds CAP_DAC_OVERRIDE. PID 1 in that procfs is the worker entrypoint, so /proc/1/root is the worker container's filesystem and is writable. That filesystem contains the runc, buildah, and runsc binaries the worker uses to start tenant containers, the worker's Kubernetes service account token, and the host directories mounted into the pod. Worker pods are privileged. Clip v2 layered builds are the default, so a tenant with a workspace token reaches this by submitting one image build. The read-only proof confirmed the shared namespaces, CAP_DAC_OVERRIDE, and that the worker's runc binary is visible at /proc/1/root. Fixed in worker 0.1.756: Buildah RUN steps, including the WORKDIR mkdir, use OCI isolation with private PID, IPC, and network namespaces, and tenant ARG values are passed only into the build container.