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

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

nginx の Chunked Transfer Coding 処理には、chunk_size の取り扱いに起因したスタックバッファオーバーフローの脆弱性が存在します。

脆弱性と脅威 エクスプロイト
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

《吉澤 亨史( Kouji Yoshizawa )》

関連記事

特集

PageTop

アクセスランキング

  1. 富士通の複数の業務パソコンにマルウェア、個人情報を含むファイルを不正に持ち出せる状態に

    富士通の複数の業務パソコンにマルウェア、個人情報を含むファイルを不正に持ち出せる状態に

  2. ランサムウェアに身代金を支払う傾向の強い組織の構造が明らかに

    ランサムウェアに身代金を支払う傾向の強い組織の構造が明らかに

  3. 総務省「無線LANセキュリティガイドライン」更新、自宅と公衆に分冊

    総務省「無線LANセキュリティガイドライン」更新、自宅と公衆に分冊

  4. プロ e スポーツ選手のアカウントにハッキング

    プロ e スポーツ選手のアカウントにハッキング

  5. 日東製網へのランサムウェア攻撃、約 1 ヶ月で全システム復旧

    日東製網へのランサムウェア攻撃、約 1 ヶ月で全システム復旧

  6. 時給7,500円 ~ 総務省、非常勤サイバーセキュリティ人材募集 月2時間 霞が関勤務

    時給7,500円 ~ 総務省、非常勤サイバーセキュリティ人材募集 月2時間 霞が関勤務

  7. UDP ベースのアプリケーション層プロトコル実装にサービス運用妨害(DoS)の脆弱性

    UDP ベースのアプリケーション層プロトコル実装にサービス運用妨害(DoS)の脆弱性

  8. 脆弱性診断の新たな選択肢「ちょうどいいレベルの診断」を AeyeScan活用でサービス化 ~ NTTデータ先端技術

    脆弱性診断の新たな選択肢「ちょうどいいレベルの診断」を AeyeScan活用でサービス化 ~ NTTデータ先端技術PR

  9. 「サイバーセキュリティお助け隊サービス」制度に新たに 2 類を創設、価格要件を緩和

    「サイバーセキュリティお助け隊サービス」制度に新たに 2 類を創設、価格要件を緩和

  10. Jenkins に任意のファイルの読み取りが可能となるコマンドラインインターフェース機能におけるアクセス制御不備の脆弱性(Scan Tech Report)

    Jenkins に任意のファイルの読み取りが可能となるコマンドラインインターフェース機能におけるアクセス制御不備の脆弱性(Scan Tech Report)

ランキングをもっと見る