Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
container-cve-2021-22555 — Контейнеризированный репродуктор для повышения привилегий в Linux (CVE-2021-22555) с профилями смягчения seccomp и руководством по развертыванию для кластеров Kubernetes и OpenShift. | Kitploit
Инструменты/GitHubGitHub/cgwalters/container-cve-2021-22555
Повышение привилегийБезопасность контейнеровАнализ уязвимостейЭксплуатацияБезопасность облачных средОбучение и Образование
GitHubcgwalters/container-cve-2021-22555

container-cve-2021-22555

Контейнеризированный репродуктор для повышения привилегий в Linux (CVE-2021-22555) с профилями смягчения seccomp и руководством по развертыванию для кластеров Kubernetes и OpenShift.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
4335 лет назадЕщё не проверено

Воспроизведение CVE-2021-22555 в контейнере

Сначала мы включаем сюда код эксплойта как удобный предварительно собранный контейнер: https://github.com/google/security-research/tree/master/pocs/linux/cve-2021-22555

Предварительно собранный контейнер: quay.io/cgwalters/cve-2021-22555

Смягчение: профили seccomp

Сильное смягчение — включить seccomp, который запрещает clone(CLONE_NEWUSER). В документации Kubernetes есть некоторая информация об этом, но развертывание политики на узле остается на усмотрение пользователя. В OpenShift 4 у нас есть machine-config-operator, который может с этим справиться.

Seccomp не особо обсуждается в официальной документации. Однако руководство по безопасности хотя бы упоминает это, как и эта статья в блоге.

Примечание: политика времени выполнения по умолчанию crio/podman vs docker

cri-o в версии 4.7 поставляется с политикой seccomp по умолчанию, но она не включена по умолчанию. podman и docker также поставляются с политикой, и она включена по умолчанию (но они различаются, см. ниже).

Политика cri-o не запрещает clone(CLONE_NEWUSER) по умолчанию — и это также верно для политики podman. Однако политика Docker по умолчанию запрещает clone(CLONE_NEWUSER):

root@kitploit:~
[root@cosa-devsh ~]# rpm -q podman moby-engine
podman-3.1.2-1.fc33.x86_64
moby-engine-19.03.13-1.ce.git4484c46.fc33.x86_64
[root@cosa-devsh ~]# podman run --rm -ti registry.fedoraproject.org/fedora:34 /bin/sh -c 'unshare -U --keep-caps true'
[root@cosa-devsh ~]# echo $?
0
[root@cosa-devsh ~]# docker run --rm -ti registry.fedoraproject.org/fedora:34 /bin/sh -c 'unshare -U --keep-caps true'
unshare: unshare failed: Operation not permitted
errchan: json: cannot unmarshal array into Go struct field systemdEventMessage.MESSAGE of type string
[root@cosa-devsh ~]# echo $?
1
[root@cosa-devsh ~]# 

Или другими словами: docker по умолчанию не уязвим для этого, а podman и cri-o уязвимы. (TODO: проверить containerd)

Поиск и развертывание более строгой политики seccomp

В статье блога openshift/seccomp-for-fun-and-profit обсуждается часть этого и приводится ссылка на профиль, созданный автором. Эта политика действительно запрещает clone(CLONE_NEWUSER).

Для удобства этот репозиторий содержит копию этого профиля в more-restricted.json и файл Butane, который генерирует объект MachineConfig, развертывающий этот профиль на рабочих узлах.

Используйте пример файла пода, который содержит:

root@kitploit:~
securityContext:
  seccompProfile:
    type: Localhost
    localhostProfile: more-restricted.json

Получаем:

root@kitploit:~
$ oc logs pod/cve-2021-22555
[+] Linux Privilege Escalation by theflow@ - 2021

[+] STAGE 0: Initialization
[*] Setting up namespace sandbox...
[-] unshare(CLONE_NEWUSER): Operation not permitted

Это должно сделать эксплойт недоступным.

Однако это требует согласия подов. Ещё TODO: Исследовать, можно ли сделать политику seccomp обязательной через SecurityContextConstraint, или нужен изменяющий вебхук допуска.

Скачать инструмент