É possível armazenar dados arbitrários em um arquivo de imagem?

25

É possível armazenar dados arbitrários, como documentos ou um programa, na forma de um arquivo de imagem, como uma imagem PNG? Minha preocupação é que alguém possa codificar dados para uso de malware em uma imagem e enviá-los para um site como o Flickr.

    
por bwDraco 16.11.2011 / 00:49

3 respostas

22

Para a maioria dos formatos de arquivo, sim. Por exemplo, os arquivos PNG são compostos de fragmentos digitados, portanto, você pode adicionar um fragmento denominado aAAA ou lOLZ com dados arbitrários. O JPEG possui segmentos "específicos do aplicativo" APPn ; As tags Exif em JPEGs são na verdade uma estrutura TIFF completa dentro de uma tag. Outros formatos, como o GIF, não são extensíveis, mas geralmente têm um campo para comentários textuais; isso já foi abusado .

No entanto, existem maneiras de se proteger contra isso - por exemplo, sites como o Imgur processam automaticamente todos os uploads com pngcrush ou ferramentas semelhantes, o que elimina qualquer coisa que não seja absolutamente necessária.

Mas, no final, a troca de dados não pode ser evitada. Além da steganography de imagem acima mencionada, você tem Twitter e seus clones, dezenas de pastebins (em que posts incompreensíveis são considerados bastante normais), formas de comentários de posts antigos (ainda estou tentando lembrar o livro em que isso foi sugerido), ... de forma mais realista, a maioria dos malwares simplesmente contata seus "próprios" servidores.

    
por 16.11.2011 / 01:15
19

Não existem dados maliciosos. Os dados não se tornam mal-intencionados até serem executados, quando não são mais dados. O problema com esse tipo de coisa não seria a imagem, seria o software (Windows, Photoshop, o que quer que seja) que contém um bug que faz com que os dados sejam executados. Essa é obviamente uma preocupação importante dos principais fornecedores de software, e você pode ter certeza de que eles corrigiriam esses bugs logo depois de serem descobertos.

Dito isto, como é indicado nas outras respostas, é possível adicionar dados que não fazem parte da própria imagem no arquivo. No entanto, isso costuma ser útil ou até mesmo uma prática padrão. Eu acho que é muito mais importante ter cuidado com executáveis do que com imagens aleatórias que você encontra na internet. O risco aqui não é tão grande assim.

    
por 16.11.2011 / 01:20
12

Os arquivos de imagem, incluindo o PNG, têm um formato específico. A parte do cabeçalho do arquivo descreve a imagem e qualquer dado a seguir seria interpretado como dados de imagem (com base nos cabeçalhos).

No entanto, você pode acrescentar dados arbitrários ao final de um PNG, além dos dados da imagem, que podem ser lidos posteriormente. Isso seria bastante fácil de detectar - não deveria haver nenhum dado após o final dos dados da imagem.

Como alternativa, você pode codificar dados arbitrários na própria imagem, usando steganography . Isso sutilmente altera a imagem de uma forma que é amplamente indetectável, a menos que você saiba exatamente o que procurar (o conhecimento prévio do método de codificação é geralmente necessário).

    
por 16.11.2011 / 01:02