Временное решение
Если вариант обновления Joomla для Вас пока что не применим, то для временной защиты сайта на любой версии CMS Joomla достаточно сделать следующее - в файл .htaccess, который расположен в корневой директории сайта, добавить строки:
RewriteCond %{HTTP_USER_AGENT} .*\{.* [NC] RewriteRule .* - [F,L]
Это внедрение позволит отсекать все нестандартные названия браузеров в User Agent, которые содержат фигурные скобки, что в свою очередь сделает невозможным исполнение вредоносного кода.
Постоянное решение
Ручное обновление Joomla 1.5.x и 2.5.x
В случае, если Вы являетесь обладателем старых версий Joomla (1.5.x и 2.5.x), то чтобы себя обезопасить, необходимо по адресу /libraries/joomla/session/ заменить файл session.php на обновленный. Для каждой линейки прилагается свой файл:
Автоматическое обновление Joomla 3.x
В случае, если Вы используете последнюю версию Joomla и не вносили изменений в ядре (все Ваши правки ограничились только шаблоном сайта), то обновиться до последней версии можно с помощью встроенных средств обновления, нажав кнопку «Обновить сейчас»:

Ручное обновление Joomla 3.x
Если автоматическое обновление не проходит или Ваша Joomla имеет значительные изменения в ядре, то обезопасить себя от угрозы взлома можно и без автоматического обновления. Для этого необходимо в файле: libraries/joomla/session/session.php найти участок кода:
// Check for client address if (in_array('fix_adress', $this->_security) && isset($_SERVER['REMOTE_ADDR']))
Заменить на:
// Check for client address if (in_array('fix_adress', $this->_security) && isset($_SERVER['REMOTE_ADDR']) && filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP) !== false)
Найти и удалить блок:
// Check for clients browser if (in_array('fix_browser', $this->_security) && isset($_SERVER['HTTP_USER_AGENT'])) { $browser = $this->get('session.client.browser'); if ($browser === null) { $this->set('session.client.browser', $_SERVER['HTTP_USER_AGENT']); } elseif ($_SERVER['HTTP_USER_AGENT'] !== $browser) { // @todo remove code: $this->_state = 'error'; // @todo remove code: return false; } }
Найти:
// Record proxy forwarded for in the session in case we need it later if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $this->set('session.client.forwarded', $_SERVER['HTTP_X_FORWARDED_FOR']); }
Заменить на:
// Record proxy forwarded for in the session in case we need it later if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP) !== false) { $this->set('session.client.forwarded', $_SERVER['HTTP_X_FORWARDED_FOR']); }
Используйте только официальные компоненты, модули и плагины, а также последние версии CMS Joomla - это позволит Вам в автоматическом режиме защищать свой сайт от угроз.