Куда идем?

На официальном сайте 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)) {
    		.....

Вот и всё. Следите за безопасностью ваших сайтов и вовремя обновляйте расширения. Удачи!

Ссылка на оригинальную новость(англ.)

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
1
Спасибо за оперативные новости! Пригодилось.