Как вы знаете, уязвимости находят постоянно. Другое дело, что не каждый день находят такие, которые могут угрожать сразу всем популярным дистрибутивам на базе 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
Можно и дальше спокойно заниматься важными делами.