Dzień dobry, kilka dni temuLinuxW funkcji gethostbyname standardowej biblioteki GNU glibc odkryto lukę w przepełnieniu bufora, a numer podatności to CVE-2015-0235. Hakerzy mogą korzystać z serii funkcji gethostbyname do wykonywania zdalnego kodu i jego pozyskiwaniaserwerTa luka ma wiele ścieżek wyzwalaczy i szeroki zakres skutku, prosimy o zwrócenie uwagi na nią i tymczasowe naprawienie jej na czas, a my zaktualizujemy ją tak szybko, jak to możliweLustrzane odbicieNapraw. Proszę wiedzieć.
1. Data wydania podatności
201527 stycznia 2019
2. Oprogramowanie i systemy, które zostały potwierdzone jako skuteczne
Glibc 2.2Do wersji 2.17 (obejmuje wersje 2.2 i 2.17)
3. Opis luk
GNU glibcW funkcji gethostbyname standardowej biblioteki ujawniono lukę wynikającą z przepełnienia bufora, a numer podatności to CVE-2015-0235. Glibc to biblioteka w języku C, która oferuje wywołania systemowe i podstawowe funkcje, takie jak open, malloc, printf itd. Wszystkie dynamicznie połączone programy korzystają z Glibc. Zdalny atakujący mógłby wykorzystać tę lukę, aby wykonać dowolny kod i eskalować uprawnienia użytkownika uruchamiającego aplikację.
4. Metody wykrywania podatności
Postępuj zgodnie z instrukcjamiEksploatacjaPuszka. #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define CANARY"in_the_coal_mine" struct { bufor char[1024]; kanarek char [sizeof(CANARY)]; } temp = { "buffer", CANARY }; int main(void) { Zbuduj Hostent resbuf; struct hostent *wynik; int herrno; int retval; /*** strlen (nazwa) = size_needed -rozmiarof(*host_addr) - sizeof(*h_addr_ptrs) - 1; ***/ size_t len = rozmiarof(temp.buffer) -16*sizeof(unsigned char) - 2*sizeof(char *) - 1; nazwa char[sizeof(temp.buffer)]; memset (imię, '0', len); imię[len] = '\0'; retval = gethostbyname_r(name,&resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno); if (strcmp(temp.canary, CANARY) !=0) { puts ("podatny"); exit(EXIT_SUCCESS); } if (retval == POMARAŃCZOWY) { puts ("niewrażliwy"); exit(EXIT_SUCCESS); } puts ("nie powinno się zdarzyć"); exit(EXIT_FAILURE);
}
Zapisz jako GHOST.c Run gcc GHOST.c -o GHOST
$./GHOST novulnerable Oznacza udaną naprawę.
5. Zaproponuj plany naprawcze
Specjalna uwaga: Ponieważ glibc jest podstawowym elementem systemu Linux, aby uniknąć wpływu łatania na serwerze, zaleca się wybrać odpowiedni czas na naprawę i upewnić się, że przed naprawą wykonasz kopię zapasową podczas operacji snapshot.
Centos 5/6/7:
Yum Update glibc
Ubuntu 12/14
apt-get aktualizacja
apt-get install libc6
Debian 6
wget -O /etc/apt/sources.list.d/debian6-lts.listhttp://mirrors.aliyun.com/repo/debian6-lts.list apt-get aktualizacja apt-get install libc6
Debian 7
apt-get aktualizacja
apt-get install libc6
Opensuse 13
zypper refresh
Zypper Update glibc*
Aliyun Linux 5u7
wget -O /etc/yum.repos.d/aliyun-5.repohttp://mirrors.aliyun.com/repo/aliyun-5.repo Yum Update glibc
|