Новости Joomla

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

‼️ 👩‍💻 Обновление безопасности для Tassos Framework!

7 января 2026 года греческому разработчику Тассосу Мариносу сообщили об уязвимости в системном плагине Tassos Framework, который входит в состав его расширений для Joomla.

⚠️ Проблема затрагивает следующие расширения:
- Convert Forms - конструктор форм обратной связи для Joomla
- EngageBox - конструктор всплывающих окон для Joomla
- Google Structured Data - пакет плагинов микроразметки для Joomla
- Advanced Custom Fields - пакет плагинов пользовательских полей (видео-сервисы, карты и иже с ними)
- Smile Pack - пакет расширений
- MailChimp Auto-Subscribe

Незамедлительно была проведена полная внутренняя проверка кода, внедрены дополнительные меры проверки и повышения безопасности, а также выпущены исправленные версии всех затронутых расширений. Проблема полностью решена.

👉 Суть уязвимости.
Уязвимость заключалась в том, как плагин Tassos Framework обрабатывал определенные AJAX-запросы через com_ajaxточку входа Joomla. При определенных условиях внутренняя функциональность фреймворка могла быть вызвана без надлежащих ограничений.

В худшем случае это могло позволить неавторизованному злоумышленнику читать файлы, доступные веб-серверу. Это также могло позволить удалять файлы с сервера при выполнении определенных условий.

При определенных обстоятельствах запросы к базе данных могли быть изменены для извлечения данных из базы данных Joomla. В совокупности эти возможности потенциально могли быть использованы для повышения уровня доступа и выполнения несанкционированного кода.

В настоящее время нет никаких доказательств того, что эта уязвимость была использована в реальных условиях.

Немедленно обновите расширения до безопасных версий (Joomla 4/5/6 | Joomla 3):
- Convert Forms - v5.1.1 / v.4.1.1
- EngageBox - v.7.1.1 / v,6,3,9
- Google Structured Data - v.6.1.1 / v.5.6.9
- Advanced Custom Fields - v.3.1.1 / v.2.8.10
- Smile Pack - v.2.1.1 / v.1.2.4.
- MailChimp Auto-Subscribe - v.5.1.1+ / v.5.0.4

Все указанные версии включают в себя релиз безопасности плагина Tassos Framework System Plugin v6.0.62.

Если у вас установлено несколько расширений Tassos, достаточно обновить только одно, чтобы применить патч. Однако всегда рекомендуется обновлять все расширения.

@joomlafeed

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

👩‍💻 Joomla включена в программу Google Summer of Code 2026.

Google Summer of Code (GSoC) - программа компании Google, которая позволяет участникам программы под руководством опытных наставников писать код для организаций, занимающейся открытым исходным кодом. Joomla принимает участие в этой программе не в первый раз и в 2026 году снова включена в список GSoC. Для программы утверждается список "идей", воплотить которые должны участники под руководством наставников.

Проекты Joomla в рамках программы GSoC 2026.

Проект I: Ajax-бэкенд.
- Действия в административной панели без необходимости обновлять страницу.
- Автоматическое сохранение содержимого во время редактирования.
- Расширенный фильтр - поиск и фильтрация по пользовательским полям.

Проект II: Автоматизация рабочих процессов (workflow + task scheduler).
Joomla имеет функцию процессов и планировщика задач. Теперь эти две функции следует объединить, чтобы пользователь мог настраивать назначенные рабочие процессы таким образом, чтобы переходы выполнялись автоматически, с возможностью точного определения времени. Должна быть возможность создавать циклы или прямые запланированные рабочие процессы. Предполагается, что интерфейс должен учитывать хороший пользовательский опыт, удобство использования и современные стандарты доступности. Ожидается, что будет добавлен интерфейс для управления процессами и их расписанием на страницах категорий и материалов. Так же ожидается, что сторонние компоненты также смогут воспользоваться этим функционалом.

Проект III: Мультикатегории.
В настоящее время Joomla! не позволяет назначать один элемент нескольким категориям. Хотя система тегов часто используется в качестве замены, существует острая потребность в нативной поддержке нескольких категорий, чтобы привести Joomla! в соответствие с другими современными системами управления контентом.

Проект IV: Обучение с подкреплением на основе отзывов переводчиков.
Joomla собирается использовать автоматический перевод документации. В каждом языке есть свои специфические слова, характерные для Joomla. Предполагается обучать языковые модели, используя обратную связь от переводчиков, чтобы постоянно улучшать качество переводов и учитывать специфические языковые особенности Joomla.

Принять участие GSoC 2026
Подробнее о проектах Joomla GSoC 2026
Чат GSoC в Mattermost (международное сообщество Joomla)

Вышли релизы Joomla 6.0.3 и Joomla 5.4.3

Релиз Joomla 6.0.3 и Joomla 5.4.3

Проект Joomla рад сообщить о выпуске Joomla 6.0.3 и Joomla 5.4.3. Это релиз исправлений ошибок и улучшений для серии Joomla 6.0 и Joomla 5.4.

0 Пользователей и 1 Гость просматривают эту тему.
  • 4 Ответов
  • 3788 Просмотров
*

Sponsor

  • Захожу иногда
  • 108
  • 6 / 0
Добрый день.
Установлены Joomla 1.5.26, JoomGallery 1.5.7.4 перестали отображаться фото в полный размер, какой бы режим отображения ни выбрать - стандартный, новое окно, lightbox.
Ссылка формируется: /gallery/image?format=raw&type=img&id=3087
Но вместо фотографии отображается "текстовый файл":
Код
'����JFIF��;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 95 ��C.......
Что могло сломаться, в какую сторону смотреть ?

Если сдалть хак:
Код
&& !$this->_config->get('jg_use_real_paths')
&& !$this->_config->get('jg_use_real_paths')
то начинает формировать нормальная ссылка и всё работает
« Последнее редактирование: 14.05.2013, 15:41:11 от Sponsor »
*

Eholov

  • Захожу иногда
  • 170
  • 14 / 0
Обычно фото перестают отображаться тогда, когда установлен плагин или модуль с jQuery. Поотключайте новые плагины и модули и проверьте результат. Хотя у меня просто не открывалась большая картинка, но не выдавало никаких ошибок.
*

Sponsor

  • Захожу иногда
  • 108
  • 6 / 0
Опять проблема с открытием больших фоток.
Обнаружил что не работает из-за плагина System-JFusion.
Отключить его не могу.
Что нужно исправить в файле:
Код
<?php

/**
 * This is the JFusion user plugin file
 *
 * PHP version 5
 *
 * @category   JFusion
 * @package    Plugins
 * @subpackage System
 * @author     JFusion Team <webmaster@jfusion.org>
 * @copyright  2008 JFusion. All rights reserved.
 * @license    http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * @link       http://www.jfusion.org
 */

// no direct access
defined('_JEXEC') or die('Restricted access');
/**
 * Load the JFusion framework if installed
 */
jimport('joomla.plugin.plugin');
$factory_file = JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . 'com_jfusion' . DIRECTORY_SEPARATOR . 'import.php';
if (file_exists($factory_file)) {
    /**
     * require the JFusion libraries
     */
    include_once $factory_file;
}
/**
 * JFusion System Plugin class
 *
 * @category   JFusion
 * @package    Plugins
 * @subpackage System
 * @author     JFusion Team <webmaster@jfusion.org>
 * @copyright  2008 JFusion. All rights reserved.
 * @license    http://www.gnu.org/copyleft/gpl.html GNU/GPL
 * @link       http://www.jfusion.org
 */
class plgSystemJfusion extends JPlugin
{
    /**
     * Constructor
     *
     * For php4 compatibility we must not use the __constructor as a constructor for plugins
     * because func_get_args ( void ) returns a copy of all passed arguments NOT references.
     * This causes problems with cross-referencing necessary for the observer design pattern.
     *
     * @param object &$subject The object to observe
     * @param array  $config   An array that holds the plugin configuration
     *
     * @access protected
     * @since  1.0
     */
   
function plgSystemJfusion(&$subject, $config)
    {
        parent::__construct($subject, $config);
        $this->loadLanguage('plg_system_jfusion', JPATH_ADMINISTRATOR);
    }

    /**
     * onAfterInitialise
     *
     * This function is called by Joomla framework
     *
     * @since 1.0
     * @return void
     */
    function onAfterInitialise()
    {
        //JFusionFunction::raiseNotice('system plugin called');
        $session = JFactory::getSession();
        //initialise some vars
        ob_start();
        $refresh = false;
        $task = JFactory::getApplication()->input->get('task');
        $debug = $this->params->get('debug', 0);
        if ($debug) {
            define('DEBUG_SYSTEM_PLUGIN', 1);
        }

        //prevent endless loops
        $time = JFactory::getApplication()->input->get('time');
        if (!empty($time)) {
            //restore $_POST, $_FILES, and $_REQUEST data if this was a refresh
            $backup = $session->get('JFusionVarBackup', array());
            if (!empty($backup)) {
                $_POST = $_POST + $backup['post'];
                $_FILES = $_FILES + $backup['files'];
                $_REQUEST = $_REQUEST + $backup['request'];
                $session->clear('JFusionVarBackup');
                if ($debug) {
                    JFusionFunction::raiseNotice('Form variables restored.');
                }
            }
        } else {
            //only call keepAlive if in the frontend
            $syncsessions = $this->params->get('syncsessions');
            $keepalive = $this->params->get('keepalive');
            $mainframe = JFactory::getApplication();
            if ($mainframe->isSite() && !empty($syncsessions) && $task != 'logout' && $task != 'user.logout') {
                //for master if not joomla_int
                $master = JFusionFunction::getMaster();
                if (!empty($master) && $master->name != 'joomla_int' && $master->dual_login) {
                    $JFusionUser = JFusionFactory::getUser($master->name);
                try {
                $changed = $JFusionUser->syncSessions($keepalive);
                if (!empty($changed)) {
                if ($debug) {
                JFusionFunction::raiseNotice('session changed', $master->name);
                }
                $refresh = true;
                }
                } catch (Exception $e) {
                JFusionFunction::raiseError($e, $JFusionUser->getJname());
                }
                }
                //slave plugins
                $plugins = JFusionFactory::getPlugins('both');
                foreach ($plugins as $plugin) {
                    //only call keepAlive if the plugin is activated for dual login
                    if ($plugin->dual_login) {
                        $JFusionUser = JFusionFactory::getUser($plugin->name);
                    try {
                    $changed = $JFusionUser->syncSessions($keepalive);
                    if (!empty($changed)) {
                    if ($debug) {
                    JFusionFunction::raiseNotice('session changed', $plugin->name);
                    }
                    $refresh = true;
                    }
                    } catch (Exception $e) {
                    JFusionFunction::raiseError($e, $JFusionUser->getJname());
                    }
                    }
                }
            }
            /**
             * Joomla Object language with the current information about the language loaded
             * In the purpose to reduce the load charge of Joomla and the communication with the others
             * integrated software the script is realized once the language is changed
             *
             */
            $synclanguage = $this->params->get('synclanguage');
            if (!empty($synclanguage)) {
                self::setLanguagePluginsFrontend();
            }

            //stop output buffer
            ob_end_clean();

            //check if page refresh is needed
            if ($refresh == true) {
                $backup = array();
                $backup['post'] = $_POST;
                $backup['request'] = $_REQUEST;
                $backup['files'] = $_FILES;
                $session->set('JFusionVarBackup', $backup);
                if ($debug) {
                    JFusionFunction::raiseNotice('Refresh is true');
                }
                $uri = JURI::getInstance();
                //add a variable to ensure refresh
                $uri->setVar('time', time());
                $link = $uri->toString();
                $mainframe = JFactory::getApplication();
                $mainframe->redirect($link);
            }
        }
    }
   
    /**
     * Can be invoked from components, modules or else
     */
    public static function setLanguagePluginsFrontend() {
$lang = JFactory::getLanguage();
$session = JFactory::getSession();
$oldlang = $session->get('oldlang');
if (!isset($oldlang) || $oldlang != $lang->getTag()) {
$session->set('oldlang', $lang->getTag());
// The instance of the user is not obligatory. Without to be logged, the user can change the language of the integrated software
// if those implement it.
$userinfo = JFactory::getUser();
$master = JFusionFunction::getMaster();
$JFusionMasterPublic = JFusionFactory::getPublic($master->name);
if (method_exists($JFusionMasterPublic, 'setLanguageFrontEnd')) {
try {
$status = $JFusionMasterPublic->setLanguageFrontEnd($userinfo);
if (!empty($status['error'])) {
//could not set the language
JFusionFunction::raise('error', $status['error'], $master->name . ' ' . JText::_('SET_LANGUAGEFRONTEND_ERROR'));
}
} catch (Exception $e) {
JFusionFunction::raiseError($e, $master->name . ' ' . JText::_('SET_LANGUAGEFRONTEND_ERROR'));
}
} else {
$status['debug'][] = JText::_('METHOD_NOT_IMPLEMENTED'). ': ' . $master->name;
}
$slaves = JFusionFunction::getSlaves();
foreach($slaves as $slave) {
$JFusionSlavePublic = JFusionFactory::getPublic($slave->name);
if (method_exists($JFusionSlavePublic, 'setLanguageFrontEnd')) {
try {
$status = $JFusionSlavePublic->setLanguageFrontEnd($userinfo);
if (!empty($status['error'])) {
//could not set the language
JFusionFunction::raise('error', $status['error'], $slave->name . ' ' . JText::_('SET_LANGUAGEFRONTEND_ERROR'));
}
} catch (Exception $e) {
JFusionFunction::raiseError($e, $slave->name . ' ' . JText::_('SET_LANGUAGEFRONTEND_ERROR'));
}
} else {
$status['debug'][] = JText::_('METHOD_NOT_IMPLEMENTED'). ': ' . $slave->name;
}
}
}
}
}
*

Beer

  • Moderator
  • 1105
  • 43 / 1
  • БИРУ - БИР!
У меня был какой-то другой гимор с этим System-JFusion - отключил. Около года полет нормальный. Зачем он - так и не понял...
*

PluSh_KiLLeR

  • Захожу иногда
  • 78
  • 2 / 0
Наверное такая же проблема.
Joomla 3.5.1 +  JoomGallery 3.3.2
Нет большой картинки тут
Разрешения вроде все стоят, система пишет, что все хорошо.
Кто сталкивался с такой проблемой ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Проблема с дублем страниц в JoomGallery 3.4

Автор qvagin

Ответов: 3
Просмотров: 5400
Последний ответ 23.01.2023, 13:30:08
от e2
Стили раскладки фото в JoomGallery (masonry и mosaic)

Автор marbert

Ответов: 4
Просмотров: 4690
Последний ответ 22.11.2022, 06:28:20
от marbert
JoomGallery 3.6.0 если отсутствует поле Название при редактировании фотографии

Автор Beer

Ответов: 0
Просмотров: 4593
Последний ответ 09.09.2022, 20:07:49
от Beer
После обновления до JoomGallery 3.6 некорректно работает водяной знак

Автор Maffo

Ответов: 3
Просмотров: 4546
Последний ответ 23.08.2022, 06:21:58
от marksetter
j3.8.13 + JoomGallery 3.3.4 = RuntimeException: Недопустимое поле: cid

Автор Sergeych

Ответов: 7
Просмотров: 6652
Последний ответ 22.03.2021, 17:24:59
от Gammy2005