[linux] bug v checkpassword ?

carcass carcass na gmx.net
Čtvrtek Listopad 9 02:47:42 CET 2000


zdravim,
checkpassword sa pouziva hlavne s qmail-popup na skontrolovanie 
login/hesla pri stahovani posty cez pop3, bug:

[root na omen bin]# cat /etc/shadow |grep nobody
nobody:*:9797:0:::::
[root na omen bin]# qmail-popup omen /usr/local/bin/checkpassword pwd
+OK <1064.973733057 na omen>
user nobody
+OK
pass hocico
-ERR aack, child crashed

par riadkov z checkpassword.c :

void doit(login)
char *login;
{
  pw = getpwnam(login);
  if (pw)
    stored = pw->pw_passwd;
  else {
    if (errno == error_txtbsy) _exit(111);
    _exit(1);
  }

-=-=snip=-=-

  encrypted = crypt(password,stored);

  for (i = 0;i < sizeof(up);++i) up[i] = 0;

  if (!*stored || strcmp(encrypted,stored)) _exit(1);

ak som to dobre pochopil, checkpassword zavola crypt() bez toho aby
skontroloval, ci "stored" obsahuje heslo s platnym salt-om. Takze ked
nejaky useri nemaju v /etc/shadov heslo so salt-om - ako napr. "*" 
alebo "!", checkpassword pri overovani ich hesla segfaultne.
"*" v /etc/shadow miesto hesla maju defaultne systemove ucty ako
nobody, games, ftp, uucp atd.
"!" maju v /etc/shadow ucty, ktorym este nebolo pridelene ziadne heslo.

qmailisti - mohol by sa na to este niekto pozriet ? hlavne by ma
zaujimalo na kolko je tento bug nebezpecny, ci sa da vobec nejak
zneuzit...
este doplnim ze ide o checkpassword 0.81, slack 7.1 (2.2.17) zatial
este bez PAM

-- 


			carcass
					<*===============*>
					  carcass na gmx.net




Další informace o konferenci linux