Новая уязвимость GHOST угрожает популярным дистрибутивам на базе Linux

Как вы знаете, уязвимости находят постоянно. Другое дело, что не каждый день находят такие, которые могут угрожать сразу всем популярным дистрибутивам на базе Linux. К тому же, на этот раз была найден именно такая, которая позволяет злоумышленнику получить удаленный контроль над системой. А это уже не шутки. Подробности читайте далее…

Что меня огорчило больше всего, так это тот факт, что под ударом оказались пользователи Debian 7 (wheezy), Red Hat Enterprise Linux 6 & 7, CentOS 6 & 7, Ubuntu 12.04. Я тоже использую такие системы в различных проектах, а значит настала пора позаботиться о них.

Более подробно об этой напасть можно прочесть в одноименной статье на хабр пройдя по ссылке: http://habrahabr.ru/company/pt/blog/249097/

Проверим систему на уязвимость GHOST

Уже существует программа написанная на C, способная проверить уязвимость вашей системы. Вот код который следует сохранить в файл ghosttest.c или любой другой (может вам нравится придумывать свои имена) и скормить его gcc

/* ghosttest.c:  GHOST vulnerability tester */
/* Credit: http://www.openwall.com/lists/oss-security/2015/01/27/9 */
#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];
  char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };
 
int main(void) {
  struct hostent resbuf;
  struct hostent *result;
  int herrno;
  int retval;
 
  /*** strlen (name) = 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 name[sizeof(temp.buffer)];
  memset(name, '0', len);
  name[len] = '\0';
 
  retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
 
  if (strcmp(temp.canary, CANARY) != 0) {
    puts("vulnerable");
    exit(EXIT_SUCCESS);
  }
  if (retval == ERANGE) {
    puts("not vulnerable");
    exit(EXIT_SUCCESS);
  }
  puts("should not happen");
  exit(EXIT_FAILURE);
}

А можно пойти немного другим путем и сделать следующим образом:

wget https://gist.githubusercontent.com/koelling/ef9b2b9d0be6d6dbab63/raw/de1730049198c64eaf8f8ab015a3c8b23b63fd34/gistfile1.c
gcc gistfile1.c -o CVE-2015-0235
./CVE-2015-0235

В результате вы получите либо

not vulnerable

и тогда все нормально, либо

vulnerable

и тогда вас стоит заняться пациентом.

Начинаем бороться с уязвимость GHOST в CentOS

Этот фикс подойдет для CentOS/RHEL/Fedora/Scientific Linux. Выполните следующие команды:

sudo yum clean all
sudo yum update

После всех обновлений перезагрузите систему

sudo reboot

Fix уязвимости GHOST в Ubuntu Linux

Выполняем команды:

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade

и после обновлений выполним перезагрузку:

sudo reboot

Теперь можно выполнить проверки и убедиться, что все хорошо.

./CVE-2015-0235
not vulnerable

Можно и дальше спокойно заниматься важными делами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *