这是一个定制版的 sudo,基于 Canonical 为 Ubuntu 12.04 提供的 sudo 1.8.3p1 软件包(使用下方的 URL),并已应用 CVE-2021-3156 补丁。
(最简单的下载并解压这些文件的方式,是在一台运行 Ubuntu 12.04 的机器上使用 apt-get source sudo。如果你不想在生产机器上折腾,这个 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,应用 Xenial 软件包中的所有 CVE-2021-3156 补丁。获取这些软件包的最简单方式是在一台 Xenial 机器上运行 apt-get source sudo,或者临时将 Xenial 的 apt-get 软件包源添加到你的 Precise 机器上:deb-src http://security.ubuntu.com/ubuntu xenial-security main。
patch -p1 < debian/patches/CVE-2021-3156-1.patch(9 个 hunk 中有 3 个失败)patch -p1 < debian/patches/CVE-2021-3156-2.patch(引用了不存在的文件)patch -p1 < debian/patches/CVE-2021-3156-3.patch(4 个 hunk 中有 1 个失败)patch -p1 < debian/patches/CVE-2021-3156-4.patch(引用了不存在的文件)patch -p1 < debian/patches/CVE-2021-3156-5.patch(1 个 hunk 中有 1 个失败)CVE-2021-3156-2 和 CVE-2021-3156-4 涉及插件(plugins/sudoers 中的文件)的修复,而这些文件在 1.8.3p1 版本中并不存在。我真诚地认为,由于这些代码在该版本中不存在,这些补丁不适用于我们的情况。
对于其他失败的 hunk,请查看 .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 软件包没有严重的安全问题。
欢迎任何应用这些补丁的 Pull Request,非常欢迎!为方便起见,此代码树中的 debian/patches 提供了全套 Xenial 补丁(截至 sudo 1.8.16-0ubuntu1.10)。请注意,Precise(12.04)软件包源(本仓库基于该源)已经应用了截至 CVE-2014-9680.patch 的所有补丁。已应用补丁的完整列表见 .pc/applied-patches。
本软件按“原样”提供,不附带任何明示或暗示的担保,包括但不限于对适销性、特定用途适用性以及不侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权行为还是其他原因,也不管是由于本软件或本软件的使用或其他交易而产生或与之相关。