
Dockerfile y manifiestos de Kubernetes para reproducir CVE-2024-3094
Dockerfile y manifiestos de Kubernetes para reproducir CVE-2024-3094
Usamos la versión de Debian de las xz utils vulnerables como imagen base. También necesitamos parchear la biblioteca. La versión parcheada de la biblioteca liblzma está tomada del repositorio xzbot.
FROM debian:experimental-20240311@sha256:16cc2b09c44d991d36f63153f13a7c98fb7da6bd2ba9d7cc0f48baacb7484970
# use debian with a vulnerable version of xz utils as the base image
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:root123' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
EXPOSE 22
COPY liblzma.so.5.6.0.patch /root/
# in order to exploit the vulnerability you must use a patched library because
# the exploit author originally hardcoded his public key
# in the patched library this key has been swapped out
ENV LD_PRELOAD=/root/liblzma.so.5.6.0.patch
# load the patched library via LD_PRELOAD
CMD ["/usr/sbin/sshd", "-D"]
Primero, debemos desplegar un Pod simple, con la imagen ensamblada en el paso anterior:
apiVersion: v1
kind: Pod
metadata:
name: cve-2024-3094
labels:
app: cve-2024-3094
spec:
containers:
- name: cve-2024-3094
image: r0binak/xzk8s:v1
ports:
- containerPort: 22
Luego, redirigimos los puertos:
kubectl port-forward backdoor-cve-2024-3094 2222:22
Usemos el exploit xzbot:

Finalmente, entremos al contenedor y comprobemos los resultados del exploit:
