web-dev-qa-db-ja.com

破損したイメージの脆弱性とは何ですか?それはどのように機能しますか?

悪意のあるバイナリコードを画像ファイルに挿入すると(Windowsの場合)、正確にはどうなりますか?それはどのように行われますか?

22
Moshe

このような攻撃は、バグが含まれているイメージパーサーに依存しています。このバグにより、少し風変わりな画像の実行が可能になります。

たとえば、「赤」が色として解釈される代わりに、コンピュータがそれをシェルコマンドとして解釈しようとする場合があります。

12
Zian Choy

@Zianが言及しているバッファオーバーフロータイプのバグよりもはるかに一般的です(最近、Windowsにこの種のWMFの脆弱性が4〜5年前にあったと思います)は、次のようなものです [〜#〜] gifar [〜#〜] (SOでも検索):
有効な画像ファイル(例:GIF)と有効なZipファイル(例:JAR(Javaバイトコード))の両方であるファイル。
これは、これらの形式がヘッダーを格納する方法が原因で可能です。具体的には、相互に排他的ではありません。

したがって、実行するすべての妥当性チェックに合格するファイルを作成できますが、それがブラウザーに表示されるとJavaコードが実行されます(有効なJARファイルをダウンロードしただけなので、ディンチャ?)

私の知る限りでは、これは主要ベンダーによって修正されていますが、私は本当に最新ではないことを認めます。
(GIFARの元の発見者は見つけることができます ここ 。)

8
AviD

「画像」とは、JPEGやGIFのようなものです。

その答えは、古いソフトウェアにはバグがあり、画像を表示すると混乱する可能性があるということです。たとえば、画像内にはコメントフィールドがあり、通常は表示されませんが、写真を撮ったiPhoneカメラのGPS座標などを含めることができます。一般的なソフトウェアでは、これらのコメントが100文字を超えることはないと想定していますが、ハッカーは10,000文字のコメントを作成するなど、とんでもないことを行うことができます。ソフトウェアはこれを安全に拒否するはずですが、そうでないものもあり、予期しない文字がメモリの他の領域にオーバーフローするというバグがあります。ハッカーがこれらの10,000バイトを適切に作成した場合、彼はバグのあるソフトウェアにコードを実行させることができます。

私たち人間がそれらのコメントが短い英語のテキストであることを期待しているからといって、ハッカーがこれらのフィールドに長い実行可能なコードを入力することを妨げるものではありません。

MSPaintからInternet Explorer、Microsoft Wordまで、このようなバグが存在する可能性のあるさまざまなコードがたくさんあります。それらはすべて同じことをするために異なるコードを使用し、それらはすべて異なるバグを持っています。そのため、ソフトウェアを最新の状態に保ち、新しいバグが発見されたときにこれらの破損したイメージが影響を及ぼさないようにする必要があります。

5

コメントから質問まで、私は実行可能イメージ(おっと、「イメージ」がディスクのコピーと衝突する、たとえば、実行可能スクリプト(プログラム)として人間に見えるように、実行可能スクリプト(プログラム)としてコンピュータに見える、実行可能/実行可能なスクリプトまたはプログラムである画像:

更新:
ここに、ウイルス(PHP、JavaScript、ActionScriptなど)のコードを画像に埋め込む方法に関するもう1つのリファレンスがあります。