
Organización Mundial de la Salud Es la imagen del contenedor la que extrae el tiempo de ejecución del contenedor subyacente y lo envía al servidor remoto. ¡Empuje el tiempo de ejecución del contenedor subyacente de su plataforma de contenedor CSP favorita!
¿Como funciona?
Como se muestra en runc CVE-2019-5736, El tiempo de ejecución del contenedor de Linux tradicional se expone al contenedor en el que se ejecutan /proc/self/exe. whoc Utilice este enlace para leer el tiempo de ejecución del contenedor que lo ejecutó.
Modo dinámico
Este es whoc El modo predeterminado para vincular dinámicamente el tiempo de ejecución del contenedor.
- esta
whocEl punto de entrada de la imagen se establece en/proc/self/exe, Y el enlazador dinámico de la imagen (ld.so) Conupload_runtime. - Una vez que la imagen se está ejecutando, el contenedor se volverá a ejecutar en el contenedor mientras se está ejecutando.
- Dado que el tiempo de ejecución está vinculado dinámicamente, el kernel cargará nuestro enlazador dinámico falso (
upload_runtime) Al proceso en tiempo de ejecución y pasarle la ejecución. upload_runtimeAl leer archivos binarios en tiempo de ejecución/proc/self/exeY envíelo al servidor remoto configurado.

Espere el modo de ejecución
Para el tiempo de ejecución del contenedor vinculado estáticamente, whoc Hay otro sabor: whoc:waitforexec.
upload_runtimeEs el punto de entrada de la imagen y sirve comowhocContenedor PID 1.- El usuario debe ejecutar
whocContenedor y llame al archivo puntiagudo/proc/self/exe(P.ejdocker exec whoc_ctr /proc/self/exe). - Una vez que se produce la ejecución, el contenedor se volverá a ejecutar en el contenedor mientras se está ejecutando.
upload_runtimeAl leer archivos binarios en tiempo de ejecución/proc/$runtime-pid/exeY envíelo al servidor remoto configurado.

Prueba localmente
necesitas docker con python3 Instalar en pc. Clona el repositorio:
$ git clone git@github.com:twistlock/whoc.git
Configure el servidor de archivos para recibir el tiempo de ejecución del contenedor extraído:
$ cd whoc $ mkdir -p stash && cd stash $ ln -s ../util/fileserver.py fileserver $ ./fileserver
Corre desde otro caparazón whoc La imagen en el entorno de contenedor de su elección, como Docker:
$ cd whoc $ docker build -f Dockerfile_dynamic -t whoc:latest src # or ./util/build.sh $ docker run --rm -it --net=host whoc:latest 127.0.0.1 # or ./util/run_local.sh
Vea que el servidor de archivos recibió el tiempo de ejecución del contenedor.Si tu corres whoc En Vanilla Docker, el tiempo de ejecución del contenedor recibido debe ser correr.
--net=host Solo para pruebas locales con el fin de whoc El contenedor puede acceder fácilmente al servidor de archivos en el host de las siguientes maneras 127.0.0.1.
Otras plataformas
por defecto whoc es para linux/amd64, Pero también es compatible con otras arquitecturas de CPU. Puede construir el modo de espera para ejecutar como de costumbre.Hospedarse whoc En el modo dinámico de otras arquitecturas de CPU, debe completar PLATFORM_LD_PATH_ARG Utilice los parámetros de construcción de ruta del enlazador dinámico en la arquitectura de destino.
Un script de compilación de muestra arm64 Disponible en util/build_arm64.sh.
ayuda
ayuda whocArchivo binario principal, upload_runtime:
Usage: upload_runtime [options]Options: -p, --port Port of remote server, defaults to 8080 -e, --exec Wait-for-exec mode for static container runtimes, waits until an exec to the container occurred -b, --exec-bin In exec mode, overrides the default binary created for the exec, default is /bin/enter -a, --exec-extra-argument In exec mode, pass an additional argument to the runtime so it won't exit quickly -r, --exec-readdir-proc In exec mode, instead of guessing the runtime pid (which gives whoc one shot of catching the runtime), find the runtime by searching for new processes under '/proc'









