Мы уже говорили о запуске службы безопасности для WordPress в предыдущая статья .
Сегодня мы хотим поговорить о запуске эвристического анализа для выявления вредоносного кода.
Само наличие вредоносного кода может привести к бану в результатах поиска или предупреждению в поиске о том, что сайт заражен, защищая пользователей от возможно опасного контента.
Найти вредоносный код можно самостоятельно, но это большая работа, и большинство пользователей WordPress не обладают необходимыми навыками для поиска и удаления ненужных строк кода.
Зачастую авторы вредоносного кода маскируют его, что затрудняет его идентификацию по сигнатурам.
Сам вредоносный код может располагаться в любом месте сайта, например, обфусцированный PHP-код в файле logo.png, а сам код вызывается одной невидимой строкой в index.php. Поэтому использование плагинов для поиска вредоносного кода предпочтительнее.
CleanTalk при первом сканировании сканирует все файлы ядра, плагинов и тем WordPress. При повторном сканировании удаляются только те файлы, которые были изменены с момента последнего сканирования.
Это экономит ресурсы и увеличивает скорость сканирования.
Как работает эвристический анализ
Одним из основных недостатков эвристического анализа является то, что он достаточно медленный, поэтому мы используем его только тогда, когда это действительно необходимо.Первым делом разбиваем исходный код на токены (минимальная языковая конструкция) и удаляем всё лишнее:
- Космические персонажи.
- Комментарии различных типов.
- Не PHP-код (вне теги)
- Выполняем конкатенацию строк.
- Подстановка переменных в переменные.
- И так далее
В результате мы получаем чистый код, который можно анализировать.
Очень важно, что мы получаем код не в виде строки, а в виде лексем.
Таким образом, мы знаем, где находится строковый токен с искомым текстом, а где токен функции.
В смысле поиска «плохого дизайна» eval для нас есть разница:
— в этом случае токена T_EVAL не будет, будет токен T_CONSTANT_ENCAPSED_STRING 'eval("echo \"eval\"")'<Эphp echo 'eval("echo \"some\"")'; ?>
<Эphp eval('echo "some"'); ?>
- и оно будет здесь.
И именно этот вариант мы откроем.
Мы ищем такие структуры и разбиваем их на уровни критичности:
- Критический:
- оценивать
- включать* и требовать*
- с плохим расширением файла
- несуществующие файлы (будут удалены в будущих версиях)
- подключение удаленных файлов
- Опасный
- система
- пройти
- proc_open
- руководитель
- включать* и требовать*
- с оператором подавления ошибок (будет удалено в будущих версиях)
- с переменными, зависящими от POST или GET.
- Подозрительный
- base64_encode
- str_rot13
- системный журнал
- И другие.
Планируется научить его обнаруживать и декодировать строки, закодированные в URL, BASE64 и других.
Сам плагин доступен в Каталог WordPress .
Теги: #wordpress #плагины WordPress #CMS #wordpress
-
Как Не Допустить, Чтобы Ваш Сайт Устарел
19 Oct, 24 -
Рунет И Кризис
19 Oct, 24