getaddrinfo() 취약점에 대한 Glibc 패치

getaddrinfo() 취약점에 대한 Glibc 패치

나는 공격자가 (어렵긴 하지만) 악용할 수 있는 glibc 라이브러리에서 새로 발견된 취약점에 대해 많이 보아왔습니다.

다음은 주제에 관한 (불과 유황) 기사입니다: http://arstechnica.com/security/2016/02/extremely-severe-bug-leaves-dizzying-number-of-apps-and-devices-vulnerable/

저는 취약점의 성격을 이해하지만 패치 솔루션을 읽을 때 약간의 혼란을 겪는다는 점을 인정해야 합니다. 기계에서 여러 단계를 거쳐야 할 것 같은데, 이메일에 "패치"가 첨부되어 있다고 뜹니다.

패치가 정확히 어디에 있나요?

https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html

사과드립니다. 하지만 저는 Linux 시스템 엔지니어가 아닙니다(aptitude와 yum은 제 친구입니다).

불행하게도 저는 주로 Amazon Linux에서 클라이언트를 위해 관리하는 사이트 몇 개를 읽었는데, 이 사이트도 취약할 수 있습니다. 그런 사이트가 있다고 가정해 보겠습니다.

나는 단지 상자를 안전하게 보호하고 싶고 아마도 패치를 적용할 수 있을지 모르지만 glibc 메일 아카이브 때문에 혼란스러워하는 것 같습니다.

누구든지 이에 대해 밝힐 수 있습니까? 즉, 낮은 수준의 프런트 엔드 웹 개발자가 이해할 수 있는 언어로 설명할 수 있습니까?

나는 이것이 새로운/진화하고 있다는 것을 알고 있습니다. 앞으로 더 나은 문서를 사용할 수 있을 것이라고 확신합니다.

미리 감사드립니다.

답변1

합리적으로 잘 지원되는 배포판을 사용하는 경우 원본 패치 자체가 필요하지 않습니다. 대부분의 배포판은 지금쯤 libc를 업데이트하고 이를 저장소에 푸시했을 것이며, 패키지 관리자를 사용하여 libc를 업그레이드하기만 하면 됩니다. (지금까지 그렇게 하지 않았다면 배포판 전환을 심각하게 고려하십시오.) Amazon Linux의 경우도 마찬가지입니다. 에서보안 게시판:

AWS가 아닌 DNS 인프라를 사용하도록 구성을 수정한 Amazon EC2를 사용하는 고객은 Linux 배포판에서 제공하는 지침에 따라 즉시 Linux 환경을 업데이트해야 합니다. AWS DNS 인프라를 사용하는 EC2 고객은 영향을 받지 않으며 어떠한 조치도 취할 필요가 없습니다.

Amazon Linux를 사용하고 AWS가 아닌 DNS 인프라를 사용하도록 구성을 수정한 Amazon EC2 고객의 경우:

CVE-2015-7547에 대한 수정 사항이 심각도 등급으로 Amazon Linux AMI 리포지토리에 푸시되었습니다. 2016년 2월 16일 또는 그 이후에 기본 Amazon Linux 구성으로 시작된 인스턴스에는 이 CVE에 필요한 수정 사항이 자동으로 포함됩니다.

패치를 보고 싶다면 diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c이메일에서 다음으로 시작하는 부분을 확인하세요.

CVE-2015-7547

2016-02-15  Carlos O'Donell  

    [BZ #18665]
    * resolv/nss_dns/dns-host.c (gaih_getanswer_slice): Always set
    *herrno_p.
    (gaih_getanswer): Document functional behviour. Return tryagain
    if any result is tryagain.
    * resolv/res_query.c (__libc_res_nsearch): Set buffer size to zero
    when freed.
    * resolv/res_send.c: Add copyright text.
    (__libc_res_nsend): Document that MAXPACKET is expected.
    (send_vc): Document. Remove buffer reuse.
    (send_dg): Document. Remove buffer reuse. Set *thisanssizp to set the
    size of the buffer. Add Dprint for truncated UDP buffer.

diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
index a255d5e..47cfe27 100644
--- a/resolv/nss_dns/dns-host.c
+++ b/resolv/nss_dns/dns-host.c
@@ -1031,7 +1031,10 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
   int h_namelen = 0;

   if (ancount == 0)
-    return NSS_STATUS_NOTFOUND;
+    {
+      *h_errnop = HOST_NOT_FOUND;
+      return NSS_STATUS_NOTFOUND;
+    }

...

관련 정보