
Angepasste Version von sudo 1.8.3p1 mit angewandten CVE-2021-3156-Patches.
Dies ist eine benutzerdefinierte Version von sudo, basierend auf dem sudo-1.8.3p1-Paket, das von Canonical für Ubuntu 12.04 bereitgestellt wurde, unter Verwendung der folgenden URLs, mit den CVE-2021-3156-Patches.
(Der einfachste Weg, diese Dateien herunterzuladen und zu entpacken, ist die Verwendung von apt-get source sudo auf einem Rechner mit Ubuntu 12.04. Falls Sie keine Produktionsmaschine beeinträchtigen möchten, war dieses Vagrant-Image für mich hilfreich: https://app.vagrantup.com/hashicorp/boxes/precise64)
Wenn Sie die ungepatchte Version installiert haben (1.8.3p1-1ubuntu3.7), verhält sie sich typischerweise wie folgt, was auf die potenziell ausnutzbare Schwachstelle hinweist:
vagrant@precise64:~/src$ sudoedit -s '\' `perl -e 'print "A" x 65536'`
Segmentation fault
Die gepatchte Version stattdessen gibt Ihnen etwa Folgendes aus:
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, wenden Sie alle CVE-2021-3156-Patches aus dem Xenial-Paket an. Der einfachste Weg, diese Patches zu erhalten, ist apt-get source sudo auf einem Xenial-Rechner auszuführen oder die Xenial-apt-get-Paketquelle temporär zu Ihrem Precise-Rechner hinzuzufügen: deb-src http://security.ubuntu.com/ubuntu xenial-security main.
patch -p1 < debian/patches/CVE-2021-3156-1.patch (3 von 9 Blöcken fehlgeschlagen)patch -p1 < debian/patches/CVE-2021-3156-2.patch (bezieht sich auf nicht vorhandene Datei)patch -p1 < debian/patches/CVE-2021-3156-3.patch (1 von 4 Blöcken fehlgeschlagen)patch -p1 < debian/patches/CVE-2021-3156-4.patch (bezieht sich auf nicht vorhandene Datei)patch -p1 < debian/patches/CVE-2021-3156-5.patch (1 von 1 Block fehlgeschlagen)$ sudo apt-get build-dep sudo
$ dpkg-buildpackage -rsudo -b
Wenn alles gut geht, sollten Sie nun ein Paket sudo_1.8.3p1-1ubuntu3.8_amd64.deb und sudo-ldap_1.8.3p1-1ubuntu3.8_amd64.deb im übergeordneten Verzeichnis erhalten.
Beachten Sie, dass NUR die CVE-2021-3156-Patches auf diesen Zweig angewendet wurden. Es ist durchaus möglich, dass einer oder mehrere der folgenden Xenial-Patches ebenfalls auf diesen Zweig anwendbar wären; ich habe einen ersten Versuch unternommen, sie anzuwenden, aber sie ließen sich nicht sauber anwenden, und daher sind sie nicht in diesem Repository enthalten. Es besteht ABSOLUT KEINE GEWÄHRLEISTUNG, dass das von diesem Repository bereitgestellte sudo-Paket keine kritischen Sicherheitsprobleme aufweist.
Pull-Requests, die einen dieser Patches anwenden, sind sehr willkommen! Der vollständige Satz der Xenial-Patches (Stand sudo 1.8.16-0ubuntu1.10) ist zu Ihrer Bequemlichkeit in debian/patches in diesem Zweig verfügbar. Beachten Sie, dass die Precise (12.04)-Paketquellen (auf denen dieses Repository basiert) bereits alles bis einschließlich CVE-2014-9680.patch angewendet haben. Der vollständige Satz der bereits angewendeten Patches ist in .pc/applied-patches aufgeführt.
DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNGSFORDERUNGEN VERANTWORTLICH, SEI ES AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE SICH AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN MIT DER SOFTWARE ERGEBEN.
plugins/sudoers.rej-Dateien und wenden Sie die Änderungen manuell an. Dies ist der schwierige Teil, aber manchmal gar nicht so schwer. Der Grund dafür, dass die Patches nicht sauber angewendet werden, ist in der Regel, dass die Zeilennummern zu stark abweichen (die gepatchten Zeilen sind vorhanden, aber in einem anderen Abschnitt der gepatchten Datei) oder dass der Code in der 1.8.3p1-Codebasis anders aussieht. Solche Fehler sind ebenfalls lösbar; sie erfordern nur etwas mehr Nachdenken, Analyse des Codes und das Herausfinden, wie die Änderungen anzuwenden sind.