Если вы получили от меня письмо со ссылкой на эту страницу, значит ваш сайт, по всей видимости, использует версию расширения powermail (расширение форм для TYPO3 от in2code, пакет Composer in2code/powermail, которое лежит у вас в файлах в каталоге typo3conf/ext/powermail/ или, при установке через Composer, в vendor/in2code/powermail/), попадающую в затронутый диапазон известной проблемы безопасности. На этой странице описано, в чём состоит проблема, как определить, применима ли она к вашему сайту, до какой версии обновляться и как проверить, не использовал ли её кто-то уже против вас.

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

  • Проблема касается только той формы powermail, в которой хотя бы у одного поля установлен флажок «Это поле содержит имя отправителя» (по-английски: “This field contains the Name of the sender”, на вкладке Расширенный этого поля в бэкенде TYPO3). Если ни одна из ваших форм не использует эту пометку, проблема вас не касается, даже на затронутой версии.
  • При этом пометка встречается часто. Стандартное поле Имя мастера форм обычно её устанавливает, а бюллетень производителя сам называет такую конфигурацию «распространённой и близкой к настройке по умолчанию». Поэтому, пожалуйста, проверьте, а не предполагайте.

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

Речь идёт о CVE-2026-77136 (бюллетень TYPO3 TYPO3-EXT-SA-2026-022): это неаутентифицированная серверная инъекция шаблонов в обработке почты расширения. Она затрагивает все версии powermail до 10.9.3, все версии 11.x и 12.x до 12.6.1 и все версии 13.x до 13.2.1. Проблема исправлена в версиях 10.9.3, 12.6.1 и 13.2.1, все они выпущены 25 августа 2026 года, по одной для каждой линейки TYPO3. Не существует версии настолько старой, чтобы она не была затронута: слабость входит в изначальную конструкцию расширения, а не появилась в какой-то более поздней версии.

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

Это изъян расширения, а не ядра TYPO3. Полностью обновлённая TYPO3 не защищает вас, если само расширение powermail стоит на затронутой версии.

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

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

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

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

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

Powermail строит контактные формы и формы обратной связи на очень многих сайтах на TYPO3. Когда посетитель отправляет форму, расширение посылает письмо настроенному получателю сайта и подставляет в это письмо имя отправителя из тех полей формы, которые редактор пометил как содержащие имя отправителя.

Powermail позволяет редакторам вписывать небольшие фрагменты шаблонного языка Fluid системы TYPO3 в некоторые настройки писем, например чтобы тема могла выглядеть как “Message from {firstname}”. Это намеренная возможность для значений, введённых редактором. В затронутых версиях имя отправителя, собранное из ввода самого посетителя, передавалось тому же шаблонному движку, как если бы его написал редактор. Таким образом, посетитель мог ввести синтаксис Fluid в поле имени публичной формы, и сервер выполнял его при формировании письма получателю.

Из этого следуют две вещи, тянущие в противоположные стороны. Первая: это имеет значение только там, где поле формы действительно несёт пометку имени отправителя; сайт, чьи формы не используют такого поля, недостижим через эту проблему. Вторая: там, где пометка установлена, не требуется ни учётная запись, ни пароль, ни чьё-либо содействие: форма по замыслу открыта для всех, и единственное, что нужно сделать злоумышленнику, отправить её. Производитель оценивает проблему как критическую (оценка CVSS 4.0 равна 9.5), а его бюллетень сообщает, что она активно эксплуатируется.

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

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

Затронут ли я?

Это решают два вопроса, в следующем порядке.

Первый: несёт ли какое-либо поле формы пометку имени отправителя?

Это решающий вопрос, и ответить на него можете только вы. Проверка собственных форм полностью безопасна и составляет весь смысл этой страницы.

  1. Войдите в бэкенд TYPO3 и откройте страницу (или папку), где хранятся ваши формы powermail. Каждая форма представляет собой запись с одной или несколькими страницами, а каждая страница содержит поля.
  2. Откройте каждую запись поля и найдите на её вкладке Расширенный флажок «Это поле содержит имя отправителя». Чаще всего он установлен у поля, в которое посетители вводят своё имя.
  3. Если этот флажок не установлен ни у одного поля ни в одной из ваших форм, проблема не достигает вашего сайта даже на затронутой версии, хотя обновиться всё равно стоит в порядке обычного обслуживания.
  4. Если флажок установлен хоть у одного поля, проблема вас касается, и вам следует обновиться в ближайшее время (см. Как обновиться). Если вы не можете обновиться сразу, снимите этот флажок у каждого поля, где он есть: это мера, рекомендованная самим производителем, и она сама по себе закрывает проблему. Цена в том, что имя отправителя перестанет подставляться в письма, отправляемые формой, пока вы не обновитесь и не установите флажок снова.

Пожалуйста, не пытайтесь воспроизвести проблему против собственного сайта или чужого; для ответа на вопрос выше это не нужно.

Второй: какая у вас версия?

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

Из бэкенда TYPO3 (авторитетный источник): перейдите в Инструменты администратора, затем Расширения. Список установленных расширений показывает версию каждого; найдите powermail. (При установке на основе Composer список доступен только для чтения, но установленную версию он всё равно показывает.)

Из командной строки, при установке через Composer: выполните в каталоге проекта composer show in2code/powermail. Строка versions содержит установленную версию.

Из файлов: откройте ext_emconf.php в папке расширения (typo3conf/ext/powermail/ при классической установке, vendor/in2code/powermail/ при установке через Composer) и найдите запись 'version' ближе к началу.

Затем примените следующее правило, учитывая, что версии сравниваются численно, а не по алфавиту (10.9.2 новее, чем 10.8.2, а 13.2.1 новее, чем 13.2.0):

  • С 13.0.0 по 13.2.0: потенциально затронуто, с учётом вопроса о пометке выше. Обновитесь до 13.2.1 или новее.
  • С 11.0.0 по 12.6.0: потенциально затронуто, с учётом вопроса о пометке выше. Обновитесь до 12.6.1 или новее. Сюда входит каждая версия 11.x: отдельного исправления для 11.x нет, а 12.6.1 работает на тех же версиях TYPO3 (с 12.2 по 12.5), что и 11.x, так что это простое обновление расширения без необходимости обновлять TYPO3.
  • 10.9.2 и всё более старое: потенциально затронуто, с учётом вопроса о пометке выше. Если у вас 9.x или 10.x (TYPO3 11.5), обновитесь до 10.9.3 или новее. Если у вас 7.x или 8.x (TYPO3 с 8.7 по 10.4), прочитайте следующий абзац.
  • 13.2.1, 12.6.1 или 10.9.3 и новее в рамках своей линейки: в части этой проблемы уже исправлено.

Если у вас powermail 7.x или 8.x, не существует исправленной версии, работающей на вашей версии TYPO3: 10.9.3 требует TYPO3 11.5. Для таких сайтов указание производителя состоит в описанной выше мере: снять флажок «Это поле содержит имя отправителя» у каждого поля, где он есть, и запланировать обновление TYPO3 до поддерживаемой линейки, где доступна исправленная версия powermail. Версии TYPO3, на которых работают эти поколения, сами давно не поддерживаются, и это вторая причина запланировать такой переход.

Одна проверка, которая не работает, поэтому, пожалуйста, не полагайтесь на неё. Если вы заглянете в исходный код своей страницы, то увидите ресурсы расширения с длинным числом в конце, например .../JavaScript/Powermail/Form.min.js?1785752971 (или встроенным в имя файла, как Form.min.1785752971.js). Это число представляет собой временную метку файла, которую TYPO3 добавляет для сброса кэша, а не версию, и определить по нему версию на глаз невозможно. Так совпало, что именно его использовала моя проверка, способом, который я объясняю ниже, но доверять следует способам чтения, описанным выше.

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

Исправленные версии опубликованы в TYPO3 Extension Repository (TER), на Packagist и на GitHub, так что это обычное обновление расширения. Сначала сделайте резервную копию, затем обновляйтесь тем механизмом, который соответствует способу установки вашего сайта:

  1. Сделайте резервную копию сайта (файлы и базу данных), прежде чем вносить изменения. Большинство хостинг-провайдеров предлагают резервное копирование в один клик.
  2. Установка через Composer (большинство сайтов на TYPO3 12 и 13 и многие на 11): в каталоге проекта выполните обновление требования для своей линейки, например composer require "in2code/powermail:^13.2.1" на TYPO3 13, "in2code/powermail:^12.6.1" на TYPO3 12 или "in2code/powermail:^10.9.3" на TYPO3 11.5. Затем выполните свои обычные шаги после обновления (vendor/bin/typo3 extension:setup на TYPO3 12 и 13 или эквивалент, используемый вашим развёртыванием) и очистите кэши.
  3. Классическая установка (без Composer): в бэкенде TYPO3 перейдите в Инструменты администратора, затем Расширения, переключите выпадающий список на Получить расширения, найдите powermail и обновите его до исправленной версии своей линейки. Если ваш сайт не может подключиться к TER, бюллетень производителя содержит прямые ссылки на архивы выпусков (см. Источники); загрузите архив через Расширения и кнопку загрузки. После этого очистите кэши.
  4. После обновления подтвердите новую версию (13.2.1, 12.6.1 или 10.9.3, в зависимости от вашей линейки) описанными выше шагами и отправьте одну из собственных форм в качестве теста, чтобы убедиться, что письма по-прежнему приходят нормально.

Заодно стоит убедиться, что сама TYPO3 и остальные ваши расширения обновлены, поскольку тот же принцип относится ко всем ним.

После обновления: не использовали ли это уже против вас?

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

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

  • Просмотрите имена отправителей, которые получали ваши формы. Проверьте письма, которые формы вам присылали, и сохранённые отправки в бэкенде TYPO3 (собственный модуль Mails расширения powermail) или в таблице базы данных tx_powermail_domain_model_mail на предмет имён отправителей, содержащих синтаксис Fluid, например f:, v: или {namespace. Имя настоящего посетителя никогда так не выглядит.
  • Если вы такие найдёте, указание производителя состоит в том, чтобы считать систему потенциально скомпрометированной. Поскольку эта проблема может раскрыть конфигурацию и переменные окружения, разумной реакцией в этом случае будет сменить секреты, которые хранит ваш сайт: пароль базы данных, encryptionKey TYPO3, пароль Install Tool и любые API-ключи или учётные данные, хранящиеся в конфигурации или окружении. Просмотрите пользователей бэкенда на предмет учётных записей, которые вы не узнаёте, поищите неожиданные файлы на сервере, а если в вашей организации есть команда информационной безопасности или национальный CERT, подключите их.
  • Если вы ничего не найдёте, и особенно если ни одно поле изначально не несло пометки, достаточно одного обновления.

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

Что я делал и чего не делал

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

В частности, я никогда не отправлял ни одну из ваших форм и никогда не посылал шаблонный синтаксис ни на ваш сайт, ни на чей-либо ещё. Ничего не отправлялось, не тестировалось и не эксплуатировалось. Здесь это важнее, чем на большинстве подобных страниц, потому что отправка формы представляет собой ровно то действие, которого касается эта проблема; «я к этому не прикасался» и есть вся разница между разглашением и вторжением.

Как была определена версия, раз расширение TYPO3 не публикует файла версии: TYPO3 добавляет к URL каждого ресурса время его последнего изменения, как в Form.min.js?1785752971. На сайте, установленном через Composer, это время совпадает с моментом публикации выпуска, потому что Composer сохраняет его при распаковке пакета, так что число точно идентифицирует выпуск: у каждого выпуска powermail оно своё. Я сравнил число, которое отдаёт ваш сайт, с известными временами публикации выпусков и написал вам только при точном совпадении. Всё остальное, а именно это обычно отдаёт сайт, установленный через менеджер расширений или развёрнутый копированием файлов, читается как «неизвестно», и таким сайтам я вообще не писал.

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

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

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

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

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

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

Контакты

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

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

Источники

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

Разработчик / расширение