
На официальном сайте Virtuemart опубликовано обновление Virtuemart 2.6.10, связанное с обнаружением уязвимости в более ранних версиях. Разработчики рекомендуют незамедлительно обновиться, поскольку теперь эта проблема получила широкую огласку и может быть использована хакерами. Далее более подробная информация о проблеме и инструкция для тех, кто не может по каким-либо причинам обновить Virtuemart.
В принципе, ничего страшного не произошло. Обнаружение новых багов - стандартное дело для всех программ. Много хуже, когда баги не обнаруживаются. Значит, их просто не ищут.
Уязвимость обнаружена в модели Joomla которая отвечает за работу с пользователями сайта. Разработчики Virtuemart сообщают, что они, в общем-то, не виноваты и этой проблеме скорее всего будут подвержены и другие расширения Joomla.
Как исправить?
Для исправления предлагается несколько вариантов:
1) Скачать обновленную версию Virtuemart 2.6.10. и обновиться. Напомню, что делается это очень просто:
- Извлекаем архив
- Поочередно устанавливаем содержащиеся там компонент и набор модулей и плагинов через менеджер расширений Joomla, не удаляя уже уставленную версию Virtuemart
2) Если у вас на сайте множество хаков или есть другие причины, мешающие обновлению, то скачайте обновленную версию по ссылке выше, скопируйте из нее файл:
/administrator/components/com_virtuemart/models/user.php
и замените им аналогичный файл на вашем сайте.
3) Если даже в этом файле у вас содержаться хаки, то:
- Откройте этот файл и найдите в нем функцию:
function store(&$data,$checkToken = TRUE)
- Замените:
if (!$user->bind($data)) {
на:
if(!$user->authorise('core.admin','com_virtuemart')){ $whiteDataToBind = array(); $whiteDataToBind['name'] = $data['name']; $whiteDataToBind['username'] = $data['username']; $whiteDataToBind['email'] = $data['email']; if(isset($data['password'])) $whiteDataToBind['password'] = $data['password']; if(isset($data['password2'])) $whiteDataToBind['password2'] = $data['password2']; } else { $whiteDataToBind = $data; } // Bind Joomla userdata if (!$user->bind($whiteDataToBind)) { .....
Вот и всё. Следите за безопасностью ваших сайтов и вовремя обновляйте расширения. Удачи!