Повідомлення про безпеку powermail
Якщо ви отримали від мене лист із посиланням на цю сторінку, то це тому, що ваш сайт, вочевидь,
використовує версію розширення 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), а його бюлетень повідомляє, що її активно експлуатують.
Я описую це на рівні, який потрібен власнику сайту для дій, і не далі. Я не публікую деталей, які дали б комусь змогу відтворити проблему, і прошу вас не пробувати це проти власного сайту чи чужого. Перевірка полів ваших форм і вашої версії, описана нижче, скаже вам усе, що потрібно для рішення.
Якщо в моєму листі згадувалася ця проблема, це означає, що версія, яку дозволяють визначити ресурси вашого сайту, потрапляє в уражений діапазон. Я не перевіряв, чи вразливий саме ваш сайт, і не бачу, як побудовані ваші форми. Усе, що я спостерігав, це версія.
Чи стосується це мене?
Це вирішують два питання, у такому порядку.
Перше: чи несе якесь поле форми позначку імені відправника?
Це вирішальне питання, і відповісти на нього можете лише ви. Перевірка власних форм цілком безпечна і становить увесь сенс цієї сторінки.
- Увійдіть у бекенд TYPO3 і відкрийте сторінку (або теку), де зберігаються ваші форми powermail. Кожна форма є записом з однією чи кількома сторінками, а кожна сторінка містить поля.
- Відкрийте кожен запис поля і знайдіть на його вкладці Розширений прапорець «Це поле містить ім’я відправника». Найчастіше він установлений у полі, куди відвідувачі вводять своє ім’я.
- Якщо цей прапорець не встановлений у жодному полі жодної з ваших форм, проблема не досягає вашого сайту навіть на ураженій версії, хоча оновитися все одно варто в межах звичайного обслуговування.
- Якщо прапорець установлений хоча б в одному полі, проблема вас стосується, і вам слід оновитися якнайшвидше (див. Як оновитися). Якщо ви не можете оновитися одразу, зніміть цей прапорець у кожному полі, де він є: це захід, рекомендований самим виробником, і він сам по собі закриває проблему. Ціна в тому, що ім’я відправника перестане підставлятися в листи, які надсилає форма, доки ви не оновитеся і не встановите прапорець знову.
Будь ласка, не намагайтеся відтворити проблему проти власного сайту чи чужого; для відповіді на питання вище це не потрібно.
Друге: яка версія у вас працює?
Вам не обов’язково вірити мені на слово. Зауважте, що для розширення 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, тож це звичайне оновлення розширення. Спершу зробіть резервну копію, потім оновлюйтеся тим механізмом, який відповідає способу встановлення вашого сайту:
- Зробіть резервну копію сайту (файли та базу даних), перш ніж вносити зміни. Більшість хостинг-провайдерів пропонують резервне копіювання одним кліком.
- Встановлення через 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 або еквівалент, який використовує ваше розгортання) і очистіть кеші. - Класичне встановлення (без Composer): у бекенді TYPO3 перейдіть до Інструменти адміністратора, потім Розширення, перемкніть випадний список на Отримати розширення, знайдіть powermail і оновіть його до виправленої версії своєї лінійки. Якщо ваш сайт не може під’єднатися до TER, бюлетень виробника містить прямі посилання на архіви випусків (див. Джерела); завантажте архів через Розширення та кнопку завантаження. Після цього очистіть кеші.
- Після оновлення підтвердьте нову версію (13.2.1, 12.6.1 або 10.9.3, залежно від вашої лінійки) описаними вище кроками і надішліть одну з власних форм як тест, щоб переконатися, що листи й далі надходять нормально.
Заразом варто переконатися, що сама TYPO3 та решта ваших розширень оновлені, адже той самий принцип стосується їх усіх.
Після оновлення: чи не використали це вже проти вас?
Оновлення закриває проблему, і для багатьох сайтів на цьому завдання завершується. Ця сторінка є запобіжним повідомленням, а не звітом про інцидент: я не маю відомостей про те, чи відбувалося щось на вашому сайті, і цього не перевіряв.
Але оскільки виробник повідомляє, що цю проблему експлуатували на практиці, варто зробити один подальший крок, і він залежить від того самого питання про позначку. Якщо на вашому сайті була форма з полем імені відправника в час, коли працювала уражена версія, то хтось міг виконати шаблонний код на вашому сервері через цю форму, а оновлення не скасовує того, що вже могло бути прочитано. Бюлетень виробника пропонує просту самоперевірку, і вона нічого не коштує:
- Перегляньте імена відправників, які отримували ваші форми. Перевірте листи, які форми вам
надсилали, і збережені надсилання в бекенді TYPO3 (власний модуль Mails розширення
powermail) або в таблиці бази даних
tx_powermail_domain_model_mailна предмет імен відправників, що містять синтаксис Fluid, наприкладf:,v:або{namespace. Ім’я справжнього відвідувача ніколи так не виглядає. - Якщо ви такі знайдете, вказівка виробника полягає в тому, щоб вважати систему потенційно
скомпрометованою. Оскільки ця проблема може розкрити конфігурацію та змінні середовища,
розумною реакцією в цьому разі буде замінити секрети, які зберігає ваш сайт: пароль бази
даних,
encryptionKeyTYPO3, пароль Install Tool і будь-які API-ключі чи облікові дані, збережені в конфігурації або середовищі. Перегляньте користувачів бекенда на предмет облікових записів, яких ви не впізнаєте, пошукайте несподівані файли на сервері, а якщо у вашій організації є команда інформаційної безпеки або національний CERT, залучіть їх. - Якщо ви нічого не знайдете, і особливо якщо жодне поле від початку не мало позначки, достатньо самого оновлення.
Щоб рамки були зрозумілі: це самоперевірка, а не заява про те, що ваш сайт було атаковано. Це повідомлення ґрунтується на відбитку версії, а не на будь-яких свідченнях інциденту.
Що я робив і чого не робив
Щоб бути повністю прозорим щодо перевірки, яка стоїть за моїм листом: я читав лише файли, які ваш сайт і так віддає кожному відвідувачу, а саме вашу головну сторінку та записані в ній адреси ресурсів powermail. Я не звертався до вашого бекенда TYPO3, бази даних, налаштувань форм чи будь-якої закритої частини сайту.
Зокрема, я ніколи не надсилав жодної з ваших форм і ніколи не відправляв шаблонний синтаксис ані на ваш сайт, ані на чийсь інший. Нічого не надсилалося, не тестувалося і не експлуатувалося. Тут це важить більше, ніж на більшості таких сторінок, адже надсилання форми є саме тією дією, якої стосується ця проблема; «я цього не торкався» і є всією різницею між розкриттям і вторгненням.
Як було визначено версію, якщо розширення TYPO3 не публікує файлу версії: TYPO3 додає до URL
кожного ресурсу час його останньої зміни, як у Form.min.js?1785752971. На сайті, встановленому
через Composer, цей час збігається з моментом публікації випуску, бо Composer зберігає його під
час розпакування пакета, тож число точно ідентифікує випуск: у кожного випуску powermail воно
своє. Я порівняв число, яке віддає ваш сайт, із відомими часами публікації випусків і написав вам
лише за точного збігу. Усе інше, а саме це зазвичай віддає сайт, установлений через менеджер
розширень або розгорнутий копіюванням файлів, читається як «невідомо», і таким сайтам я взагалі
не писав.
Цей метод має одну відому сліпу пляму, і він помиляється в бік обережності. Виправлення змінюють лише PHP-код розширення, а не його публічні ресурси. Тому якщо ваш сайт було виправлено заміною самого лише коду (ручна точкова латка замість повного оновлення), його ресурси досі несуть часову мітку старої версії, і він читається як уражена версія, хоча й захищений. Якщо ви вже усунули проблему в інший спосіб, жодних дій не потрібно, і я перепрошую за клопіт.
Я також навмисно не публікую деталей, які допомогли б комусь скористатися цією проблемою. Наведений вище опис зупиняється на рівні, потрібному власнику сайту, і я не даю посилань на жодний код для демонстрації.
Це спостереження, що ґрунтується на версії: ресурси вашого сайту дозволяють визначити версію в ураженому діапазоні. Це не твердження, що ваш сайт був вразливим у момент моєї перевірки. Оскільки проблема залежить від налаштування поля форми, якого я не бачу, сайт у цьому діапазоні цілком може бути зовсім не під загрозою, а сайт у цьому діапазоні може бути окремо захищений іншими засобами, наприклад фаєрволом вебзастосунків.
У мене немає вебмайстра / я не даю ради
Якщо не ви обслуговуєте сайт, будь ласка, перешліть цю сторінку тому, хто цим займається (вашому веброзробнику, агенції чи хостинг-провайдеру). Вони швидко впізнають описані вище кроки.
Якщо ви обслуговуєте сайт самостійно і застрягли, я радо безкоштовно підкажу правильний напрям. Зв’яжіться зі мною за контактними даними нижче.
Контакти
Evan Harris, дослідник безпеки
- Ел. пошта: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Я звертаюся з такими питаннями винятково для того, щоб допомогти операторам захистити свої сайти. Якщо ви волієте більше не отримувати від мене листів, просто скажіть, і я це врахую.
Джерела
Офіційні бюлетені та відстеження
- TYPO3-EXT-SA-2026-022, бюлетень виробника (з прямими посиланнями для завантаження версій 10.9.3, 12.6.1 і 13.2.1)
- Запис у NVD (CVE-2026-77136)
Розробник / розширення