Live data from Hacker News

Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]

github.com

21–30 of 43 posts

Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]

#21
post #15
post #11

Earlier quoted context omitted.

It is sudo. It affects Linux, WSL, etc.

Sudo also runs, for example, on OpenBSD. Solaris, MacOS, etc.

I think OpenBSD stopped shipping `sudo` in the base system in favor of `doas`.

Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]

#22

For 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"?

If you segfault, you are vulnerable.

Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]

#23
post #5
post #3

I 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.

Did you run sudo apt-get update first?

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]

#24
post #4

macOS 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]

#25
This page has critical misinformation which has already caused confusion on this thread.

Version 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]

#26
Been 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

Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]

#27
If 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.

Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]

#28
post #4

macOS 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.

What is the simplest way to upgrade on macOS?

Re: Sudo buffer overflow explained, and how to patch (WSL and Linux) [video]

#29

If 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.

Normally you should use the source packages available to you. If you run configure and make on the upstream package, you will not only lose the patches CentOS normally applies to the package to integrate it better with the system, but your patch will also be untracked by the package manager.

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]

#30

Been 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

Not only that, but it lets you launch windows executables too.
Post reply on HN