[security] Poważny błąd w nscd? !!!

Jacek Konieczny jajcus w pld.org.pl
Pią, 16 Sty 2004, 19:22:06 CET


Dzisiaj miałem nieprzyjemne zdarzenie na swoim serwerku. Nagle wiele
usług zaczęło twierdzić, że localhost to 203.210.152.165.

Np. tak: 

Jan 16 12:21:01 rudi postfix/smtp[6761]: connect to
  localhost[203.210.152.165]: Connection refused (port 126)

Jak spróbowałem postfixa zrestartować, to nie wstał, bo próbował się
bindować do tego adresu.  Restart binda nie pomógł, po restarcie nie
działało rndc, które było skonfigurowane do przyjmowania połączeń
z "localhost"... więc pewnie w tamtej chwili z "203.210.152.165".

Pomógł restart nscd, które w PLD domyślnie jest ksonfigurowane to
keszowania gethostbyname(), gethostbyaddr() itp.

Wygląda na to, że to nscd u nas (i prawdopodobnie nie tylko u nas) jest
poważnie zwalone, bo:

$ host 203.210.152.165
165.152.210.203.in-addr.arpa domain name pointer localhost.

To sobie mógł każdy wpisać. Oczywiście w drugą stronę to nie działa, ale
wygląda na to, że nscd sobie podczas jakiegoś zapytania o ten IP
skeszował: 203.210.152.165 <=> localhost.
i od tego momentu zwraca "203.210.152.165" jako adres "localhost."

Sprawa jest poważana, bo zarówno IP jak i nazwa mogłyby być dowolne
(chociażby "www.pld-linux.org").

Nie dam rady dzisiaj tego dokładnie zbadać - czy to tylko u nas, gdzie
dokładnie jest błąd itp. - więc na żadne bugtraq o tym nie napiszę, ale
warto byłoby się tym zająć.

Workaround jest prosty: zahashować keszowanie "hosts" w nscd, albo
odinstalować nscd. To drugie u mnie nie wchodzi w grę, bo używam
nss_pgsql i tyle zapytań do bazy mogłoby zabić mi system.

Pozdrowienia,
        Jacek 



Więcej informacji o liście dyskusyjnej pld-devel-pl