
glibcのgethostbyname系関数に脆弱性、「GHOST」と呼ばれる 34
ストーリー by hylom
これはでかい 部門より
これはでかい 部門より
あるAnonymous Coward 曰く、
クラウドセキュリティ企業Qualysの研究者が、GNU Cライブラリ(glibc)に深刻な脆弱性があることを発見した(JVNVU#99234709、CVE-2015-0235、ZDNet Japan)。
この脆弱性は「GHOST」と呼ばれており、これを利用することでリモートから任意のコードが実行される可能性があるという。
脆弱性が存在するのはglibc 2.2からglibc 2.17までで、piyologによるとglibcの__nss_hostname_digits_dots() にヒープバッファオーバーフローの脆弱性があり、この関数はgethostbyname()とgethostbyname2()で使われているという(Red Hat Bugzilla)。これら関数に細工されたURL文字列を与えることで、バッファオーバーフローを引き起こせる可能性があるようだ。
Qualysによれば、この問題は2013年5月21日にリリースされたglibc 2.17とglibc 2.18の間のバグフィックスで修正されているという。ところが、このバグフィックスはセキュリティ上の問題であるとは分類されていなかったため、多くのLinuxディストリビューションには適用されていないという。
未だに gethostbyname なんか使っているんじゃねぇよ (スコア:2)
Qualys のレポート [qualys.com]
- The gethostbyname*() functions are obsolete; with the advent of IPv6, recent applications use getaddrinfo() instead.
IPv6 に対応しようとしたら、必然的に getaddrinfo() を使うんで、意外に問題が起きないケースは少なく無さそう。
getaddrinfo() ならセーフかというと、厳密には getaddrinfo の中で gethostbyname2_r() を呼び出していて、でも、問題を引き起こすのには条件がキツイからセーフ、といった具合。ZDNet の記事 [zdnet.com]の煽り具合ほどでは無さそうな感じ。
Re:未だに gethostbyname なんか使っているんじゃねぇよ (スコア:2)
LinuxのgethostbynameはIPv4オンリーではなくIPv6もOKであるように拡張されてるような。
man gethostbynameより:
The gethostbyname() function returns a structure of type hostent for
the given host name. Here name is either a hostname, or an IPv4
address in standard dot notation (as for inet_addr(3)), or an IPv6
address in colon (and possibly dot) notation. (See RFC 1884 for the
description of IPv6 addresses.) If name is an IPv4 or IPv6 address, no
: