Латаем spaw2

Nov 30, 2011 00:46

Мир свободного программного обеспечения чуден и прекрасен. Особенно отрадно, когда добрые люди уже написали какой-нибудь велосипед и тем самым освободили тебя от тяжкой неблагодарной работы. Один из таких велосипедов - WYSIWYG-редактор Spaw2, который я использовал в паре проектов.



Напасть подкралась незаметно: через несколько лет использования велосипеда на сервере обнаружились подозрительные php-файлы с зашифрованным содержимым. Содержимое было легко расшифровано и обнаружился вполне себе целенький бэкдор.

Технология проста:
  1. Злоумышленники пронюхали, что Spaw2 позволяет загружать на сервер файлы. Авторизации на такую загрузку по-умолчанию не требуется.
  2. Извлекли характерную сигнатуру Spaw2 и стали прозванивать какой-нибудь список сайтов. Т.к. Spaw2 в меру популярен, то рано или поздно найдутся его инсталляции на чужих серверах.
  3. Затем обращаются по "волшебному" адресу и ... получают окно для загрузки файлов на чужой сервер.
  4. Загружают на сервер бэкдор, троянца или еще какую-нибудь гадость. Профит.
Залатать несчастного Spaw2 не сложно.

Вариант 1. Добавляем проверку в коде.

Входной точкой для загрузки файлов является скрипт /spaw2/dialogs/dialog.php. Внутри он опосредованно подключает к себе конфиг. В конфиг и добавляем небольшую проверку на авторизацию действия: "если ломится супостат, то...".

Вариант 2. Закрываем скрипт загрузки базовой авторизацией.

А чо, вполне удобно, если Spaw2 используется только в админке, и админка уже закрыта базовой авторизацией. Закрывать нужно папку /spaw2/dialogs/, а /spaw2/uploads/ оставить доступной, чтобы не перекрыть доступ к загруженным файлам.

Ну и реальным пацанам: имейте политику безопасности, не внедряйте в проект говнокод, будьте чётки и всегда при семках. И прийдет к вам Успех :)


работа

Previous post Next post
Up