Ahoj, pred pár dňamiLinuxV funkcii gethostbyname štandardnej knižnice GNU glibc bola objavená zraniteľnosť spôsobená pretečením vyrovnávacej pamäte a číslo zraniteľnosti je CVE-2015-0235. Hackeri môžu použiť sériu funkcií gethostbyname na vykonávanie vzdialeného kódu a jeho získanieServerTáto zraniteľnosť má mnoho spúšťacích ciest a veľký dopad, prosím, venujte jej pozornosť a dočasne ju opravte včas, a my ju budeme aktualizovať čo najskôrZrkadlenieOpraviť. Prosím, vedzte to.
1. Dátum uvoľnenia zraniteľnosti
201527. január 2019
2. Softvér a systémy, ktoré boli potvrdené ako úspešne používané
Glibc 2.2Až do verzie 2.17 (zahŕňa verzie 2.2 a 2.17)
3. Popis zraniteľností
GNU glibcZraniteľnosť pretečenia bufferu bola odhalená vo funkcii gethostbyname štandardnej knižnice a číslo zraniteľnosti je CVE-2015-0235. Glibc je C knižnica, ktorá poskytuje systémové volania a základné funkcie, ako sú open, malloc, printf a podobne. Všetky dynamicky prepojené programy používajú Glibc. Vzdialený útočník by mohol túto zraniteľnosť zneužiť na spustenie ľubovoľného kódu a zvýšenie oprávnení používateľa, ktorý aplikáciu spúšťa.
4. Metódy detekcie zraniteľností
Postupujte podľa pokynovPrevádzkaMôcť. #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define CANARY "in_the_coal_mine" struct { char buffer[1024]; kanárik char [sizeof(CANARY)]; } temp = { "buffer", CANARY }; int main(void) { Struct Hostent Resbuf; struct hostent *výsledok; int herrno; int retval; /*** strlen (názov) = size_needed -sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/ size_t len = sizeof(temp.buffer) -16*sizeof(unsigned char) - 2*sizeof (char *) - 1; char meno[sizeof(temp.buffer)]; memset (meno, '0', len); meno[len] = '\0'; retval = gethostbyname_r(meno,&resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno); if (strcmp(temp.canary, CANARY) !=0) { puts ("zraniteľný"); exit(EXIT_SUCCESS); } ak (retval == POMARANČ) { puts ("nezraniteľný"); exit(EXIT_SUCCESS); } puts ("nemalo by sa to stať"); exit(EXIT_FAILURE);
}
Uložiť ako GHOST.c Spusti gcc GHOST.c -o GHOST
$./GHOST novulnerable Predstavuje úspešnú opravu.
5. Navrhnúť plány opráv
Špeciálna poznámka: Keďže glibc je základnou súčasťou systému Linux, aby ste sa vyhli dopadu záplat na váš server, odporúča sa zvoliť vhodný čas na opravu a pred opravou si zálohovať počas operácie snapshot.
Centos 5/6/7:
Mňam, aktualizácia glibc
Ubuntu 12/14
apt-get update
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 update apt-get install libc6
Debian 7
apt-get update
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 Mňam, aktualizácia glibc
|