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 メール アーカイブで混乱しているようです。

誰かこれについて説明してくれませんか?つまり、私たちのような下級フロントエンド Web 開発者が理解できる言葉で説明してくれませんか?

これは新しい/進化しているものだとわかっていますが、今後数日でより良いドキュメントが利用可能になると確信しています。

前もって感謝します。

答え1

十分にサポートされているディストリビューションを使用している場合、元のパッチ自体は必要ありません。ほとんどのディストリビューションでは、すでにlibcを更新してリポジトリにプッシュしているため、パッケージマネージャーを使用してlibcをアップグレードするだけで済みます。(まだアップグレードしていない場合は、ディストリビューションの切り替えを真剣に検討してください。)Amazon Linuxの場合、まさにこれが当てはまります。セキュリティ速報:

Amazon EC2 を使用しており、AWS 以外の DNS インフラストラクチャを使用するように設定を変更したお客様は、Linux ディストリビューションの指示に従って、Linux 環境を直ちに更新する必要があります。AWS DNS インフラストラクチャを使用している EC2 のお客様は影響を受けないため、何もする必要はありません。

Amazon Linux を使用しており、AWS 以外の DNS インフラストラクチャを使用するように設定を変更した Amazon EC2 のお客様の場合:

CVE-2015-7547 の修正が Amazon Linux AMI リポジトリにプッシュされ、重大度は「重大」と評価されています。2016/02/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;
+    }

...

関連情報