Я запустил сканер вредоносных программ на своем сайте, и он пометил кучу заархивированных EXE-файлов как файлы потенциального риска (эти файлы были загружены пользователями). Поскольку я могу распаковать файлы на моем Mac, я предполагаю, что это настоящие ZIP-файлы, а не просто что-то вроде переименованных файлов PHP.
Так что ZIP-файл не должен представлять опасности для моего веб-сервера, верно?
Если они действительно представляют собой заархивированные exe-файлы Windows, они должны быть безвредны для вашей системы Linux, если только у вас нет чего-то вроде Wine, которое могло бы попытаться их запустить.
Но если они находятся на вашем веб-пути, они могут быть вредоносными и создавать большой риск для посетителей ваших веб-сайтов (и вас, в свою очередь, если вы в конечном итоге будете отмечены как источник вредоносного ПО, а пользователи получат неприятные предупреждения при попытке посетить ваш сайт).
Поскольку я могу распаковать файлы на своем Mac, я предполагаю, что это настоящие zip-файлы, а не просто что-то вроде переименованных файлов php.
Пока ты наверное верно, в этом случае ваше предположение не всегда может быть верным. ZIP-архив остается действительным, даже если вы добавляете к нему произвольные данные, поэтому вполне возможно создать файл, который одновременно является действительным ZIP-архивом, содержащим невинные данные, а также вредоносный скрипт PHP. Это даже не особенно сложно; просто объедините PHP-код и ZIP-файл и убедитесь (например, используя __halt_compiler()
), что PHP не будет пытаться анализировать добавленные данные ZIP-архива.
Этот трюк законно используется для создания самораспаковывающихся файлов ZIP, но вполне возможно таким же образом добавить любые другие скрытые данные или исполняемый код в файл ZIP. Некоторые программы могут отказываться открывать такие измененные файлы ZIP (но если это так, они технически нарушают спецификацию формата ZIP), или они могут идентифицировать файл как нечто иное, чем файл ZIP по умолчанию, но обычно, если вы скармливаете такой файл в код, который ожидает ZIP-файл, он, вероятно, будет принят как один.
Более распространенное злонамеренное использование таких уловок - замаскировать код эксплойта в контейнере на основе ZIP (например, файл JAR) под что-то безобидное (например, изображение в формате GIF, как в GIFAR exploit), но нет причин, по которым его нельзя было бы использовать и в другом направлении, например чтобы обойти наивный фильтр загрузки файлов, который запрещает загрузку сценариев PHP, но разрешает файлы ZIP, не проверяя, может ли загруженный файл быть обоими одновременно.
Вы должны принять во внимание как минимум два важных момента:
Итак, в зависимости от того, что делает ваш сервер, файл может потенциально быть вредным для вашего сервера или других пользователей. Поскольку я очень опасаюсь загружать EXE-файлы из Интернета, я бы сказал, что возможные загрузчики - это наиболее потенциальные пользователи, которым здесь грозит опасность.
Вы можете проверить, работают ли файлы на вашем сервере Linux, просто проверив их с помощью file FILENAME.exe
команда. Бинарные файлы Elf (исполняемый формат, используемый в Linux) могут быть названы с .exe
Расширение, чтобы сбить с толку ничего не подозревающего администратора Linux, поэтому, вероятно, будет хорошей идеей сделать эту проверку, прежде чем слепо полагаться на то, что эти файлы не запускаются.
Я удивлен, что никто не упомянул, что какие-либо данные могут быть (или могут быть сделаны) вредными для какой-либо (ошибочной) программы. Это основа нечеткости. Например, у вас может быть файл JPEG (или похожий на JPEG), который вызывает переполнение буфера в (конкретных?) Декодерах JPEG, вызывая все, от отказа в обслуживании до выполнения произвольного кода. Речь идет о подрыве существующей программы обработки данных; нет необходимости вводить новый исполняемый файл! И это причина, по которой необходимы принципы песочницы, очистки ввода и минимальных привилегий.
Итак, в вашем случае у вас может быть ZIP-файл, вызывающий проблемы с (конкретными?) Механизмами декодирования ZIP. Нет необходимости, чтобы ZIP-файл содержал собственный исполняемый файл, чтобы он был вредным.
Сказав это, ваш сканер работает на другом, более грубом уровне. Если риск, о котором я говорю, существовал в этих файлах, вы уже попали в него в момент их обработки :).
Поскольку я могу распаковать файлы на моем Mac, я предполагаю, что это настоящие ZIP-файлы, а не просто что-то вроде переименованных файлов PHP.
Были атаки, в ходе которых данные внедрялись, но файлы по-прежнему представлялись как действительные. На неправильно настроенном сервере или в неправильно закодированном приложении это может привести к выполнению кода на вашем сервере.
Так что будьте осторожны и с этим.
Дополнительная проверка, которую вы в идеале должны провести, - это метод php finfo чтобы проверить, действительно ли файлы, загружаемые пользователями, являются тем, что вы разрешили, а не тем, что пользователи переименовали, просто чтобы обмануть систему.
Разархивированные .exe также безвредны для серверов Linux.