Hola, hace unos díasLinuxSe ha descubierto una vulnerabilidad de desbordamiento de búfer en la función gethostbyname de la biblioteca estándar glibc GNU, y el número de vulnerabilidad es CVE-2015-0235. Los hackers pueden usar la serie de funciones gethostbyname para ejecutar código remoto y obtenerloServidorEsta vulnerabilidad tiene muchos desencadenantes y un gran alcance de impacto; por favor, presta atención y arréglala temporalmente a tiempo, y la actualizaremos lo antes posibleEspejamientoArreglar. Por favor, que lo tengan en cuenta.
1. Fecha de lanzamiento de vulnerabilidades
201527 de enero de 2019
2. Software y sistemas que han sido confirmados como utilizados con éxito
Glibc 2.2Hasta la 2.17 (incluye las versiones 2.2 y 2.17)
3. Descripción de vulnerabilidades
GNU glibcSe expuso una vulnerabilidad de desbordamiento de búfer en la función gethostbyname de la biblioteca estándar, y el número de vulnerabilidad es CVE-2015-0235. Glibc es una biblioteca C que proporciona llamadas al sistema y funciones básicas, como open, malloc, printf, etc. Todos los programas conectados dinámicamente usan Glibc. Un atacante remoto podría aprovechar esta vulnerabilidad para ejecutar código arbitrario y escalar los privilegios del usuario que ejecuta la aplicación.
4. Métodos de detección de vulnerabilidades
Sigue las instruccionesFuncionamientoEnlatar. #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define CANARIO "in_the_coal_mine" struct { char buffer[1024]; char canary[tamaño de(CANARY)]; } temp = { "buffer", CANARY }; int main(void) { Struct Hostent Resbuf; struct hostent *resultado; int herrno; int retval; /*** strlen (nombre) = size_needed -tamañode(*host_addr) - tamañode(*h_addr_ptrs) - 1; ***/ size_t len = tamañode(tampón.temp) -16*tamañode(char sin signo) - 2*tamañode(char *) - 1; nombre del char [sizeof(temp.buffer)]; memset (nombre, '0', len); name[len] = '\0'; retval = gethostbyname_r(name,&resbuf, temp.buffer, sizeof(temp.buffer), & result, &herrno); si (strcmp(temp.canary, CANARY) !=0) { puts ("vulnerable"); salida(EXIT_SUCCESS); } if (retval == ERANGE) { puts ("no vulnerable"); salida(EXIT_SUCCESS); } puts ("no debería pasar"); salida(EXIT_FAILURE);
}
Guardar como GHOST.c Ejecuta gcc GHOST.c -o GHOST
$./GHOST novulnerable Representa una reparación exitosa.
5. Sugiere planes de reparación
Nota especial: Dado que glibc es un componente básico del sistema Linux, para evitar el impacto de los parches en tu servidor, se recomienda elegir un momento adecuado para reparar y asegurarte de hacer una copia de seguridad durante la operación de instantánea antes de reparar.
Centos 5/6/7:
Actualización Yum Glibc
Ubuntu 14/12
Actualización apt-get
apt-get install libc6
Debian 6
wget -O /etc/apt/sources.list.d/debian6-lts.listhttp://mirrors.aliyun.com/repo/debian6-lts.list Actualización apt-get apt-get install libc6
Debian 7
Actualización apt-get
apt-get install libc6
Opensuse 13
actualización de zypper
zypper update glibc*
Aliyun linux 5u7
wget -O /etc/yum.repos.d/aliyun-5.repohttp://mirrors.aliyun.com/repo/aliyun-5.repo Actualización Yum Glibc
|