Cisco Talos は最近、Nitro Pro PDF リーダーでコード実行の脆弱性を複数発見しました。Nitro PDF はローカルコンピュータ上で PDF を閲覧、保存、署名、編集できるソフトウェアです。攻撃者によってエクスプロイトされると、最終的に被害者のマシン上で任意コードを実行される危険性があります。
Cisco Talos は、情報開示方針に従って Nitro Pro と協力し、今回の脆弱性が解決済みであり、影響を受けたユーザ向けにアップデートが利用可能であることを確認しています。
脆弱性の詳細
Nitro Pro のインデックスカラーを使用したレンダリング機能に起因する、任意コード実行の脆弱性(TALOS-2020-1070 / CVE-2020-6116)
Nitro Software 社が提供する Nitro Pro 13.13.2.242 のレンダリング機能には、任意コード実行の脆弱性が存在します。インデックスカラーの色を使用してページのコンテンツを描画する際に、色空間を割り当てるためのバッファサイズが誤って計算される可能性があります。誤ったサイズのバッファが割り当てられると境界外書き込みが発生してメモリ破壊が起き、任意コードを実行される危険性があります。この脆弱性は、細工されたドキュメントを読み込まない限りトリガーされません。
脆弱性のアドバイザリ全文はこちらをご覧ください。
Nitro Pro PDF の「ICCBased」色空間(ストロークカラー)に起因する、任意コード実行の脆弱性(TALOS-2020-1084 / CVE-2020-6146)
Nitro Pro 13.13.2.242 および 13.16.2.300 のレンダリング機能には、エクスプロイト可能なコード実行の脆弱性が存在します。アプリケーションがページのコンテンツを描画して「ICCBased」色空間からストロークカラーを選択する際は、ファイルから長さを読み取ります。オブジェクトメンバーにデータを書き込む際は、その長さをループのセンチネルとして使用します。このオブジェクトメンバーは静的サイズのバッファとしてヒープに割り当てられるため、ヒープベースのバッファオーバーフローを引き起こす可能性があります。この脆弱性は、細工されたドキュメントを読み込まない限りトリガーされません。
脆弱性のアドバイザリ全文はこちらをご覧ください。
Nitro Pro PDF の JPEG2000 ストライプサブサンプル復号機能と境界外書き込みに起因する、任意コード実行の脆弱性(TALOS-2020-1062 / CVE-2020-6112)
Nitro Software 社が提供する Nitro Pro 13.13.2.242 の JPEG2000 ストライプ復号機能には、サブサンプルの復号時にエクスプロイト可能な任意コード実行の脆弱性が発現します。サブサンプルデータを使用してタイル表示を初期化する際に、タイル表示内のストライプのポインタが誤って計算される場合があります。このため、デコーダが境界外への書き込みを行いメモリ破損が起き、結果として任意コードを実行される可能性があります。この脆弱性は、細工された PDF 内の埋め込み画像を読み込んだ際にトリガーされる可能性があります。
脆弱性のアドバイザリ全文はこちらをご覧ください。
Nitro Pro PDF のオブジェクトストリームに含まれるオブジェクト数の誤った解析に起因する、リモートコード実行の脆弱性(TALOS-2020-1063 / CVE-2020-6113)
Nitro Software 社が提供する Nitro Pro 13.13.2.242 のオブジェクトストリーム解析機能には、相互参照テーブルの更新時にエクスプロイト可能な脆弱性が発現します。PDF ドキュメントからのオブジェクトストリームを処理する際、間接オブジェクトのリストにメモリを割り当てるための計算が実行されます。このサイズ計算でエラーが発生すると整数オーバーフローが発生し、バッファの割り当て不足が起きる可能性があります。後でこのバッファが初期化される際、アプリケーションが境界外に書き込みを行い、メモリ破損が引き起こされ、結果として任意コードを実行される危険性があります。攻撃者は細工されたドキュメントを被害者に配信することで、この脆弱性をエクスプロイトできる可能性があります。
脆弱性のアドバイザリ全文はこちらをご覧ください。
Nitro Pro XRefTable エントリに対応するオブジェクトが見つからない場合に発生する任意コード実行の脆弱性(TALOS-2020-1068 / CVE-2020-6115)
Nitro Software 社 が提供する Nitro Pro 13.13.2.242 の相互参照テーブル修復機能には、エクスプロイト可能な脆弱性が存在します。このアプリケーションでは、相互参照テーブルに存在しない不正な形式のドキュメント内のオブジェクト識別子を検索する際、オブジェクトの相互参照テーブルエントリへの参照がスタック変数内に保存されます。参照されたオブジェクト識別子が見つからない場合、アプリケーションは相互参照テーブルのサイズを変更し、その結果、エントリの範囲が変更される可能性があります。その後、アプリケーションがスタック変数を介して相互参照エントリを参照しようとすると、アプリケーションは最近解放されたテーブルに属するメモリにアクセスし、use-after-free(メモリ解放後使用)状態を引き起こします。攻撃者は細工されたドキュメントを被害者に配信して読み込ませることで、この脆弱性をエクスプロイトできる可能性があります。
脆弱性のアドバイザリ全文はこちらをご覧ください。
脆弱性が確認されたバージョン
Talos では、Nitro Pro PDF バージョン 13.13.2.242 および 13.16.2.300 が今回の脆弱性の影響を受けることをテストして確認済みです。
カバレッジ
脆弱性のエクスプロイトは、以下の SNORTⓇ ルールで検出できます。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、Firepower Management Center または Snort.org を参照してください。
Snort ルール:53114、53115、53948、53949、53990 〜 53993、54010、54011、54047、54048
本稿は 2020 年 9 月 15 日に Talos Group のブログに投稿された「Vulnerability Spotlight: Multiple vulnerabilities in Nitro Pro PDF reader」の抄訳です。