Earlier quoted context omitted.
It is sudo. It affects Linux, WSL, etc.
Sudo also runs, for example, on OpenBSD. Solaris, MacOS, etc.
Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
21–30 of 43 posts
Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#22For the perl based check, what does it mean if you get a seg fault? Also for the `sudoedit -s /` check what does it mean if you get a "sorry, user X is not allowed to execute BLAH BLAH"?
Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#23I don't know much about WSL, but the instructions for this do not look right. Isn't WSL usually just a Linux distribution, so you should also use the package manager? If you just run ./configure && make && sudo make install, sudo will be installed to /usr/local as prefix. Doesn't this mean the unpatched binary at /usr/bin/sudoedit will still be accessible?
Yeah the instructions are poorly written. Also, in my case (ubuntu 20.04) running `sudo apt-get --only-upgrade install sudo` does nothing, the latest version available is 1.8.31-1ubuntu1.2.
I'm running WSL 2 here with Ubuntu 20.04 LTS and this is what worked for me, without having to install anything from source.
Without doing anything (vulnerable):
nick:~ $ sudoedit -s '\' `perl -e 'print "A" x 65536'`
malloc(): corrupted top size
Aborted
Then I ran this to patch it: sudo apt-get update && sudo apt-get --only-upgrade install sudo
And now this is the output (I guess not vulnerable anymore): nick:~ $ sudoedit -s '\' `perl -e 'print "A" x 65536'`
usage: sudoedit [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...
After patching it `dpkg -l | grep sudo` reports 1.8.31-1ubuntu1.2. I didn't think to run that before patching it but I'd guess it's going to be different.Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#24macOS doesn't have sudoedit, but you can make a symlink to it, as sudo is effectively a multi-call binary: ln -s `which sudo` sudoedit and then call it: ./sudoedit So don't take the lack of a `sudoedit` command as evidence that a system isn't vulnerable. I don't know if the sudo included with macOS has been exploited though.
% cd ~ && ln -s /usr/bin/sudo sudoedit && ./sudoedit -s \\
sudoedit(75875,0x109abbdc0) malloc: Incorrect checksum for freed object 0x7fcf2fc06bf8: probably modified after being freed.
Corrupt value: 0x737666635f343332
sudoedit(75875,0x109abbdc0) malloc: *** set a breakpoint in malloc_error_break to debug
zsh: abort ./sudoedit -s \\
Doesn't bode well at all for it being non exploitable (due to ASLR sometimes it doesn't crash tho)Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#25Version number alone cannot tell you if you are vulnerable or patched! Many, many Linux distributions, including (at least) Ubuntu and RHEL "backport" security fixes to older versions of the software. That means you could be using an old version of sudo, but still fully patched and protected from this exploit.
Edit: furthermore, the patching instructions for WSL is completely wrong and should not be followed. The correct procedure is to just get the update from your distro:
sudo apt-get update && sudo apt-get --only-upgrade install sudo
Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#26I sometimes can't decide if I want to use a familiar linux version of a program or a Windows version, but I like how WSL lets you access the windows file system
Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#27You'll need to install gcc, pam-devel and openldap-devel if you need it. Then you can build from source using ./configure --prefix=/usr && make && make install
Oh and remember to switch your repos to CentOS Vault instead of the default mirrorlist if you need the packages mentioned above.
Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#28macOS doesn't have sudoedit, but you can make a symlink to it, as sudo is effectively a multi-call binary: ln -s `which sudo` sudoedit and then call it: ./sudoedit So don't take the lack of a `sudoedit` command as evidence that a system isn't vulnerable. I don't know if the sudo included with macOS has been exploited though.
Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#29If anyone needs to patch CentOS 6 like I had to (I know, I know..), it's possible. You'll need to install gcc, pam-devel and openldap-devel if you need it. Then you can build from source using ./configure --prefix=/usr && make && make install Oh and remember to switch your repos to CentOS Vault instead of the default mirrorlist if you need the packages mentioned above.
Building a source package is trivial. Just download the srpm, run rpm -i just like you normally would. This will extract the package. Look at rpmbuild/SPECS directory. There is your "spec file" which is a list of patches to apply and the exact commands used to build the package.
Add the upstream patch that fixes the security problem and step the least significant version number. Run rpmbuild -ba on the spec file. A binary rpm will now be built that can be installed in the normal way. This may sound intimidating at first, but it is really very simple. Also, congratulations on your first step on maintaining a package.
Alternatively, you can also grab the latest version from Rawhide if it has the fix. This will often have the patch and you can lift it straight out and use on the old version. Or you could just build the new version, but there can be hard dependencies on newer libraries which may not be easily available to you.
Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]
#30Been waiting for a WSL thread. Does WSL have a performance hit on Windows 10? I sometimes can't decide if I want to use a familiar linux version of a program or a Windows version, but I like how WSL lets you access the windows file system