nginx の Chunked Transfer Coding 処理におけるスタックバッファーオーバーフローの脆弱性(Scan Tech Report)
nginx の Chunked Transfer Coding 処理には、chunk_size の取り扱いに起因したスタックバッファオーバーフローの脆弱性が存在します。
脆弱性と脅威
エクスプロイト
nginx の Chunked Transfer Coding 処理には、chunk_size の取り扱いに起因したスタックバッファオーバーフローの脆弱性が存在します。
リモートの第三者に利用されると、Web サーバを DoS 状態とされる可能性、最悪の場合には任意のコードを実行される可能性があります。
nginx の Web サイトで配布されている Ubuntu/Debian 向けのバイナリパッケージを対象に任意のコードを実行する実証コードも公開されていることから、影響を受けるバージョンの nginx を利用する環境では、可能な限り以下に記載する対策を実施することを推奨します。
2.深刻度(CVSS)
6.4
http://nvd.nist.gov/cvss.cfm?name=&vector=(AV:N/AC:L/Au:N/C:N/I:P/A:P)&version=2
3.影響を受けるソフトウェア ※
nginx 1.3.9-1.4.0
※ 一部の Linux ディストリビューションもこの脆弱性の影響を受けます。
4.解説
nginx は ウェブサーバ・ソフトウェアです。この nginx の ngx_http_parse.cには、HTTP におけるデータ分割送信方式 Chunked Transfer Coding(*1) 処理に関連する ngx_http_parse_chunked() 関数があります。
この ngx_http_parse_chunked() 関数には、Chunked Transfer Coding における分割したデータサイズ chunk_size の取り扱いに起因したスタックバッファオーバーフローの脆弱性が存在します。
VNSECURITY の情報(*2)によると、64 bit 符号あり整数型(off_t)に格納された chunk_size が 32 bit 符号なし整数型(size_t)にキャスト処理され、最終的に 4096 バイトの buffer への書き込みサイズに指定されます。
64 bit 符号あり整数型における負数を chunk_size に指定しておくと、符号なしへのキャスト処理(signed から unsigned)により 4096 以上の整数となります。以上のことから、64 bit 符号あり整数型の負数を chunk_size に指定することで、バッファオーバーフローが発生します。
この脆弱性をリモートの第三者に利用されると、nginx の CPU 使用率を異常に高めることで Web サーバを DoS 状態とされる可能性、最悪の場合には任意のコードを実行される可能性があります。実際 Metasploit Framework のリボジトリにて、Ubuntu/Debian 向けバイナリパッケージ(バージョン 1.4.0)(*3)で任意のコード実行に成功した実証コードが公開されています(*4)。
(*1): http://tools.ietf.org/html/rfc2616#section-3.6.1
(*2): http://www.vnsecurity.net/2013/05/analysis-of-nginx-cve-2013-2028/
(*3): nginx の Web サイトで配布されていましたが、現在は 1.4.0 は配布されていません(1.4.1 が配布されています)。
(*4): https://community.rapid7.com/community/metasploit/blog/2013/05/30/weekly-update
5.対策
以下の Web サイトを参考に nginx 1.4.1/1.5.0 以降を入手しアップデートする、あるいは修正パッチを入手し適用することで、この脆弱性を解消することが可能です。
nginx: download
http://nginx.org/en/download.html
nginx security advisories: The patch
http://nginx.org/download/patch.2013.chunked.txt
また、Linux ディストリビューションにおいては、ディストリビューションごとに影響の有無が変わります。それぞれのディストリビューションに関連する情報を確認してください。
・Red Hat(Fedora)
Red Hat Bugzilla Bug 960605
https://bugzilla.redhat.com/show_bug.cgi?id=960605
影響を受けない。
・Ubuntu
CVE-2013-2028
http://people.canonical.com/~ubuntu-security/cve/2013/CVE-2013-2028.html
影響を受けない。
・Debian
CVE-2013-2028
https://security-tracker.debian.org/tracker/CVE-2013-2028
影響を受けない。
・Gentoo
Gentoo's Bugzilla Bug 468870
https://bugs.gentoo.org/show_bug.cgi?id=CVE-2013-2028
影響を受ける。
6.ソースコード
(Web非公開)
(執筆:株式会社ラック サイバー脅威分析センター)
※Web非公開該当コンテンツ閲覧をご希望の方はScan Tech Reportにご登録(有料)下さい。
Scan Tech Report
http://scan.netsecurity.ne.jp/archives/51916302.html
《吉澤 亨史( Kouji Yoshizawa )》