web-dev-qa-db-ja.com

画像ファイルに任意のデータを保存することはできますか?

ドキュメントやプログラムなどの任意のデータをPNG画像などの画像ファイルの形式で保存することはできますか?私の懸念は、誰かがマルウェアが使用するデータを画像にエンコードし、Flickrのようなサイトにアップロードすることです。

25
bwDraco

ほとんどのファイル形式では、はい。たとえば、PNGファイルは型指定されたチャンクで構成されているため、aAAAまたはlOLZという名前のチャンクを任意のデータとともに追加できます。 JPEGには「アプリケーション固有」のセグメントがありますAPPn; JPEGのExifタグは、実際にはそのようなタグ内の完全なTIFF構造です。 GIFなどの他の形式は拡張できませんが、多くの場合、テキストコメント用のフィールドがあります。 これはすでに乱用されています

ただし、これを防ぐ方法はいくつかあります。たとえば、ImgurなどのWebサイトは、pngcrushまたは同様のツールを使用してすべてのアップロードを自動的に処理するため、絶対に必要ではないものはすべてドロップされます。

しかし結局のところ、データ交換を防ぐことはできません。前述の画像ステガノグラフィーの他に、Twitterとそのクローン、何十ものペーストビン(理解できない投稿はかなり正常と見なされます)、古いブログ投稿のコメントフォームがあります(これが提案された本をまだ覚えようとしています)。 ...より現実的には、ほとんどのマルウェアは単に「自分の」サーバーに接続するだけです。

22
user1686

悪意のあるデータなどはありません。データは実行されるまで悪意のあるものにはならず、実行されるとデータではなくなります。この種の問題は画像ではなく、データが実行される原因となるバグが含まれているソフトウェア(Windows、Photoshopなど)です。これは明らかに主要なソフトウェアベンダーの重要な懸念事項であり、発見後すぐにこれらのバグを修正するとかなり確信で​​きます。

ただし、他の回答に記載されているように、画像自体の一部ではないデータをファイルに追加することは可能です。ただし、これは多くの場合、有用であり、標準的な方法ですらあります。インターネットで見つけたランダムな画像よりも実行可能ファイルに注意するほうがはるかに重要だと思います。ここでのリスクはそれほど大きくありません。

19

PNGを含む画像ファイルには特定の形式があります。ファイルのヘッダー部分には画像が記述されており、後続のデータはすべてヘッダーに基づいて画像データとして解釈されます。

ただし、PNGの末尾に画像データを過ぎて任意のデータを追加することができ、後で読み取ることができます。これはかなり簡単に検出できます。画像データの終わりを過ぎてデータが存在することはありません。

または、 steganography を使用して、任意のデータを画像自体にエンコードすることもできます。これは、何を探すべきか正確に知らない限り、ほとんど検出できない方法で画像自体を微妙に変更します(多くの場合、エンコード方法の事前知識が必要です)。

12
Paul