
Кастомная версия sudo 1.8.3p1 с применёнными патчами CVE-2021-3156
Это пользовательская версия sudo, основанная на пакете sudo 1.8.3p1, предоставленном Canonical для Ubuntu 12.04 по приведённым ниже URL, с применёнными патчами CVE-2021-3156.
(Самый простой способ скачать и распаковать эти файлы — использовать apt-get source sudo на машине с Ubuntu 12.04. Если вы не хотите возиться с рабочей машиной, этот образ Vagrant помог мне в создании этого: https://app.vagrantup.com/hashicorp/boxes/precise64)
Если у вас установлена непатченая версия (1.8.3p1-1ubuntu3.7), то обычно она ведёт себя следующим образом, что указывает на уязвимость, которую потенциально можно использовать:
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
Segmentation fault
Патченая версия вместо этого выдаст примерно следующее:
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
usage: sudoedit [-AknS] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] file ...
apt-get source sudocd sudo-1.8.3p1, примените все патчи CVE-2021-3156 из пакета Xenial. Самый простой способ получить эти пакеты — выполнить apt-get source sudo на машине Xenial или временно добавить источник пакетов Xenial для apt-get на вашу машину Precise: deb-src http://security.ubuntu.com/ubuntu xenial-security main.
patch -p1 < debian/patches/CVE-2021-3156-1.patch (3 из 9 фрагментов не применились)patch -p1 < debian/patches/CVE-2021-3156-2.patch (ссылается на несуществующий файл)patch -p1 < debian/patches/CVE-2021-3156-3.patch (1 из 4 фрагментов не применился)patch -p1 < debian/patches/CVE-2021-3156-4.patch (ссылается на несуществующий файл)patch -p1 < debian/patches/CVE-2021-3156-5.patch (1 из 1 фрагмента не применился)plugins/sudoers), которые отсутствуют в версии 1.8.3p1. Я искренне верю, что, поскольку этого кода нет в данной версии, эти патчи не применимы в нашем случае..rej и примените изменения вручную. Это самая сложная часть, но иногда она не так уж сложна. Причина, по которой патчи не накладываются чисто, обычно в том, что номера строк слишком сильно отличаются (патченая строка (строки) присутствует, но в другом разделе файла, к которому применяется патч), или что код в кодовой базе 1.8.3p1 выглядит иначе. Такие ошибки тоже можно устранить; они просто требуют немного больше размышлений, анализа кода и поиска способа применить изменения.$ sudo apt-get build-dep sudo
$ dpkg-buildpackage -rsudo -b
Если всё пройдёт хорошо, в родительском каталоге вы получите пакеты sudo_1.8.3p1-1ubuntu3.8_amd64.deb и sudo-ldap_1.8.3p1-1ubuntu3.8_amd64.deb.
Обратите внимание, что к этому дереву были применены ТОЛЬКО патчи CVE-2021-3156. Вполне возможно, что один или несколько следующих патчей Xenial также применимы к этому дереву; я предпринял первоначальную попытку применить их, но они не наложились чисто, и поэтому они не включены в этот репозиторий. НЕТ АБСОЛЮТНО НИКАКИХ ГАРАНТИЙ ТОГО, что пакет sudo из этого репозитория не содержит критических проблем с безопасностью.
Пул-реквесты, применяющие любой из этих патчей, очень приветствуются! Для вашего удобства полный набор патчей Xenial (по состоянию на sudo 1.8.16-0ubuntu1.10) доступен в debian/patches в этом дереве. Обратите внимание, что исходники пакетов Precise (12.04) (на которых основан этот репозиторий) уже содержат всё вплоть до CVE-2014-9680.patch. Полный список уже применённых патчей приведён в .pc/applied-patches.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ВЛАДЕЛЬЦЫ АВТОРСКИХ ПРАВ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ИСКИ, УБЫТКИ ИЛИ ИНУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ ТО В СИЛУ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКШИЕ ВСЛЕДСТВИЕ ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫХ ДЕЙСТВИЙ С НИМ.