
Version personnalisée de sudo 1.8.3p1 avec correctifs CVE-2021-3156 appliqués.
Ceci est une version personnalisée de sudo, basée sur le paquet sudo 1.8.3p1 tel que fourni par Canonical pour Ubuntu 12.04 en utilisant les URL ci-dessous, avec les correctifs CVE-2021-3156 appliqués.
(La façon la plus simple de télécharger et décompresser ces fichiers est d'utiliser apt-get source sudo sur une machine exécutant Ubuntu 12.04. Si vous ne souhaitez pas toucher à une machine de production, cette image Vagrant m'a été utile pour réaliser ceci : https://app.vagrantup.com/hashicorp/boxes/precise64)
Si vous avez la version non patchée installée (1.8.3p1-1ubuntu3.7), elle se comporte généralement comme ceci, indiquant la vulnérabilité qui pourrait potentiellement être exploitée :
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
Segmentation fault
La version patchée donnera plutôt quelque chose comme ceci :
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, appliquez tous les correctifs CVE-2021-3156 du paquet Xenial. La façon la plus simple d'obtenir ces paquets est d'exécuter apt-get source sudo sur une machine Xenial, ou d'ajouter temporairement la source de paquet apt-get Xenial à votre machine Precise : deb-src http://security.ubuntu.com/ubuntu xenial-security main.
patch -p1 < debian/patches/CVE-2021-3156-1.patch (3 des 9 fragments ont échoué)patch -p1 < debian/patches/CVE-2021-3156-2.patch (fait référence à un fichier inexistant)patch -p1 < debian/patches/CVE-2021-3156-3.patch (1 des 4 fragments a échoué)patch -p1 < debian/patches/CVE-2021-3156-4.patch (fait référence à un fichier inexistant)patch -p1 < debian/patches/CVE-2021-3156-5.patch (1 des 1 fragment a échoué)$ sudo apt-get build-dep sudo
$ dpkg-buildpackage -rsudo -b
Si tout se passe bien, vous devriez maintenant obtenir un paquet sudo_1.8.3p1-1ubuntu3.8_amd64.deb et sudo-ldap_1.8.3p1-1ubuntu3.8_amd64.deb dans le répertoire parent.
Notez que SEULS les correctifs CVE-2021-3156 ont été appliqués à cette arborescence. Il est tout à fait possible qu'un ou plusieurs des correctifs Xenial suivants soient également applicables à cette arborescence ; j'ai fait une tentative initiale pour les appliquer mais ils ne se sont pas appliqués proprement, et ainsi, ils ne sont pas inclus dans ce dépôt. Il n'y a ABSOLUMENT AUCUNE GARANTIE que le paquet sudo fourni par ce dépôt ne présente pas de problèmes de sécurité critiques.
Les pull requests qui appliquent l'un de ces correctifs sont grandement bienvenues ! Pour votre commodité, l'ensemble complet des correctifs Xenial (à partir de sudo 1.8.16-0ubuntu1.10) est disponible dans debian/patches dans cette arborescence. Notez que les sources du paquet Precise (12.04) (sur lesquelles ce dépôt est basé) ont déjà appliqué tout jusqu'à CVE-2014-9680.patch. L'ensemble complet des correctifs déjà appliqués est listé dans .pc/applied-patches.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS S'Y LIMITER LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU TITULAIRES DU DROIT D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU AUTRES TRANSACTIONS DANS LE LOGICIEL.
plugins/sudoers.rej et appliquez les modifications manuellement. C'est la partie difficile, mais parfois ce n'est pas si difficile. La raison pour laquelle les correctifs ne s'appliquent pas proprement est généralement que les numéros de ligne diffèrent trop (la ou les lignes corrigées sont présentes, mais dans une section différente du fichier corrigé), ou que le code est différent dans la base de code 1.8.3p1. Des erreurs comme celle-ci sont également possibles à résoudre ; elles nécessitent simplement un peu plus de réflexion, d'analyse du code et de détermination de la façon d'appliquer les modifications.