あなたは本当に画像ファイルでトロイの木馬を手に入れることができますか?


11

数枚のLPをデジタル化し、カバーアートが必要になりました。私のスキャナーはアルバムをスキャンするのに十分な大きさではないので、ネットから画像を検索してダウンロードしました。

私がそうしたとき、アバストはそのうちの1つに「Win32:Hupigon-ONX」トロイの木馬が含まれていると報告し、すぐに検疫しました。チャンスを取りたくないので、クリーンと報告された別のコピーをダウンロードしました。

これはアバストからの単なる誤検知でしたか、それとも本当にjpgにトロイの木馬がいたのでしょうか?

どのように実行されますか?

トロイの木馬とウイルスのこの側面が常に私を困惑させたことを認めなければなりません。ソフトウェア開発者として、私は常に配列の長さなどをチェックしてきたので、なぜバッファーオーバーランのようなことが起こるのかわかりません。人々は手抜きをして間違いを犯すことを理解しています。ソフトウェアが十分に複雑な場合、これらのエラーはすり抜けることがあります。

回答:


11

画像ファイルのエクスプロイトは、OSの画像処理コードのバッファオーバーランの欠陥を利用します。数年前にWindowsのGDIレイヤーにいくつかの重大な欠陥が見つかりました-パッチはずっと前にリリースされましたが、エクスプロイトイメージはまだ残っているか、まだパッチが適用されていないマシンにヒットすることを望んでいるためです。 。

このようなセキュリティホールの通常の原因は、コールスタック上の関数間で画像データを渡し、データの最大長を適切にチェックしないことです。これは、サイズが大きすぎて、スタックフレーム内の次のコードを上書きする(他のコードで上書きする)か、他の関数を呼び出すために使用されるコードへのポインターを上書きするように配置された巧妙に構築されたデータによって悪用される可能性がありますまたは、呼び出された関数が呼び出し元(エクスプロイトコードを指すようにポインターを上書きする)、または別のホールが公開されるような方法でデータを上書きする呼び出し元です。正確な方法は、問題のセキュリティホールによって異なります。

最新のCPUは、コードがサポートしている場合、これらのエクスプロイトのほとんどを阻止する保護を備えています。これは、そのページのどれがデータであり、どれがコードであるかを明示的にマークするプログラム/ライブラリーによって動作します-データ(イメージデータなど)にあるものがコードとして実行されようとすると、CPUは例外を発生させます。IIRC Vista以降および.Netの最近のバージョンでは、この保護をサポートするためにすべてのライブラリが再調整されており、他のOSでもサポートされていますが、これはすべてのそのようなエクスプロイトを停止せず、明示的に有効にした場合にのみ機能します(そうでない場合は古いコードの多くが壊れます)。


9

トロイの木馬とウイルスのこの側面が常に私を困惑させたことを認めなければなりません。ソフトウェア開発者として、私は常に配列の長さなどをチェックしてきたので、なぜバッファーオーバーランのようなことが起こるのかわかりません。

さて、実世界へようこそ;-)。バッファオーバーフロー&c。(特に、Cのような手動のメモリ管理を持つものでは)多くの言語で発生する可能性があり、開発者がミスをして、彼らはないが起こります。

通常、バッファオーバーフローはプログラムをクラッシュさせるだけですが(セグメンテーション違反など)、攻撃者がコードを実行できるようになる可能性があります->トロイの木馬がアクティブになります。

例えば:

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories/35216/

そして、これがどのようにコード実行を許可するかについて説明します:

/programming/460519/how-are-buffer-overflows-used-to-exploit-computers


私はそれらが起こることを知っています-それはちょうどデータを処理するときに私がいつも行っていた基本的なチェックの1つです-データのための十分なスペースを持っている/割り当てていることを確認してください。
ChrisF

@ChrisF、という事実あなたは、あなたが「コンピュータ」とは対照的に、(チェックしても問題そのものであることを確認する必要があります。
Zabba

@Zabbaとは、データを処理するときに「チェックするプログラムをコーディングする」という意味でした。
ChrisF

3

2006年に、任意のコードを実行できる壊れたJPEGライブラリでバッファオーバーランを行うエクスプロイトがありました。マイクロソフトは、これまで見たこともないほど速く修正するパッチをリリースしました。お使いのマシンはほぼ確実に脆弱ではなく、Hupigonは非常に多くの誤検知を生成します。

http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?name=Win32/Hupigon


2

トロイの木馬とウイルスのこの側面が常に私を困惑させたことを認めなければなりません。ソフトウェア開発者として、私は常に配列の長さなどをチェックしてきたので、なぜバッファーオーバーランのようなことが起こるのかわかりません。人々は手抜きをして間違いを犯すことを理解しています。ソフトウェアが十分に複雑な場合、これらのエラーはすり抜けることがあります。

多分あなたはあなたのすべてのポインタ、配列などをチェックしていますが、あなたは(いつか)あなたが(おそらく)使用する任意の第3パテリライブラリのすべてのプログラマもそうしていると確信していますか?

これに対する最も簡単な解決策は、「image.jpg.exe」などのファイルまたは実際の画像の代わりに類似したものをダウンロードすることです。

PCに感染するより高度な方法については、すでにここで説明しています(例:バッファーオーバーフロー、...)


1
True-ただし、フォルダオプションを変更して拡張子を表示します。既知の拡張機能を非表示にすると、それが解決するより多くの問題が発生したと確信しています。実際、私はそれが実際に解決する問題を考えることはできません。
ChrisF

完全なack-Windowsで作業しているときにアクティブにする最初のオプションの1つ
Elvith

@ChrisF:まあ、明らかにそれが解決する問題は、そうしないと、ユーザーがファイル名を変更するときにファイルの拡張子を誤って変更してしまう可能性があることです。これにより、「ドキュメントのアイコンがおかしく見え、開くことができなくなりました。ヘルプ!」というよくある問題が発生します。:-)(そして、はい、私は時々家族のために技術サポートを行います)。
sleske

@sleske-Windows 7は、ファイルの名前を変更するときに拡張子を選択しません。
ChrisF

1
@ChrisF:興味深いことは知りませんでした。ただし、以前は異なっていました-少なくともWindows Server 2003は名前変更のために名前全体を選択します。とにかく、ユーザーが拡張機能を編集できる場合、彼らは:-)。
sleske
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.