発見者:Cisco Talos
概要
Talos では、TALOS-2016-0259 / CVE-2016-8710.を公開します。libbpg ライブラリの BPG イメージの復号化には、ヒープ境界外への書き込みを行う脆弱性が存在します。細工された BPG イメージを libbpg で復号化することで、ヒープ境界外への書き込むを行う整数アンダーフローの脆弱性を生み、リモート コードを実行されるおそれがあります。libbpg を使用して細工された BPG イメージを復号化することで、この脆弱性がトリガーされる危険性があります。
詳細
BPG(Better Portable Graphics)は、2014 年に開発されたイメージ形式で、HECV のビデオ圧縮標準規格をベースにしています。BPG は、有名な JPEG 形式と同等の品質を持つイメージを生成しつつ、ファイル サイズを JPEG より抑えることができるため、高く評価されてきました。Talos は、libbpg ライブラリに存在するリモート コード実行の脆弱性を発表します。このライブラリは、ファイル形式のサポートによく使用されるものです。BPG の復号化時に、restore_tqb_pixels 関数では、mempcy の src オペランドと dst オペランドに対するオフセットの計算中に、攻撃者が制御する整数アンダーフローが発生する可能性があります。アンダーフローのため、memcpy に渡された計算後のアドレスは、元のヒープ構造体の境界外であり、結果として境界外に書き込みが行われます。この脆弱性を利用して、特別に細工した BPG イメージ ファイルを作成し、脆弱性の持つバージョンの libbpg ライブラリを使用したアプリケーションでイメージ ファイルがオープンされた場合に、リモート コードの実行を引き起こすことができます。脆弱性全体に関する詳細は、こちら をご覧ください。
既知の脆弱性バージョン
Libbpg 0.9.4 および 0.9.7
まとめ
Web サイトや電子メールに埋め込まれたイメージ ファイルは、いたるところに存在するため、イメージが存在してもユーザの疑惑を引き起こす可能性が低く、攻撃を誘導するために優れた手段と言えます。広くサポートされているイメージ形式に脆弱性が存在すれば、それは攻撃者にとっての贈り物です。ただ 1 つの弱点を突くことで、多数のシステムを攻撃できます。このような脆弱性が存在し、ときおり検出されるということを、組織は認識する必要があります。Talos は、このような脆弱性を攻撃される前に検出できるよう尽力しています。これにより、Talos の発見を公開し、脆弱性に対する悪意のある攻撃からお客様を保護できるようになります。脆弱性のあるバージョンのソフトウェアを使用している場合は、アドバイザリに記載されているパッチを適用することを推奨しています。
カバレッジ
この悪意ある試行は、以下の Snort ルールにより検出可能です。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、FireSIGHT Management Center、または Snort.org を参照してください。
Snort ルール:41310 – 41311
本稿は 2017年1月23日に Talos Group のブログに投稿された「Vulnerability Spotlight – LibBPG Image Decoding Code Execution」の抄訳です。