nginx の Chunked Transfer Coding 処理におけるスタックバッファーオーバーフローの脆弱性(Scan Tech Report) | ScanNetSecurity[国内最大級のサイバーセキュリティ専門ポータルサイト]
2017.10.23(月)

nginx の Chunked Transfer Coding 処理におけるスタックバッファーオーバーフローの脆弱性(Scan Tech Report)

脆弱性と脅威 エクスプロイト

1.概要
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
《吉澤 亨史》

関連記事

Scan PREMIUM 会員限定記事

もっと見る

Scan PREMIUM 会員限定記事特集をもっと見る

Scan BASIC 会員限定記事

もっと見る

Scan BASIC 会員限定記事特集をもっと見る

[Web小説] サイバー探偵 工藤伸治の事件簿サーガ (シーズン 1~6 第1話)

もっと見る

[Web小説] サイバー探偵 工藤伸治の事件簿サーガ (シーズン 1~6 第1話)特集をもっと見る

カテゴリ別新着記事

脆弱性と脅威 カテゴリの人気記事 MONTHLY ランキング

  1. 「KRACKs」に対して、現時点で想定される脅威と対策をまとめたレポート(NTTデータ先端技術)

    「KRACKs」に対して、現時点で想定される脅威と対策をまとめたレポート(NTTデータ先端技術)

  2. OSSに潜在する訴訟・脆弱性リスク

    OSSに潜在する訴訟・脆弱性リスク

  3. 「JP1/秘文」で作成した自己復号型機密ファイルに、DLL読込に関する脆弱性(HIRT)

    「JP1/秘文」で作成した自己復号型機密ファイルに、DLL読込に関する脆弱性(HIRT)

  4. 「DLL読み込み」の脆弱性の公表件数が急増、対策方法を紹介(IPA)

  5. Apache Tomcat において値検証不備により JSP ファイルがアップロード可能となる脆弱性(Scan Tech Report)

  6. WPA2の脆弱性「KRACKs」に注意喚起、通信を盗聴される可能性(JVN)

  7. 10月10日に「Office 2007」の延長サポートが終了、しかし40万台が今も利用(トレンドマイクロ)

  8. Apache Tomcatにおける、任意のファイルをアップロードされる脆弱性を検証(NTTデータ先端技術)

  9. マイクロソフトが10月のセキュリティ更新プログラムを公開、すでに悪用も(IPA)

  10. インシデントは「スキャン」が半数、フィッシングサイト報告件数は千件超え(JPCERT/CC)

全カテゴリランキング

特集

★★Scan PREMIUM 会員限定コンテンツにフルアクセスが可能となります★★
<b>★★Scan PREMIUM 会員限定コンテンツにフルアクセスが可能となります★★</b>

経営課題としてサイバーセキュリティに取り組む情報システム部門や、研究・開発・経営企画に携わる方へ向けた、創刊19年のセキュリティ情報サービス Scan PREMIUM を、貴社の事業リスク低減のためにご活用ください。

×