Безопасны ли заархивированные EXE-файлы для серверов Linux?


49

Я запустил сканер вредоносных программ на своем сайте, и он пометил несколько заархивированных EXE-файлов как файлы потенциального риска (эти файлы были загружены пользователями). Поскольку я могу распаковать файлы на моем Mac, я предполагаю, что это настоящие ZIP-файлы, а не просто что-то вроде переименованных файлов PHP.

Таким образом, ZIP-файл не должен подвергаться риску для моего веб-сервера, верно?


1
Похоже на сканер вредоносных программ.
Ник Т

11
Вы знаете, что можете проверить, являются ли они в формате ZIP file foo.zip, или даже проверить, действительны ли они 7z t foo.zipдля проверки (например, распаковать и проверить контрольные суммы CRC, без извлечения в локальные файлы на диске). ( 7zиспользует синтаксис, несколько похожий на tar.) Или unzip -l foo.zipдля отображения содержимого. В любом случае, я просто подумал, что это странно, что вы говорите о проверке файлов на другом компьютере, когда вы могли легко проверить их на сервере.
Питер Кордес

6
Какой веб-сайт вы размещаете? Звучит не очень хорошая идея - размещать пользовательский контент и ваш веб-сервер, ориентированный на передний план, в одном окне.
oldmud0

@NickT Самораспаковывающиеся ZIP-файлы могут содержать дополнительный вредоносный код, прикрепленный к исполняемой части.
Хрилис - на забастовке -

Ответы:


84

Если они действительно являются заархивированными exe-файлами Windows, они должны быть безвредны для вашей системы Linux, если только у вас нет чего-то вроде Wine, которое может попытаться выполнить их.

Но если они находятся на вашем веб-пути, они могут быть вредоносными программами и представлять большой риск для посетителей ваших веб-сайтов (и, в свою очередь, если вы в конечном итоге будете отмечены как источник вредоносного ПО, а пользователи получат ужасные предупреждения при попытке посетить ваш сайт). сайт).


3
Интересно, может ли размещение такого мусора, загруженного пользователями, привести к тому, что Google пометит ваш сайт как "Этот сайт может быть взломан", или вызовет отображение в Chrome гигантской красной страницы с предупреждением. «Безобидный» может быть немного неправильным.
Ник Т

11
@NickT: Это, безусловно, может, и это то, о чем я говорил во втором абзаце.
Свен

4
Теоретически кто-то также может создавать искаженные .zipфайлы, которые пытаются нацелить недостатки в определенных реализациях распаковки.
Джеймсдлин

3
Mono с большей вероятностью будет установлен на сервере, чем Wine, и может запускать файлы CLR .exe.
Рифмоид

62

Поскольку я могу распаковать файлы на моем Mac, я предполагаю, что это настоящие zip-файлы, а не просто что-то вроде переименованных php-файлов.

Хотя вы, вероятно, правы в этом случае, ваше предположение не всегда верно. ZIP-архив остается действительным, даже если вы добавляете к нему произвольные данные , поэтому вполне возможно создать файл, который одновременно является действительным ZIP-архивом, содержащим невинные данные, а также вредоносный скрипт PHP. Это даже не особенно сложно; просто объедините код PHP и ZIP-файл и убедитесь (например, используя __halt_compiler()), что PHP не будет пытаться анализировать данные ZIP-архива.

Этот прием по праву используется для создания самораспаковывающихся ZIP-файлов, но вполне возможно предварительно добавить любые другие скрытые данные или исполняемый код в ZIP-файл таким же образом. Некоторые программы могут отказаться открывать такие измененные файлы ZIP (но если это так, они технически нарушают спецификацию формата ZIP), или они могут идентифицировать файл как нечто отличное от файла ZIP по умолчанию, но, как правило, если вы кормите такой файл в код, который ожидает ZIP-файл, он, вероятно, будет принят как один.

Более распространенным злонамеренным использованием таких приемов является маскировка кода эксплойта в контейнере на основе ZIP (например, файла JAR) как нечто безвредное (например, изображение GIF, как в эксплойте GIFAR ), но нет никаких причин, по которым это невозможно также используется в другом направлении, например, для обхода простого фильтра загрузки файлов, который запрещает загрузку скриптов PHP, но разрешает ZIP-файлы, не проверяя, могут ли загруженные файлы быть одновременно обоими.


+1 за GIFAR, интересно узнать о конкретном примере этого эксплойта на практике.
Цезай

11

Есть по крайней мере два важных момента, которые вы должны принять во внимание:

  1. Если эти файлы распространяются на вашем сайте, вы можете нести ответственность, если кто-то получает вредоносное ПО с вашего сайта. По крайней мере, ваш сайт может быть помечен как вредоносный. Если вы решили игнорировать предупреждения сканера вредоносных программ, вы должны по крайней мере уведомить загрузчик и возможные загрузчики о том, что файл может быть вредным (как это иногда происходит с загруженными из Интернета EXE-файлами).
  2. Делаете ли вы какую-либо обработку этих файлов, кроме сканирования на наличие вредоносных программ? Автоматическая обработка вложений или другие подобные загрузки всегда потенциально опасны, поскольку содержимое файла может быть любым. Вам даже не нужно запускать EXE-файл, если ваше служебное программное обеспечение уязвимо для какого-либо эксплойта, и, казалось бы, хороший zip / exe содержит вредоносный контент, нацеленный на вашу утилиту. Я бы не позволил моему серверу обрабатывать все, что не проходит проверку на вредоносное ПО.

Так, в зависимости от того, что ваш сервер делает файл может потенциально быть вредным для вашего сервера или других пользователей. Поскольку я довольно настороженно отношусь к EXE-файлам, загруженным из Интернета, я бы сказал, что возможные загрузчики являются наиболее потенциальными пользователями, подвергающимися риску.


2

Вы можете проверить работоспособность файлов на вашем Linux-сервере, просто проверив их file FILENAME.exeкомандой. Эльфийские двоичные файлы (исполняемый формат, используемый в Linux) могут быть названы с .exeрасширением, чтобы сбить с толку ничего не подозревающего администратора Linux, поэтому, вероятно, стоит сделать эту проверку, прежде чем вслепую полагать, что эти файлы не работают.


2

Я удивлен, что никто не упомянул, что какие-либо данные могут быть (или могут быть сделаны) вредными для любой (глючной) программы. Это основа размытия. Например, у вас может быть файл JPEG (или JPEG-подобный), который вызывает переполнение буфера в (определенных?) Декодерах JPEG, что может вызвать что угодно, от отказа в обслуживании до выполнения произвольного кода. Речь идет о подрыве существующей программы обработки данных; нет необходимости вводить новый исполняемый файл! Именно по этой причине необходимы песочница, очистка входных данных и принципы наименьших привилегий.

Таким образом, в вашем случае у вас может быть ZIP-файл, вызывающий проблемы на (определенных?) Механизмах ZIP-декодирования. Не нужно, чтобы ZIP-файл содержал собственный исполняемый файл, чтобы он был вредоносным.

Сказав это, ваш сканер работает на другом, более грубом уровне. Если вид риска, о котором я говорю, существовал в этих файлах, вы уже получили удар в тот момент, когда обрабатывали их :).


1

Поскольку я могу распаковать файлы на моем Mac, я предполагаю, что это настоящие ZIP-файлы, а не просто что-то вроде переименованных файлов PHP.

Были атаки, которые внедряют данные и по-прежнему представляют файлы как действительные. На неправильно настроенном сервере или в неправильно закодированном приложении это может привести к выполнению кода на вашем сервере.

Так что будьте осторожны с этим.


0

Дополнительной проверкой, которую вы в идеале должны поставить, является метод php finfo, позволяющий проверить, действительно ли загружаемые пользователями файлы соответствуют вашим требованиям, а не то, что пользователи переименовали в файлы, просто чтобы обмануть систему.


-6

Распакованный .exe-файл также безвреден для серверов Linux.


23
Не обязательно так - .exeэто не более чем часть имени файла, и это также может быть выбрано в качестве имени для двоичного файла ELF.
Свен

Также может быть установлено WINE. Конечно, большинство вредоносных программ для Windows, вероятно, не будет работать прямо под WINE, но риск присутствует. В лучшем случае разархивированные .exes в Linux в основном безвредны.
Рэй

@Ray Зависит от конфигурации. Если по какой-либо причине установлены Mono или Wine, то binfmt_misc может быть настроен так, чтобы .exe действительно выполнялся.
Рифмоид
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.