脆弱性の発見者:Cisco Talos の Tyler Bohan
概要
Talos は、NASA CFITSIO ライブラリ内に、リモートでコードが実行される脆弱性が 3 件あることを公表しました。CFITSIO は、Flexible Image Transport System(FITS)データ形式でデータ ファイルの読み取りと書き込みを行うための、C および Fortran のサブルーチンのライブラリです。FITS は、NASA および国際天文学連合(IAU)が承認した、天文学データに関する標準形式です。
巧妙に細工された画像がそのライブラリで解析されると、スタックベースのバッファ オーバーフローが発生し、任意のデータが上書きされることがあります。攻撃者は、悪意のある FIT 画像を送信することでこの脆弱性をトリガーし、コードを実行する能力を獲得する場合があります。
詳細
悪用が可能なバッファ オーバーフローの脆弱性は、CFITSIO ライブラリ バージョン 3.42 の画像解析機能に存在します。
FIT ファイル形式は、キーワードと値のペアを含む ASCII ヘッダーに画像のメタデータを格納します。キーワードと値のペアは、元の形式やコメント、履歴などの詳細を提供します。キーワードの解析関数のいくつかは、スタックベースのオーバーフローに対して脆弱です。多くの関数のエラー処理が正しく計算されず、細工されたキーワードと値が提示されると、スタックベースのバッファ オーバーフローが発生します。
TALOS-2018-0529/CVE-2018-3846
この脆弱性は、コード全体の複数の領域で発生します。キーワードと値/コメントのペアが、エラー メッセージ処理全体において、長さが正しくチェックされません。使用されるエラー バッファの容量が十分ではなく、細工された値/コメントのペアによってオーバーフローが引き起こされる可能性があります。これは特に、メイン ヘッダーの解析機能で発生します。
TALOS-2018-0530/CVE-2018-3847
fits_read_keyn 関数は、特定のキー名を解析、および値/コメント ペアを返します。前述したように、この脆弱性はこの関数のエラー処理に存在しています。攻撃者は、巧妙に細工された画像を送信することで、この関数のエラー メッセージを発生させ、エラー バッファの容量が十分でないためにバッファ オーバーフローが引き起こされます。
TALOS-2018-0531/CVE-2018-3848 – CVE-2018-3849
fits_read_btblhdr 関数は、FITS 画像内のバイナリ テーブルからデータを取得します。この関数の主な目的は、ヘッダーのキーワードを解析し、それらが FIT 標準に適合していることを確認するために検証することです。fits_read_btblhdr 関数は、エラー メッセージ処理で入力を正しくチェックせず、バッファ オーバーフローに対して脆弱です。
この脆弱性は、上記で説明した脆弱性に似ています。fits_read_atblhdr 関数は、FITS 画像内の ASCII テーブルの解析を行います。これもまた、エラーを適切に処理せず、バッファ オーバーフローに対して脆弱です。
詳細については、Talos の脆弱性レポートTALOS-2018-0529、TALOS-2018-0530、TALOS-2018-0531 を参照してください。
カバレッジ
この悪意ある試行は、以下の Snort ルールにより検出可能です。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、Firepower Management Center または Snort.org を参照してください。
Snort ルール:45697-45700、45701-45714
本稿は 2018年4月12日に Talos Group のブログに投稿された「Vulnerability Spotlight: TALOS-2018-0529-531 – Multiple Vulnerabilities in NASA CFITSIO library」の抄訳です。