Olá, alguns dias atrásLinuxUma vulnerabilidade de overflow de buffer foi descoberta na função gethostbyname da biblioteca padrão GNU glibc, e o número da vulnerabilidade é CVE-2015-0235. Hackers podem usar a série de funções gethostbyname para executar código remoto e obtê-loServidorEssa vulnerabilidade possui muitos caminhos de gatilho e um grande impacto de impacto, por favor, preste atenção e a conserte temporariamente a tempo, e atualizaremos o quanto antesEspelhamentoConsertar. Por favor, saiba.
1. Data de liberação da vulnerabilidade
201527 de janeiro de 2019
2. Software e sistemas que foram confirmados como usados com sucesso
Glibc 2.2Até 2.17 (inclui versões 2.2 e 2.17)
3. Descrição de vulnerabilidades
GNU glibcUma vulnerabilidade de overflow de buffer foi exposta na função gethostbyname da biblioteca padrão, e o número da vulnerabilidade é CVE-2015-0235. Glibc é uma biblioteca C que fornece chamadas de sistema e funções básicas, como open, malloc, printf, etc. Todos os programas conectados dinamicamente usam Glibc. Um atacante remoto poderia explorar essa vulnerabilidade para executar código arbitrário e escalar os privilégios do usuário que executa a aplicação.
4. Métodos de detecção de vulnerabilidades
Siga as instruçõesOperaçãoPoder. #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #define CANÁRIO "in_the_coal_mine" struct { buffer de char[1024]; char canário[tamanho de(CANÁRIO)]; } temp = { "buffer", CANARY }; int main(void) { Struct Hostent Resbuf; struct hostent *resultado; Int Herrno; int retval; /*** strlen (nome) = size_needed -tamanhode (*host_addr) - tamanho de (*h_addr_ptrs) - 1; ***/ size_t len = tamanho(temp.buffer) -16*tamanhodo(caractero não assinado) - 2*tamanhodo(caracter*) - 1; nome do carvão [sizeof(temp.buffer)]; memset (nome, '0', len); nome[len] = '\0'; retval = gethostbyname_r(name,&resbuf, temp.buffer, sizeof(temp.buffer), & result, &herrno); if (strcmp(temp.canary, CANARY) !=0) { puts ("vulnerável"); saída(EXIT_SUCCESS); } if (retval == ERANGE) { puts ("não vulnerável"); saída(EXIT_SUCCESS); } puts ("não deve acontecer"); saída(EXIT_FAILURE);
}
Salvar como GHOST.c Execute gcc GHOST.c -o GHOST
$./GHOST novulnerable Representa um reparo bem-sucedido.
5. Sugira planos de reparo
Nota especial: Como glibc é um componente básico do sistema Linux, para evitar o impacto de patches no seu servidor, recomenda-se escolher um momento adequado para reparar e garantir que faça backup através da operação snapshot antes de reparar.
Centos 5/6/7:
Atualização do Yum Glibc
Ubuntu 14/12
Atualização apt-get
apt-get instalar libc6
Debian 6
wget -O /etc/apt/sources.list.d/debian6-lts.listhttp://mirrors.aliyun.com/repo/debian6-lts.list Atualização apt-get apt-get instalar libc6
Debian 7
Atualização apt-get
apt-get instalar libc6
Opensuse 13
Atualização do zypper
Atualização ZYPPER GLBC*
Aliyun linux 5u7
wget -O /etc/yum.repos.d/aliyun-5.repohttp://mirrors.aliyun.com/repo/aliyun-5.repo Atualização do Yum Glibc
|