
Versão personalizada do sudo 1.8.3p1 com patches do CVE-2021-3156 aplicados
Esta é uma versão personalizada do sudo, baseada no pacote sudo 1.8.3p1 fornecido pela Canonical para o Ubuntu 12.04 usando as URLs abaixo, com os patches do CVE-2021-3156 aplicados.
(A maneira mais fácil de baixar e descompactar esses arquivos é usando apt-get source sudo em uma máquina rodando Ubuntu 12.04. Se você não quiser mexer em uma máquina de produção, esta imagem Vagrant foi útil para mim ao fazer isso: https://app.vagrantup.com/hashicorp/boxes/precise64)
Se você tem a versão sem patch instalada (1.8.3p1-1ubuntu3.7), ela normalmente se comporta assim, indicando a vulnerabilidade que poderia potencialmente ser explorada:
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
Segmentation fault
A versão corrigida lhe dará algo assim:
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, aplique todos os patches CVE-2021-3156 do pacote Xenial. A maneira mais fácil de obter esses pacotes é executando apt-get source sudo em uma máquina Xenial, ou adicionando a fonte do pacote apt-get do Xenial à sua máquina Precise temporariamente: deb-src http://security.ubuntu.com/ubuntu xenial-security main.
patch -p1 < debian/patches/CVE-2021-3156-1.patch (3 de 9 partes falharam)patch -p1 < debian/patches/CVE-2021-3156-2.patch (refere-se a arquivo inexistente)patch -p1 < debian/patches/CVE-2021-3156-3.patch (1 de 4 partes falharam)patch -p1 < debian/patches/CVE-2021-3156-4.patch (refere-se a arquivo inexistente)patch -p1 < debian/patches/CVE-2021-3156-5.patch (1 de 1 parte falhou)$ sudo apt-get build-dep sudo
$ dpkg-buildpackage -rsudo -b
Se tudo correr bem, você deverá obter um pacote sudo_1.8.3p1-1ubuntu3.8_amd64.deb e sudo-ldap_1.8.3p1-1ubuntu3.8_amd64.deb no diretório pai.
Note que APENAS os patches do CVE-2021-3156 foram aplicados a esta árvore. É bastante possível que um ou mais dos seguintes patches do Xenial também seriam aplicáveis a esta árvore; fiz uma tentativa inicial de aplicá-los, mas eles não se aplicaram corretamente e, portanto, não estão incluídos neste repositório. NÃO HÁ ABSOLUTAMENTE NENHUMA GARANTIA de que o pacote sudo fornecido por este repositório não tenha problemas críticos de segurança.
Pull requests que aplicam qualquer um desses patches são altamente bem-vindos! Para sua conveniência, o conjunto completo de patches do Xenial (a partir do sudo 1.8.16-0ubuntu1.10) está disponível em debian/patches nesta árvore. Note que as fontes do pacote do Precise (12.04) (nas quais este repositório se baseia) já aplicaram tudo até CVE-2014-9680.patch. O conjunto completo de patches já aplicados está listado em .pc/applied-patches.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM NENHUM TIPO DE GARANTIA, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO VIOLAÇÃO. EM NENHUMA HIPÓTESE OS AUTORES OU DETENTORES DOS DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.
plugins/sudoers.rej e aplique as alterações manualmente. Esta é a parte difícil, mas às vezes não é tão difícil. A razão pela qual os patches não se aplicam corretamente é tipicamente porque os números de linha diferem muito (a(s) linha(s) corrigida(s) estão presentes, mas em uma seção diferente do arquivo corrigido), ou porque o código tem aparência diferente na base de código 1.8.3p1. Erros como este também são possíveis de resolver; eles apenas exigem um pouco mais de reflexão, análise do código e descobrir como aplicar as alterações.