
CVE-2021-3156 패치가 적용된 sudo 1.8.3p1의 커스텀 버전
이것은 Canonical이 Ubuntu 12.04용으로 제공한 sudo 1.8.3p1 패키지를 기반으로, 아래 URL에서 CVE-2021-3156 패치가 적용된 사용자 정의 sudo 버전입니다.
(이 파일을 다운로드하고 압축을 푸는 가장 쉬운 방법은 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개 중 3개 hunk 실패)patch -p1 < debian/patches/CVE-2021-3156-2.patch (존재하지 않는 파일 참조)patch -p1 < debian/patches/CVE-2021-3156-3.patch (4개 중 1개 hunk 실패)patch -p1 < debian/patches/CVE-2021-3156-4.patch (존재하지 않는 파일 참조)patch -p1 < debian/patches/CVE-2021-3156-5.patch (1개 중 1개 hunk 실패)plugins/sudoers 파일)의 수정을 참조합니다. 해당 코드가 해당 버전에 존재하지 않으므로 이러한 패치는 우리의 경우에 적용되지 않는다고 확신합니다.$ 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는 매우 환영합니다! 편의를 위해 전체 Xenial 패치 세트(sudo 1.8.16-0ubuntu1.10 기준)는 이 트리의 debian/patches에 있습니다. 이 저장소의 기반이 되는 Precise (12.04) 패키지 소스는 이미 CVE-2014-9680.patch까지 모든 것을 적용했습니다. 이미 적용된 전체 패치 세트는 .pc/applied-patches에 나열되어 있습니다.
이 소프트웨어는 "있는 그대로" 제공되며, 명시적이든 묵시적이든 어떠한 종류의 보증도 하지 않습니다. 여기에는 상품성, 특정 목적에의 적합성 및 비침해에 대한 묵시적 보증이 포함되지만 이에 국한되지 않습니다. 어떠한 경우에도 저자 또는 저작권 소유자는 계약, 불법 행위 또는 기타 행위로 인해 발생하거나 소프트웨어와 관련된 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.
.rej 파일을 보고 수동으로 변경 사항을 적용하십시오. 이것이 어려운 부분이지만, 때로는 그렇게 어렵지 않습니다. 패치가 깔끔하게 적용되지 않는 이유는 일반적으로 줄 번호가 너무 다르거나(패치된 줄이 존재하지만 패치된 파일의 다른 섹션에 있는 경우), 또는 1.8.3p1 코드 베이스에서 코드가 다르게 보이기 때문입니다. 이러한 오류도 해결 가능합니다. 약간 더 생각하고 코드를 분석하고 변경 사항을 적용하는 방법을 파악해야 합니다.