Qpopper v4.0.x poppassd local root exploit

 Date de Publication: 2003-04-29
 Titre: Qpopper v4.0.x poppassd local root exploit
 K-Otik ID : 0041
 Exploitable à distance : Non
 Exploitable en local : Oui

 
 * Description Technique - Exploit *
 
Qpopper poppassd est un programme qui qui sert à changer les mots de passe système, permettant de ce fait à des utilisateurs de changer leurs passe mail. Un problème de sécurité existe dans poppassd qui est inclus par défaut dans Qpopper v4.0.x. Cette faille de sécurité, l'élévation de privilèges utilisateur vers root (puisque poppassd est exécuté sous root "uid 0").

--------------------------- 
password/poppassd.c  --------------------------

 170 #define PASSWD_BINARY "/usr/bin/passwd"   /* TBD: config.h */
 171 #define SMBPASSWD_BINARY "/usr/bin/smbpasswd" /* TBD:config.h */
 711  int dochild (int master, char *slavedev, char *userid, int smb)
 712  {
 781     if (!smb)
 782     {
 784   setregid ( pw->pw_gid, pw->pw_gid ); //
 785   setreuid ( pw->pw_uid, pw->pw_uid ); //
 786
 787  execl ( pwd_binary, "passwd", NULL ); // executé par "user".
 788
 789  err_msg ( HERE, "can't exec %s", pwd_binary );
 790       exit ( 1 );
 791     }
 792     else
 793     {
 794 TRACE ( trace_file, POP_DEBUG, HERE, "...changing smb password" );
 795 execl ( smb_binary, "smbpasswd", userid, NULL ); // exécuté par "root"
 796
 797       err_msg ( HERE, "can't exec %s", smb_binary );
 798       exit ( 1 );
 799     }
 800  }

--------------------------------------------------------------------------------



  * Versions Vulnérables *
 
qpopper4.0.5
qpopper4.0.4
qpopper4.0.3
qpopper4.0.x


  * Solution *
 
http://www.qualcomm.com

  * Crédits *
 
Faille découverte par l'équipe de
INetCop Security (Avril 2003).