부인 성명

부인 성명

~이든스펙터 취약성영향을 받는 운영 체제에 액세스(예: 로그인한 사용자로)가 필요합니까? 누군가 "애플리케이션 호출을 할 수 있는 원격 공격자"를 명확히 할 수 있습니까? 원격 호스트에서 실행되는 테스트가 아닌 로컬 시스템에서 직접 실행되는 테스트만 찾는 것 같습니다.

지금까지 내가 모은 모든 것스펙터 취약성여러 출처에서(해당 출처를 인용하여) 다른 사람이 궁금해할 경우를 대비해 아래 답변을 게시했습니다.

편집, 내 것을 찾았습니다답변:

코드 감사 중에 Qualys 연구원은 glibc의 __nss_hostname_digits_dots() 함수에서 버퍼 오버플로를 발견했습니다. 이 오류가 발생할 수 있습니다로컬 및 원격모든 gethostbyname*() 함수를 통해. 응용 프로그램은 주로 gethostbyname*() 함수 세트를 통해 DNS 확인자에 액세스합니다. 이 함수는 호스트 이름을 IP 주소로 변환합니다.

답변1

내 질문에 답해 주세요.퀄리스:

테스트하는 동안 우리는 특별히 생성된 이메일을 메일 서버로 보내고 Linux 시스템에 대한 원격 셸을 얻을 수 있는 개념 증명을 개발했습니다.이는 기존의 모든 보호를 우회합니다.(ASLR, PIE, NX 등)을 32비트 및 64비트 시스템에서 사용할 수 있습니다.


나는 다른 사람들을 위해 다음과 같은 연구를 편집했습니다.


부인 성명

다른 많은 스레드/블로그에서 알려줄 수 있는 내용에도 불구하고 저는 다음을 권장합니다.아니요업데이트를 철저하게 테스트하지 않고 보유한 모든 운영 체제를 맹목적으로 즉시 업데이트하십시오 glibc. glibc 업데이트로 인해 수많은 애플리케이션 세그폴트가 발생하여 사람들이 glibc 업데이트를 이전 버전으로 롤백해야 하는 것으로 보고되었습니다.

사람들은 테스트 없이 단순히 대규모로 프로덕션을 업데이트하지 않습니다.


배경 정보

GHOST는 glibc 라이브러리의 gethostbyname() 및 gethostbyname2() 함수 호출에 영향을 미치는 "버퍼 오버플로" 버그입니다. 이 취약점으로 인해 애플리케이션이 이러한 기능을 호출하는 원격 공격자가 해당 애플리케이션을 실행하는 사용자의 권한으로 임의의 코드를 실행할 수 있습니다.

영향

gethostbyname() 함수 호출은 매우 일반적인 이벤트인 DNS 확인에 사용됩니다. 이 취약점을 악용하려면 공격자는 DNS 확인을 수행하는 응용 프로그램에 잘못된 호스트 이름 매개 변수를 제공하여 버퍼 오버플로를 유발해야 합니다.

현재 영향을 받는 Linux 배포판 목록

RHEL(Red Hat Enterprise Linux) 버전 5.x, 6.x 및 7.x

RHEL 4 ELS              fix available ---> glibc-2.3.4-2.57.el4.2
Desktop (v. 5)          fix available ---> glibc-2.5-123.el5_11.1
Desktop (v. 6)          fix available ---> glibc-2.12-1.149.el6_6.5
Desktop (v. 7)          fix available ---> glibc-2.17-55.el7_0.5
HPC Node (v. 6)         fix available ---> glibc-2.12-1.149.el6_6.5
HPC Node (v. 7)         fix available ---> glibc-2.17-55.el7_0.5
Server (v. 5)           fix available ---> glibc-2.5-123.el5_11.1
Server (v. 6)           fix available ---> glibc-2.12-1.149.el6_6.5
Server (v. 7)           fix available ---> glibc-2.17-55.el7_0.5
Server EUS (v. 6.6.z)   fix available ---> glibc-2.12-1.149.el6_6.5
Workstation (v. 6)      fix available ---> glibc-2.12-1.149.el6_6.5
Workstation (v. 7)      fix available ---> glibc-2.17-55.el7_0.5

CentOS Linux 버전 5.x, 6.x 및 7.x

CentOS-5    fix available ---> glibc-2.5-123.el5_11
CentOS-6    fix available ---> glibc-2.12-1.149.el6_6.5
CentOS-7    fix available ---> glibc-2.17-55.el7_0.5

우분투 리눅스 버전 10.04, 12.04 LTS

10.04 LTS   fix available ---> libc6-2.11.1-0ubuntu7.20
12.04 LTS   fix available ---> libc6-2.15-0ubuntu10.10

데비안 리눅스 버전 6.x, 7.x

6.x squeeze              vulnerable
6.x squeeze (LTS)        fix available ---> eglibc-2.11.3-4+deb6u4
7.x wheezy               vulnerable
7.x wheezy (security)    fix available ---> glib-2.13-38+deb7u7

리눅스 민트 버전 13.0

Mint 13    fix available ---> libc6-2.15-0ubuntu10.10

Fedora Linux 버전 19(또는 이전 버전으로 업그레이드해야 함)

Fedora 19 - vulnerable - EOL on Jan 6, 2014 (upgrade to Fedora 20/21 for patch)

SUSE Linux 엔터프라이즈 에디션

Server 10 SP4 LTSS for x86                    fix available ---> glibc-2.4-31.113.3
Server 10 SP4 LTSS for AMD64 and Intel EM64T  fix available ---> glibc-2.4-31.113.3
Server 10 SP4 LTSS for IBM zSeries 64bit      fix available ---> glibc-2.4-31.113.3
Software Development Kit 11 SP3               fix available ---> glibc-2.11.3-17.74.13
Server 11 SP1 LTSS                            fix available ---> glibc-2.11.1-0.60.1
Server 11 SP2 LTSS                            fix available ---> glibc-2.11.3-17.45.55.5
Server 11 SP3 (VMware)                        fix available ---> glibc-2.11.3-17.74.13
Server 11 SP3                                 fix available ---> glibc-2.11.3-17.74.13
Desktop 11 SP3                                fix available ---> glibc-2.11.3-17.74.13

openSUSE(11 이전 버전은 업그레이드해야 함)

11.4 Evergreen     fix available ---> glibc-2.11.3-12.66.1
12.3               fix available ---> glibc-2.17-4.17.1


제거된 glibc를 아직 사용하고 있는 패키지/응용 프로그램은 무엇입니까?

(자일스의 신용)

CentOS/RHEL/Fedora/Scientific Linux의 경우:

   lsof -o / | awk '
   BEGIN {
       while (("rpm -ql glibc | grep \\\\.so\\$" | getline) > 0)
           libs[$0] = 1
   }
   $4 == "DEL" && $8 in libs {print $1, $2}'

우분투/데비안 리눅스의 경우:

   lsof -o / | awk '
   BEGIN {
       while (("dpkg -L libc6:amd64 | grep \\\\.so\\$" | getline) > 0)
           libs[$0] = 1
   }
   $4 == "DEL" && $8 in libs {print $1, $2}'

내 Linux 시스템에서는 어떤 C 라이브러리(glibc) 버전을 사용합니까?

버전 번호를 확인하는 가장 쉬운 방법은 다음 명령을 실행하는 것입니다.

ldd --version

RHEL/CentOS Linux v6.6의 출력 예:

ldd (GNU libc) 2.12
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

Ubuntu Linux 12.04.5 LTS의 출력 예:

ldd (Ubuntu EGLIBC 2.15-0ubuntu10.9) 2.15
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

Debian Linux v7.8의 출력 예:

ldd (Debian EGLIBC 2.13-38+deb7u6) 2.13
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

GHOST 취약점 점검

University of Chicago는 쉽게 다운로드할 수 있도록 다음 스크립트를 호스팅합니다.

$ wget https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
[OR]
$ curl -O https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
$ gcc GHOST.c -o GHOST
$ ./GHOST
[responds vulnerable OR not vulnerable ]
/* 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);
}

다음과 같이 컴파일하고 실행합니다.

$ gcc ghosttester.c -o ghosttester
$ ./ghosttester
[responds vulnerable OR not vulnerable ]

Red Hat Access Lab: GHOST 도구 이 도구를 사용하지 마십시오. 보고가 잘못되었으며 Qualys의 취약성 검사기는 정확합니다.


반점


CentOS/RHEL/Fedora/사이언티픽 리눅스

sudo yum clean all
sudo yum update

적용하려면 지금 다시 시작하세요.

sudo reboot

또는 이미지에 최신 패키지가 포함되어 있지 않으면 수동으로 다운로드하세요. *참고: 고급 사용자의 경우

센트OS 5

http://mirror.centos.org/centos/5.11/updates/x86_64/RPMS/

운영체제 6

mkdir ~/ghostupdate
cd ~/ghostupdate

wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-devel-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-common-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/nscd-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-static-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-headers-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-utils-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-2.12-1.149.el6_6.5.x86_64.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-static-2.12-1.149.el6_6.5.i686.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-devel-2.12-1.149.el6_6.5.i686.rpm
wget http://mirror.centos.org/centos/6.6/updates/x86_64/Packages/glibc-2.12-1.149.el6_6.5.i686.rpm

yum localupdate *.rpm [OR] rpm -Uvh *.rpm

우분투/데비안 리눅스

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

재시작:

sudo reboot

SUSE Linux 엔터프라이즈 에디션

이 SUSE 보안 업데이트를 설치하려면 YaST online_update를 사용하세요. 또는 버전에 따라 다음 명령을 사용하십시오.

SUSE Linux Enterprise 소프트웨어 개발 키트 11 SP3

zypper in -t patch sdksp3-glibc-10206

VMware용 SUSE Linux Enterprise Server 11 SP3

zypper in -t patch slessp3-glibc-10206

수세 리눅스 엔터프라이즈 서버 11 SP3

zypper in -t patch slessp3-glibc-10206

수세 리눅스 엔터프라이즈 서버 11 SP2 LTSS

zypper in -t patch slessp2-glibc-10204

수세 리눅스 엔터프라이즈 서버 11 SP1 LTSS

zypper in -t patch slessp1-glibc-10202

SUSE Linux 엔터프라이즈 데스크탑 11 SP3

zypper in -t patch sledsp3-glibc-10206

마지막으로 모든 SUSE Linux 버전을 실행하여 시스템을 최신 상태로 유지하세요.

zypper patch

SUSE Linux 열기

OpenSUSE Linux에서 사용 가능한 업데이트(glibc 포함) 목록을 보려면 다음을 입력하세요.

zypper lu

설치된 glibc 패키지를 사용 가능한 최신 버전으로 업데이트하려면 다음을 실행하세요.

zypper up

컴퓨터에서 실행되는 거의 모든 프로그램은 glibc를 사용합니다. 패치가 적용되도록 하려면 glibc를 사용하는 모든 서비스나 애플리케이션을 다시 시작해야 합니다. 따라서 다시 시작하는 것이 좋습니다.


재부팅하거나 시스템에 영향을 주지 않고 init를 다시 시작하는 방법은 무엇입니까?

telinit u

' man telinit ' -- U 또는 u는 init(8) 데몬이 자체적으로 재실행되도록 요청합니다. Upstart는 현재 상태를 유지할 수 없으므로 권장되지 않지만 시스템 라이브러리를 업그레이드할 때는 필요합니다.


위협을 즉시 완화하려면제한된이는 모든 공개 서비스에서 역방향 DNS 검사를 비활성화하여 수행됩니다. 예를 들어, 를 UseDNS사용하여 이 작업을 수행 할 수 있습니다 .no/etc/ssh/sshd_config

출처(및 추가 정보):

  1. https://access.redhat.com/articles/1332213
  2. http://www.cyberciti.biz/faq/cve-2015-0235-patch-ghost-on-debian-ubuntu-fedora-centos-rhel-linux/
  3. http://www.openwall.com/lists/oss-security/2015/01/27/9
  4. https://security.stackexchange.com/questions/80210/ghost-bug-is-there-a-simple-way-to-test-if-my-system-is-secure
  5. http://bobcares.com/blog/ghost-hunting-resolving-glibc-remote-code-execution-vulnerability-cve-2015-0235-in-centos-red-hat-ubuntu-debian-and-suse-linux- 섬기는 사람
  6. https://community.qualys.com/blogs/laws-of-vulnerability/2015/01/27/the-ghost-vulnerability
  7. https://security-tracker.debian.org/tracker/CVE-2015-0235

관련 정보