Biuletyn bezpieczeństwa powermail
Jeśli otrzymali Państwo ode mnie e-mail kierujący na tę stronę, to dlatego, że Państwa witryna
wydaje się uruchamiać wersję rozszerzenia powermail (rozszerzenia formularzy dla TYPO3
autorstwa in2code, pakiet Composera in2code/powermail, znajdującego się w Państwa plikach w
katalogu typo3conf/ext/powermail/ lub, przy instalacji przez Composer, w
vendor/in2code/powermail/), która mieści się w zakresie objętym znanym problemem
bezpieczeństwa. Ta strona wyjaśnia, na czym polega problem, jak ustalić, czy dotyczy on Państwa
witryny, do której wersji zaktualizować oraz jak sprawdzić, czy ktoś już go przeciwko Państwu nie
wykorzystał.
Zanim przejdę dalej, najważniejszy fakt dotyczący tego powiadomienia: sama wersja z zakresu objętego problemem nie oznacza, że Państwa witryna jest narażona. Opisany poniżej problem ma znaczenie tylko w formularzach, które mają pole oznaczone jako imię i nazwisko nadawcy, a ja nie widzę z zewnątrz, jak skonfigurowane są Państwa formularze:
- Problem dotyczy wyłącznie formularza powermail, który ma co najmniej jedno pole z zaznaczonym polem wyboru „To pole zawiera imię i nazwisko nadawcy” (po angielsku: “This field contains the Name of the sender”, na karcie Rozszerzone danego pola w backendzie TYPO3). Jeśli żaden z Państwa formularzy nie używa tego oznaczenia, problem Państwa nie dotyczy, nawet przy wersji objętej problemem.
- Trzeba jednak dodać, że to oznaczenie jest powszechne. Standardowe pole Imię kreatora formularzy zwykle je ustawia, a biuletyn producenta sam określa tę konfigurację jako „powszechną i bliską domyślnej”. Proszę więc sprawdzić, a nie zakładać.
Mogę odczytać wersję powermail z publicznie dostępnego pliku, ale nie mogę odczytać ustawień Państwa formularzy, dlatego to powiadomienie jest ostrzeżeniem zapobiegawczym, a nie potwierdzonym ustaleniem dotyczącym Państwa witryny.
Problemem jest CVE-2026-77136 (biuletyn TYPO3 TYPO3-EXT-SA-2026-022), nieuwierzytelnione wstrzyknięcie szablonów po stronie serwera w obsłudze poczty rozszerzenia. Dotyczy każdej wersji powermail starszej niż 10.9.3, każdej wersji 11.x i 12.x starszej niż 12.6.1 oraz każdej wersji 13.x starszej niż 13.2.1. Problem naprawiono w wersjach 10.9.3, 12.6.1 i 13.2.1, wszystkich wydanych 25 sierpnia 2026 r., po jednej dla każdej linii TYPO3. Nie istnieje wersja na tyle stara, by nie była objęta problemem: słabość jest częścią pierwotnego projektu rozszerzenia, a nie czymś, co pojawiło się w późniejszej wersji.
Słowo o pilności, ponieważ jest to powiadomienie warunkowe. Jeśli żaden z Państwa formularzy nie ma pola oznaczonego jako imię i nazwisko nadawcy, aktualizacja jest zwykłą konserwacją. Jeśli któryś je ma, proszę potraktować aktualizację priorytetowo: biuletyn producenta informuje, że problem jest aktywnie wykorzystywany, a w takiej konfiguracji odwiedzający bez żadnego konta może sprawić, że Państwa serwer wykona kod szablonu według jego wyboru, co może ujawnić konfigurację, zmienne środowiskowe i kod źródłowy, a w zależności od instalacji doprowadzić do zdalnego wykonania kodu.
Jest to wada rozszerzenia, a nie rdzenia TYPO3. W pełni aktualne TYPO3 nie chroni Państwa, jeśli samo rozszerzenie powermail jest w wersji objętej problemem.
Czy ta wiadomość jest wiarygodna?
Tak. Jest to powiadomienie w dobrej wierze, w ramach odpowiedzialnego ujawniania, od niezależnego badacza bezpieczeństwa. Nie proszę Państwa o pieniądze, hasła ani dostęp do witryny i nie próbowałem się do niej włamać, wysłać żadnego z Państwa formularzy ani niczego do niej przesłać.
Jedyne, co zrobiłem, to przejrzenie publicznie widocznych plików, które Państwa witryna serwuje każdemu odwiedzającemu (tak samo, jak publiczna jest strona główna), i odnotowanie wersji, którą identyfikują własne zasoby rozszerzenia. W szczególności nie wysłałem żadnego formularza, nie przesłałem nigdzie składni szablonów i nie zbliżyłem się do obsługi poczty rozszerzenia. Nic w tej kontroli nie dotyka Państwa danych, backendu ani żadnej prywatnej części witryny (więcej w sekcji Co zrobiłem, a czego nie poniżej).
Jeśli chcą Państwo zweryfikować, kim jestem, proszę zajrzeć do danych kontaktowych na dole tej strony oraz na stronę O mnie.
Dlaczego to ważne
Powermail buduje formularze kontaktowe i zapytaniowe na bardzo wielu witrynach TYPO3. Gdy odwiedzający wysyła formularz, rozszerzenie wysyła wiadomość do skonfigurowanego odbiorcy witryny i wypełnia imię i nazwisko nadawcy tej wiadomości na podstawie tych pól formularza, które redaktor oznaczył jako zawierające imię i nazwisko nadawcy.
Powermail pozwala redaktorom wpisywać drobne fragmenty języka szablonów Fluid systemu TYPO3 w niektóre ustawienia poczty, na przykład aby temat mógł brzmieć “Message from {firstname}”. To celowa funkcja dla wartości wpisanych przez redaktora. W wersjach objętych problemem imię i nazwisko nadawcy złożone z danych wpisanych przez samego odwiedzającego trafiało do tego samego silnika szablonów, tak jakby napisał je redaktor. Odwiedzający mógł więc wpisać składnię Fluid w pole imienia publicznego formularza, a serwer wykonywał ją podczas budowania wiadomości dla odbiorcy.
Wynikają z tego dwie rzeczy, które ciągną w przeciwnych kierunkach. Pierwsza: ma to znaczenie tylko tam, gdzie pole formularza faktycznie nosi oznaczenie imienia i nazwiska nadawcy; witryna, której formularze nie używają takiego pola, nie jest osiągalna przez ten problem. Druga: tam, gdzie oznaczenie jest ustawione, nie potrzeba konta, hasła ani niczyjej współpracy: formularz jest z założenia otwarty dla wszystkich, a jedyne, co atakujący musi zrobić, to go wysłać. Producent ocenia problem jako krytyczny (wynik CVSS 4.0 równy 9.5), a jego biuletyn podaje, że jest on aktywnie wykorzystywany.
Opisuję to na poziomie, którego właściciel witryny potrzebuje do działania, i nie dalej. Nie publikuję szczegółów, które pozwoliłyby komuś odtworzyć problem, i proszę, aby nie próbowali Państwo tego przeciwko własnej witrynie ani cudzej. Sprawdzenie pól formularzy i wersji, jak opisano poniżej, mówi wszystko, czego potrzeba do podjęcia decyzji.
Jeśli mój e-mail przywoływał ten problem, oznacza to, że wersja, którą identyfikują zasoby Państwa witryny, mieści się w zakresie objętym problemem. Nie testowałem, czy konkretnie Państwa witryna jest podatna, i nie widzę, jak zbudowane są Państwa formularze. Wszystko, co zaobserwowałem, to wersja.
Czy mnie to dotyczy?
Rozstrzygają o tym dwa pytania, w tej kolejności.
Po pierwsze: czy którekolwiek pole formularza nosi oznaczenie imienia i nazwiska nadawcy?
To jest pytanie decydujące i tylko Państwo mogą na nie odpowiedzieć. Sprawdzenie własnych formularzy jest całkowicie bezpieczne i stanowi cały sens tej strony.
- Proszę zalogować się do backendu TYPO3 i otworzyć stronę (lub katalog), na której znajdują się Państwa formularze powermail. Każdy formularz to rekord z jedną lub kilkoma stronami, a każda strona zawiera pola.
- Proszę otworzyć każdy rekord pola i na jego karcie Rozszerzone poszukać pola wyboru „To pole zawiera imię i nazwisko nadawcy”. Najczęściej jest ono zaznaczone przy polu, w które odwiedzający wpisują swoje imię.
- Jeśli żadne pole w żadnym z Państwa formularzy nie ma zaznaczonego tego pola wyboru, problem nie dosięga Państwa witryny, nawet przy wersji objętej problemem; aktualizacja jest jednak nadal warta wykonania jako zwykła konserwacja.
- Jeśli którekolwiek pole je ma, problem Państwa dotyczy i należy szybko zaktualizować (zob. Jak zaktualizować). Jeśli nie mogą Państwo zaktualizować od razu, proszę odznaczyć to pole wyboru przy każdym polu, które je ma: to zalecane przez samego producenta obejście i samo w sobie zamyka problem. Kosztem jest to, że imię i nazwisko nadawcy przestanie być wypełniane w wiadomościach wysyłanych przez formularz, dopóki nie zaktualizują Państwo rozszerzenia i nie zaznaczą pola ponownie.
Proszę nie próbować odtwarzać problemu przeciwko własnej witrynie ani cudzej; nie jest to potrzebne, aby odpowiedzieć na powyższe pytanie.
Po drugie: której wersji Państwo używają?
Nie muszą Państwo wierzyć mi na słowo. Proszę zauważyć, że dla rozszerzenia TYPO3 nie istnieje publiczny plik wersji, jaki istnieje na przykład dla wtyczki WordPressa, więc wiarygodne odczyty odbywają się wszystkie z wnętrza instalacji:
Z backendu TYPO3 (źródło rozstrzygające): proszę przejść do Narzędzia administratora, a następnie Rozszerzenia. Lista zainstalowanych rozszerzeń pokazuje wersję każdego z nich; proszę znaleźć powermail. (Przy instalacji opartej na Composerze lista jest tylko do odczytu, ale nadal pokazuje zainstalowaną wersję.)
Z wiersza poleceń, przy instalacji przez Composer: proszę uruchomić w katalogu projektu
composer show in2code/powermail. Wiersz versions to zainstalowana wersja.
Z plików: proszę otworzyć ext_emconf.php w katalogu rozszerzenia (typo3conf/ext/powermail/
przy instalacji klasycznej, vendor/in2code/powermail/ przy instalacji przez Composer) i
poszukać wpisu 'version' blisko początku.
Następnie proszę zastosować tę regułę, pamiętając, że wersje porównuje się numerycznie, a nie alfabetycznie (10.9.2 jest nowsza niż 10.8.2, a 13.2.1 jest nowsza niż 13.2.0):
- 13.0.0 do 13.2.0: potencjalnie objęta problemem, z zastrzeżeniem powyższego pytania o oznaczenie. Proszę zaktualizować do 13.2.1 lub nowszej.
- 11.0.0 do 12.6.0: potencjalnie objęta problemem, z zastrzeżeniem powyższego pytania o oznaczenie. Proszę zaktualizować do 12.6.1 lub nowszej. Obejmuje to każdą wersję 11.x: nie ma osobnej poprawki dla 11.x, a 12.6.1 działa na tych samych wersjach TYPO3 (12.2 do 12.5) co 11.x, jest to więc zwykła aktualizacja rozszerzenia bez potrzeby aktualizacji TYPO3.
- 10.9.2 i wszystko starsze: potencjalnie objęte problemem, z zastrzeżeniem powyższego pytania o oznaczenie. Jeśli używają Państwo 9.x lub 10.x (TYPO3 11.5), proszę zaktualizować do 10.9.3 lub nowszej. Jeśli używają Państwo 7.x lub 8.x (TYPO3 8.7 do 10.4), proszę przeczytać następny akapit.
- 13.2.1, 12.6.1 lub 10.9.3 i nowsze w obrębie swojej linii: w zakresie tego problemu już naprawione.
Jeśli używają Państwo powermail 7.x lub 8.x, nie istnieje naprawiona wersja działająca na Państwa wersji TYPO3: 10.9.3 wymaga TYPO3 11.5. Dla takich witryn instrukcją producenta jest powyższe obejście, czyli odznaczenie „To pole zawiera imię i nazwisko nadawcy” przy każdym polu, które je ma, oraz zaplanowanie aktualizacji TYPO3 do wspieranej linii, w której dostępna jest naprawiona wersja powermail. Wersje TYPO3, na których działają te generacje, same są od dawna poza wsparciem, co jest drugim powodem, by ten krok zaplanować.
Jedna kontrola, która nie działa, proszę na niej nie polegać. Zaglądając do kodu źródłowego
strony, zobaczą Państwo zasoby rozszerzenia z długą doklejoną liczbą, na przykład
.../JavaScript/Powermail/Form.min.js?1785752971 (lub osadzoną w nazwie pliku jako
Form.min.1785752971.js). Ta liczba to znacznik czasu pliku, który TYPO3 dokleja w celu
unieważniania pamięci podręcznej, a nie wersja, i nie da się z niej odczytać wersji gołym okiem.
Tak się składa, że to właśnie ją wykorzystała moja kontrola, w sposób, który wyjaśniam poniżej,
ale zaufać należy odczytom opisanym powyżej.
Jak zaktualizować
Naprawione wersje są opublikowane w TYPO3 Extension Repository (TER), na Packagist i na GitHubie, jest to więc zwykła aktualizacja rozszerzenia. Najpierw kopia zapasowa, potem aktualizacja mechanizmem odpowiadającym sposobowi instalacji witryny:
- Proszę wykonać kopię zapasową witryny (pliki i baza danych) przed wprowadzeniem zmian. Większość dostawców hostingu oferuje kopie zapasowe jednym kliknięciem.
- Instalacja przez Composer (większość witryn na TYPO3 12 i 13 oraz wiele na 11): w katalogu
projektu proszę uruchomić aktualizację wymagania dla swojej linii, na przykład
composer require "in2code/powermail:^13.2.1"na TYPO3 13,"in2code/powermail:^12.6.1"na TYPO3 12 lub"in2code/powermail:^10.9.3"na TYPO3 11.5. Następnie proszę wykonać swoje zwykłe kroki poaktualizacyjne (vendor/bin/typo3 extension:setupna TYPO3 12 i 13 lub odpowiednik używany przez Państwa wdrożenie) i wyczyścić pamięci podręczne. - Instalacja klasyczna (bez Composera): w backendzie TYPO3 proszę przejść do Narzędzia administratora, a następnie Rozszerzenia, przełączyć listę rozwijaną na Pobierz rozszerzenia, wyszukać powermail i zaktualizować je do naprawionej wersji dla swojej linii. Jeśli witryna nie może połączyć się z TER, biuletyn producenta zawiera bezpośrednie odnośniki do archiwów wydań (zob. Źródła); proszę wgrać archiwum przez Rozszerzenia i przycisk wgrywania. Potem proszę wyczyścić pamięci podręczne.
- Po aktualizacji proszę potwierdzić nową wersję (13.2.1, 12.6.1 lub 10.9.3, w zależności od linii) powyższymi krokami i wysłać próbnie jeden z własnych formularzy, aby sprawdzić, czy wiadomości nadal przychodzą normalnie.
Przy okazji warto potwierdzić, że samo TYPO3 i pozostałe rozszerzenia są aktualne, ponieważ ta sama zasada dotyczy ich wszystkich.
Po aktualizacji: czy to już zostało użyte przeciwko Państwu?
Aktualizacja zamyka problem i dla wielu witryn to całe zadanie. Ta strona jest powiadomieniem zapobiegawczym, a nie raportem o incydencie: nie mam wglądu w to, czy na Państwa witrynie coś się wydarzyło, i tego nie sprawdzałem.
Ponieważ jednak producent informuje, że problem był wykorzystywany w praktyce, warto wykonać jeden krok następczy, uzależniony od tego samego pytania o oznaczenie. Jeśli Państwa witryna miała formularz z polem imienia i nazwiska nadawcy w czasie działania wersji objętej problemem, możliwe było, że ktoś uruchomił kod szablonu na Państwa serwerze przez ten formularz, a aktualizacja nie cofa niczego, co mogło już zostać odczytane. Biuletyn producenta podaje prostą samokontrolę, a jej wykonanie nic nie kosztuje:
- Proszę przejrzeć imiona i nazwiska nadawców, które otrzymały Państwa formularze. Proszę
sprawdzić wiadomości, które formularze do Państwa wysłały, oraz zapisane zgłoszenia w backendzie
TYPO3 (własny moduł Mails powermail) lub w tabeli bazy danych
tx_powermail_domain_model_mail, pod kątem imion nadawców zawierających składnię Fluid, taką jakf:,v:lub{namespace. Imię prawdziwego odwiedzającego nigdy tak nie wygląda. - Jeśli Państwo takie znajdą, wskazówka producenta brzmi: traktować system jako potencjalnie
skompromitowany. Ponieważ ten problem może ujawnić konfigurację i zmienne środowiskowe,
rozsądną reakcją jest wtedy wymiana sekretów przechowywanych przez witrynę: hasła do bazy
danych,
encryptionKeyTYPO3, hasła do Install Toola oraz wszelkich kluczy API i danych uwierzytelniających zapisanych w konfiguracji lub środowisku. Proszę przejrzeć użytkowników backendu pod kątem kont, których Państwo nie rozpoznają, poszukać nieoczekiwanych plików na serwerze, a jeśli organizacja ma zespół bezpieczeństwa IT lub krajowy CERT, proszę ich włączyć. - Jeśli nic Państwo nie znajdą, a zwłaszcza jeśli żadne pole od początku nie nosiło oznaczenia, sama aktualizacja wystarczy.
Dla jasności co do ram: to jest samokontrola, a nie stwierdzenie, że Państwa witryna została zaatakowana. To powiadomienie opiera się na odcisku wersji, a nie na jakimkolwiek dowodzie incydentu.
Co zrobiłem, a czego nie
Aby zachować pełną przejrzystość co do kontroli stojącej za moim e-mailem: czytałem wyłącznie pliki, które Państwa witryna już serwuje każdemu odwiedzającemu, konkretnie stronę główną i zapisane w niej adresy zasobów powermail. Nie uzyskiwałem dostępu do backendu TYPO3, bazy danych, konfiguracji formularzy ani żadnej prywatnej części witryny.
W szczególności nigdy nie wysłałem żadnego z Państwa formularzy i nigdy nie przesłałem składni szablonów do Państwa witryny ani żadnej innej. Nic nie zostało wysłane, przetestowane ani wykorzystane. To waży tu bardziej niż na większości tych stron, bo wysłanie formularza to dokładnie ta czynność, której dotyczy problem; „nie dotknąłem tego” stanowi więc całą różnicę między ujawnieniem a włamaniem.
Jak zidentyfikowano wersję, skoro rozszerzenie TYPO3 nie publikuje pliku wersji: TYPO3 dokleja
do adresu URL każdego zasobu czas jego ostatniej modyfikacji, jak w Form.min.js?1785752971. Na
witrynie zainstalowanej Composerem ten czas to moment opublikowania wydania, ponieważ Composer
zachowuje go przy rozpakowywaniu pakietu, więc liczba identyfikuje wydanie dokładnie: każde
wydanie powermail ma własną. Porównałem liczbę serwowaną przez Państwa witrynę z opublikowanymi
czasami wydań i napisałem tylko przy dokładnym dopasowaniu. Wszystko inne, czyli to, co
zazwyczaj serwuje witryna zainstalowana przez Extension Manager lub wdrożona przez kopiowanie
plików, odczytywane jest jako „nieznane” i do takich witryn w ogóle nie pisałem.
Ta metoda ma jeden znany martwy punkt i błądzi po stronie ostrożności. Poprawki zmieniają tylko kod PHP rozszerzenia, a nie jego publiczne zasoby. Jeśli więc witryna została załatana przez podmianę samego kodu (ręczna łatka zamiast pełnej aktualizacji), jej zasoby nadal noszą znacznik czasu starej wersji i odczytywana jest jako wersja objęta problemem, mimo że jest chroniona. Jeśli już naprawili to Państwo w inny sposób, żadne działanie nie jest potrzebne, a ja przepraszam za zamieszanie.
Celowo nie publikuję również szczegółów, które pomogłyby komuś wykorzystać ten problem. Powyższy opis kończy się na poziomie, którego potrzebuje właściciel witryny, i nie linkuję żadnego kodu proof-of-concept.
To jest obserwacja oparta na wersji: zasoby Państwa witryny identyfikują wersję w zakresie objętym problemem. Nie jest to stwierdzenie, że witryna była podatna w chwili mojej kontroli. Ponieważ problem zależy od ustawienia pola formularza, którego nie widzę, witryna w tym zakresie może wcale nie być narażona, a witryna w tym zakresie może być niezależnie chroniona innymi środkami, na przykład zaporą aplikacji internetowych.
Nie mam webmastera / utknąłem
Jeśli nie zajmują się Państwo witryną osobiście, proszę przekazać tę stronę osobie, która to robi (deweloperowi, agencji lub firmie hostingowej). Powyższe kroki rozpozna od razu.
Jeśli utrzymują Państwo witrynę samodzielnie i utkną, chętnie bezpłatnie wskażę właściwy kierunek. Proszę napisać, korzystając z danych kontaktowych poniżej.
Kontakt
Evan Harris, badacz bezpieczeństwa
- E-mail: security@mail.mcpsec.dev
- X: @Evan__Harris
- GitHub: eharris128
- LinkedIn: Evan Harris
Kontaktuję się w takich sprawach wyłącznie po to, by pomóc operatorom zabezpieczyć ich witryny. Jeśli wolą Państwo nie otrzymywać kolejnych wiadomości, proszę dać znać; uszanuję to.
Źródła
Oficjalne komunikaty i śledzenie
- TYPO3-EXT-SA-2026-022, biuletyn producenta (z bezpośrednimi odnośnikami do pobrania wersji 10.9.3, 12.6.1 i 13.2.1)
- Wpis w NVD (CVE-2026-77136)
Producent / rozszerzenie