Если вы получили от меня письмо со ссылкой на эту страницу, значит ваш сайт, по всей видимости, использует версию iCagenda (com_icagenda от JoomliC, расширение календаря событий для системы управления контентом Joomla), затронутую известной проблемой безопасности. На этой странице описано, в чём состоит проблема, как проверить, применима ли она к вашему сайту, и как это исправить.

Данное уведомление касается уязвимости CVE-2026-48939, критической, активно эксплуатируемой уязвимости, которая допускает загрузку произвольного файла без аутентификации, ведущую к удалённому выполнению кода через форму «Submit an Event» на фронтенде расширения. Она была добавлена в каталог Known Exploited Vulnerabilities Агентства кибербезопасности и защиты инфраструктуры США (CISA) 10 июля 2026 года.

Два условия, и оба должны выполняться

Ваш сайт затронут проблемой удалённого выполнения кода, когда верны оба следующих условия:

  1. iCagenda относится к линейке 4.0.x, версия ниже 4.0.8 (то есть от 4.0.0 до 4.0.7), и
  2. ядро Joomla ниже версии 6.1.2.

Если у вас iCagenda 4.0.8 или новее, вы не затронуты. А если ядро Joomla у вас 6.1.2 или новее, вы тоже не затронуты, даже со старой версией iCagenda, поскольку само ядро блокирует загрузку. Если это описывает ваш сайт, здесь можно остановиться, разве что стоит отметить, что обновить iCagenda всё же стоит.

Второе условие представляет собой ту часть, в которой данная страница расходится с рекомендацией самого разработчика: она утверждает, что проблема касается только сайтов на Joomla 6. На деле она достигает и полностью обновлённых сайтов на Joomla 4, и на Joomla 5, и доказательства этого приведены ниже, поскольку по ссылке вы увидите, что разработчик утверждает обратное.

Если у вас установлена затронутая версия, обновите iCagenda, и, поскольку эта уязвимость эксплуатировалась ещё до выхода исправления, также проверьте свой сайт на признаки того, что кто-то опередил вас (см. Если вы использовали затронутую версию ниже).

Примечание для тех, кто использует более старую линейку 3.9.x. Опубликованный диапазон CVE включает 3.9.x, и разработчик выпустил исправление и для этой линейки, в версии 3.9.15. По моим собственным наблюдениям и тестам, линейка 3.9.x использует другой, защищённый путь кода для загрузки, поэтому исход в виде удалённого выполнения кода там недостижим: на Joomla 4 и 5 загрузка блокируется ядром, а на Joomla 6 этого пути кода вообще больше не существует, так что функция просто выдаёт ошибку. Это не повод игнорировать обновление. Те же выпуски устраняют отсутствующую проверку авторизации, которая позволяет анонимному посетителю протолкнуть на ваш сайт неодобренное событие (а на Joomla 4 и 5, вместе с ним, ещё и файл разрешённого типа). Более низкая серьёзность, но всё равно стоит устранить: обновитесь до 3.9.15 или новее. Обратите также внимание, что разработчик предоставляет исправления безопасности для линейки 3.9.x только до 13 октября 2026 года.

Это письмо настоящее?

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

Я прочитал только два общедоступных файла, которые ваш сайт отдаёт любому, кто их запросит: манифест компонента iCagenda по адресу /administrator/components/com_icagenda/icagenda.xml и манифест ядра Joomla по адресу /administrator/manifests/files/joomla.xml. Оба этих файла представляют собой обычные XML-файлы с версией, и это те же два файла, которые описаны в разделе Как проверить свои версии ниже, так что вы можете увидеть именно то, что видел я. Это всё, что я делал. Я специально не отправлял вашу форму события, не загружал ничего и не обращался к директории вложений на вашем сайте. Этот путь упоминается далее на этой странице только как место, где вы сами можете провести проверку на своём сайте. Эта проверка никак не затрагивает ваши данные, панель администратора или какую-либо закрытую часть сайта.

Если вы хотите убедиться, кто я, контактные данные приведены внизу этой страницы и на странице Обо мне.

Почему это важно

iCagenda публикует календарь событий на сайтах Joomla. Одна из её функций позволяет посетителю отправить событие через форму на фронтенде, при желании приложив файл, который попадает в директорию images/icagenda/frontend/attachments/.

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

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

Это не теоретический риск. NVD оценивает её в 9,8 из 10 (присвоившая идентификатор организация оценивает её в 10,0 по новой системе оценки), и она эксплуатируется в реальных условиях. Разработчик сообщает, что эксплуатация началась 15 июня 2026 года в 08:00 UTC, ещё до выхода исправления, и характеризует атаки как автоматизированные. Она была включена в каталог Known Exploited Vulnerabilities агентства CISA 10 июля 2026 года.

Я описываю это на том уровне, который нужен владельцу сайта, чтобы действовать, и не глубже. Я не публикую подробностей, которые позволили бы кому-то это воспроизвести, и прошу вас не пробовать это ни на своём сайте, ни на чужом. Чтение ваших двух номеров версий, как описано ниже, даёт всё необходимое, чтобы решить, что делать.

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

В чём эта страница расходится с рекомендацией разработчика

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

Unsafe file uploads were already blocked by default on all Joomla versions prior to Joomla 6. Only install of iCagenda on Joomla 6 (6.0.0-6.1.1) had the critical upload vulnerability.

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

  • iCagenda 4.0.x выполняет загрузку через класс фреймворка Joomla\Filesystem\File из пакета joomla/filesystem, который входит в состав ядра Joomla. При этом не используется более старый класс Joomla CMS с тем же именем, тот самый, что всегда нёс проверку безопасности файла и, по всей видимости, именно его и имеет в виду рекомендация разработчика.
  • Этот метод фреймворка получил собственную проверку безопасности файла (параметр $allowUnsafe и тест isSafeFile) только в joomla/filesystem 4.2.0, а именно эта версия поставляется вместе с Joomla 6.1.2.
  • Версии, фактически входящие в проверенные мной выпуски Joomla: Joomla 4.4.14 включает filesystem 2.0.2 (проверки нет), Joomla 5.4.7 включает 3.2.0 (проверки нет), и Joomla 6.1.2 включает 4.2.0 (проверка присутствует).

Таким образом, полностью обновлённый сайт на Joomla 4 или Joomla 5 с установленной iCagenda версии от 4.0.0 до 4.0.7 действительно подвержен уязвимости, и именно поэтому на этой странице условие по Joomla сформулировано как «ниже 6.1.2», а не «только Joomla 6». Ни в опубликованной записи CVE, ни в записи NVD, ни в каталоге CISA это ограничение по версии Joomla вообще не упоминается: такое ограничение встречается только в этой фразе рекомендации разработчика.

Как проверить свои версии

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

Ваша версия iCagenda, из файла манифеста (вход в систему не требуется): откройте

yourdomain.com/administrator/components/com_icagenda/icagenda.xml

и прочитайте элемент <version>. Это один из двух файлов, которые я читал.

Ваша версия iCagenda, из панели администратора:

  1. Войдите в администрирование Joomla (обычно по адресу yourdomain.com/administrator).
  2. Перейдите в System затем Manage затем Extensions.
  3. Найдите iCagenda и отметьте установленную версию.

Обратите внимание, какой именно icagenda.xml вы читаете. Пакет iCagenda также включает встроенный плагин поиска с манифестом того же названия, у которого собственный, никак не связанный номер версии. Только путь компонента, указанный выше, говорит о том, какую версию использует расширение.

Ваша версия ядра Joomla: в панели администратора откройте System, затем System Information. Либо прочитайте /administrator/manifests/files/joomla.xml и возьмите элемент <version>. Это второй файл, который я читал.

Узнать версию iCagenda из исходного кода вашей публичной страницы невозможно, и пытаться не стоит. Файлы фронтенда расширения несут общий для всего сайта Joomla хеш версии медиафайлов, а не номер версии, а единственное похожее на номер версии число, которое всё же встречается в исходном коде страницы, относится к комплекту файлов модуля календаря (небольшое число вроде 1.0.4) и не имеет отношения к компоненту. Единственной честной проверкой остаются файл манифеста или экран администратора.

Затем примените правило, указанное в начале этой страницы: линейка 4.0.x ниже 4.0.8 и ядро ниже 6.1.2 означают, что сайт затронут.

Как обновиться

Самый безопасный путь: обновиться средствами самой Joomla, предварительно сделав резервную копию.

  1. Сделайте резервную копию сайта (файлы и базу данных), прежде чем вносить какие-либо изменения. Большинство хостинг-провайдеров предлагают резервное копирование в один клик, либо используйте расширение резервного копирования для Joomla.
  2. В административной панели Joomla откройте Extensions, затем Manage, затем Update, и нажмите Find Updates. Если в списке появится обновление iCagenda, установите его отсюда.
  3. Если обновление там не появляется, загрузите текущий выпуск напрямую с сайта разработчика, JoomliC, и установите его через Extensions, затем Install.
  4. Какую версию устанавливать: 4.0.8 является выпуском, устраняющим эту проблему, но на момент написания актуальным выпуском является 4.0.11, а версии после 4.0.8 добавляют дополнительную защиту той же функции, включая блокировку выполнения кода из папки медиафайлов iCagenda. Устанавливайте именно 4.0.11, а не останавливайтесь на 4.0.8. На старой линейке устанавливайте 3.9.15 или новее.
  5. Как вариант, обновление ядра Joomla до 6.1.2 или новее тоже закрывает именно эту проблему, но это не замена обновлению расширения: отсутствующая проверка авторизации находится в самой iCagenda, и устранить её может только обновление iCagenda.
  6. После обновления подтвердите новый номер версии описанными выше способами и проверьте, что ваш календарь по-прежнему отображается, а отправка событий по-прежнему работает так, как вы ожидаете.

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

Если вы использовали затронутую версию

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

The update closes the entry point and protect the file attachment feature, but does not clean up an already compromised site. […] Keep a copy of any suspicious files as evidence, delete them, change your Joomla passwords and credentials, and audit your entire site, not just the iCagenda folder.

Вот что можете поискать вы сами (или ваш вебмастер) на своём собственном сайте:

  • PHP-файлы в директории images/icagenda/frontend/attachments/. В этой папке должны храниться только вложения событий. На хостинге на базе Linux проверка выглядит так:

    find images/icagenda/frontend/attachments -name '*.php' -type f
    
  • Неодобренные анонимные события в очереди модерации, которых вы бы не ожидали увидеть, если никогда не открывали отправку событий для публики.
  • Обращения в журналах доступа от сканера, представляющегося как icagenda-batch/1.0.

Начиная с версии 4.0.8, iCagenda также самостоятельно проверяет признаки компрометации и выдаёт предупреждение после обновления, если что-то обнаружит. Разработчик прямо говорит, что отсутствие такого предупреждения не является гарантией, так что это полезный сигнал, но не чистая справка об отсутствии проблем.

Если вы обнаружите что-либо из перечисленного, считайте сайт скомпрометированным: сохраните копии подозрительных файлов в качестве доказательства, а затем удалите их, смените все учётные данные (администратор Joomla, база данных, FTP/SSH, панель хостинга), проверьте учётные записи пользователей Joomla и группы, к которым они принадлежат, и проверьте весь сайт, а не только папку iCagenda. Восстановление из резервной копии, сделанной до 15 июня 2026 года, часто безопаснее, чем очистка на месте, поскольку оставленный бэкдор может свести на нет результаты очистки. Если в вашей организации есть служба ИТ-безопасности или национальный CERT, привлеките их.

Хочу подчеркнуть: я не проверял ваш сайт ни на один из этих признаков и не знаю, был ли ваш сайт затронут. Этот список приведён здесь для того, чтобы вы могли проверить сами.

У меня нет вебмастера / я не справляюсь

Если сайтом занимаетесь не вы, перешлите, пожалуйста, эту страницу тому, кто им занимается (вашему веб-разработчику, агентству или хостинг-провайдеру). Шаги выше он узнает сразу.

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

Контакты

Evan Harris, исследователь безопасности

Я обращаюсь по таким вопросам исключительно ради того, чтобы помочь операторам защитить свои сайты. Если вы предпочитаете больше не получать от меня писем, просто сообщите, и я это учту.

Источники

Официальные бюллетени и отслеживание

Производитель (JoomliC)