Pokud jste ode mě obdrželi e-mail, který vás odkazuje na tuto stránku, je to proto, že se zdá, že váš web běží na verzi rozšíření powermail (formulářové rozšíření pro TYPO3 od in2code, balíček Composeru in2code/powermail, které se ve vašich souborech nachází v typo3conf/ext/powermail/ nebo, u instalace přes Composer, v vendor/in2code/powermail/), která spadá do ovlivněného rozsahu známého bezpečnostního problému. Tato stránka vysvětluje, o jaký problém jde, jak zjistit, zda se týká vašeho webu, na kterou verzi aktualizovat a jak zkontrolovat, zda ho už někdo proti vám nepoužil.

Než cokoli dalšího, nejdůležitější skutečnost tohoto upozornění: verze v ovlivněném rozsahu sama o sobě neznamená, že je váš web vystaven riziku. Níže popsaný problém se projeví jen u formulářů, které mají pole označené jako jméno odesílatele, a já zvenčí nevidím, jak jsou vaše formuláře nastaveny:

  • Problém se týká pouze formuláře powermail, který má alespoň jedno pole se zaškrtnutým políčkem „Toto pole obsahuje jméno odesílatele” (anglicky: “This field contains the Name of the sender”, na kartě Rozšířené daného pole v backendu TYPO3). Pokud žádný z vašich formulářů toto označení nepoužívá, netýká se vás to, ani na ovlivněné verzi.
  • Toto označení je ovšem běžné. Standardní pole Jméno z průvodce formulářem ho zpravidla nastavuje a upozornění dodavatele samo označuje tuto konfiguraci za „běžnou a blízkou výchozímu stavu”. Prosím proto o kontrolu, nikoli o domněnku.

Verzi powermailu dokážu vyčíst z veřejného souboru, ale nastavení vašich formulářů nevidím, takže toto upozornění je preventivní varování, nikoli potvrzený nález ohledně vašeho webu.

Jedná se o CVE-2026-77136 (upozornění TYPO3 TYPO3-EXT-SA-2026-022), neautentizované vkládání šablon na straně serveru ve zpracování e-mailů tohoto rozšíření. Postihuje všechny verze powermailu starší než 10.9.3, všechny verze 11.x a 12.x starší než 12.6.1 a všechny verze 13.x starší než 13.2.1. Opraveno je ve verzích 10.9.3, 12.6.1 a 13.2.1, všech vydaných 25. srpna 2026, po jedné pro každou řadu TYPO3. Neexistuje verze dost stará na to, aby nebyla postižena: slabina je součástí původního návrhu rozšíření, nejde o něco, co by přišlo až v pozdější verzi.

Pár slov k naléhavosti, protože jde o podmíněné upozornění. Pokud žádný z vašich formulářů nemá pole označené jako jméno odesílatele, je aktualizace běžnou údržbou. Pokud ho některý má, berte prosím aktualizaci jako prioritu: upozornění dodavatele uvádí, že tento problém je aktivně zneužíván, a v takové konfiguraci může návštěvník bez jakéhokoli účtu přimět váš server k vyhodnocení šablonového kódu podle své volby, což může odhalit vaši konfiguraci, proměnné prostředí a zdrojový kód a v závislosti na nastavení vést až ke vzdálenému spuštění kódu.

Jedná se o chybu rozšíření, nikoli jádra TYPO3. Plně aktuální TYPO3 vás nechrání, pokud je samotné rozšíření powermail na postižené verzi.

Je tato zpráva legitimní?

Ano. Jde o upozornění v dobré víře v rámci odpovědného zveřejňování od nezávislého bezpečnostního výzkumníka. Nežádám vás o peníze, hesla ani přístup k vašemu webu a nepokusil jsem se do něj proniknout, odeslat žádný z vašich formulářů ani mu cokoli poslat.

Jediné, co jsem udělal, bylo prohlédnutí veřejně viditelných souborů, které váš web poskytuje každému návštěvníkovi (stejně jako je veřejná vaše úvodní stránka), a poznamenání verze, kterou identifikují vlastní assety rozšíření. Výslovně jsem neodeslal žádný formulář, nikam jsem neposlal šablonovou syntaxi a ke zpracování e-mailů rozšíření jsem se nepřiblížil. Nic z této kontroly se nedotýká vašich dat, vašeho backendu ani žádné soukromé části webu (podrobněji v části Co jsem udělal a co ne níže).

Pokud si chcete ověřit, kdo jsem, podívejte se na kontaktní údaje na konci této stránky a na stránku O mně.

Proč na tom záleží

Powermail staví kontaktní a poptávkové formuláře na velkém množství webů na TYPO3. Když návštěvník odešle formulář, rozšíření pošle e-mail nastavenému příjemci webu a jméno odesílatele v tomto e-mailu vyplní z těch polí formuláře, která redaktor označil jako obsahující jméno odesílatele.

Powermail umožňuje redaktorům zapisovat drobné úryvky šablonovacího jazyka Fluid systému TYPO3 do některých nastavení e-mailů, například aby předmět mohl znít “Message from {firstname}”. To je záměrná funkce pro hodnoty, které napsal redaktor. V postižených verzích byl ale jménu odesílatele sestavenému ze vstupu samotného návštěvníka předán tentýž šablonovací engine, jako by ho napsal redaktor. Návštěvník tedy mohl do pole se jménem ve veřejném formuláři napsat syntaxi Fluidu a server ji při sestavování e-mailu pro příjemce vyhodnotil.

Z toho plynou dvě věci, které táhnou opačnými směry. První je, že na tom záleží jen tam, kde některé pole formuláře skutečně nese označení jména odesílatele; web, jehož formuláře takové pole nepoužívají, není přes tento problém dosažitelný. Druhá je, že tam, kde označení nastaveno je, není potřeba žádný účet, žádné heslo ani ničí součinnost: formulář je z principu otevřený veřejnosti a jediné, co útočník musí udělat, je odeslat ho. Dodavatel hodnotí problém jako kritický (skóre CVSS 4.0 ve výši 9.5) a jeho upozornění uvádí, že je aktivně zneužíván.

Popisuji to na úrovni, kterou majitel webu potřebuje k jednání, a dál ne. Nezveřejňuji detaily, které by někomu umožnily problém zreprodukovat, a prosím vás, abyste to nezkoušeli proti vlastnímu webu ani webu kohokoli jiného. Kontrola polí vašich formulářů a vaší verze, jak je popsána níže, vám řekne vše, co potřebujete k rozhodnutí, co dělat.

Pokud můj e-mail tento problém zmiňoval, znamená to, že verze, kterou identifikují assety vašeho webu, spadá do ovlivněného rozsahu. Neověřoval jsem, zda je váš konkrétní web zneužitelný, a nevidím, jak jsou vaše formuláře sestaveny. Vše, co jsem pozoroval, je verze.

Týká se to mě?

Rozhodují dvě otázky, a to v tomto pořadí.

Za prvé: nese některé pole formuláře označení jména odesílatele?

Toto je rozhodující otázka a odpovědět na ni můžete pouze vy. Kontrola vlastních formulářů je zcela bezpečná a je celým smyslem této stránky.

  1. Přihlaste se do backendu TYPO3 a otevřete stránku (nebo složku), na které jsou uloženy vaše formuláře powermail. Každý formulář je záznam s jednou nebo více stránkami a každá stránka obsahuje pole.
  2. Otevřete každý záznam pole a na jeho kartě Rozšířené hledejte zaškrtávací políčko „Toto pole obsahuje jméno odesílatele”. Nejčastěji bývá zaškrtnuté u pole, do kterého návštěvníci píší své jméno.
  3. Pokud žádné pole na žádném z vašich formulářů toto políčko zaškrtnuté nemá, tento problém se vašeho webu netýká, ani na postižené verzi; aktualizace je nicméně stále vhodná jako běžná údržba.
  4. Pokud ho kterékoli pole zaškrtnuté má, problém se vás týká a měli byste co nejdříve aktualizovat (viz Jak aktualizovat). Pokud nemůžete aktualizovat hned, odškrtněte toto políčko u každého pole, které ho má: je to dodavatelem doporučené zmírnění a problém samo o sobě uzavírá. Cenou je, že jméno odesílatele se v e-mailech odesílaných formulářem přestane vyplňovat, dokud neaktualizujete a políčko znovu nezaškrtnete.

Prosím, nezkoušejte problém reprodukovat proti vlastnímu webu ani webu kohokoli jiného; k zodpovězení výše uvedené otázky to nepotřebujete.

Za druhé: jakou verzi používáte?

Nemusíte mi věřit na slovo. Mějte na paměti, že pro rozšíření TYPO3 neexistuje veřejný soubor s verzí, jako existuje třeba u pluginu pro WordPress, takže spolehlivá čtení probíhají všechna zevnitř vaší instalace:

Z backendu TYPO3 (směrodatné): přejděte na Nástroje správce a poté Rozšíření. Seznam nainstalovaných rozšíření zobrazuje verzi každého z nich; najděte powermail. (U instalace založené na Composeru je seznam pouze pro čtení, ale nainstalovanou verzi stále zobrazuje.)

Z příkazové řádky, u instalace přes Composer: spusťte v adresáři projektu composer show in2code/powermail. Řádek versions je nainstalovaná verze.

Ze souborů: otevřete ext_emconf.php ve složce rozšíření (typo3conf/ext/powermail/ u klasické instalace, vendor/in2code/powermail/ u instalace přes Composer) a najděte položku 'version' poblíž začátku.

Poté použijte toto pravidlo, přičemž verze se porovnávají číselně, nikoli abecedně (10.9.2 je novější než 10.8.2 a 13.2.1 je novější než 13.2.0):

  • 13.0.0 až 13.2.0: potenciálně postiženo, s podmínkou výše uvedené otázky o označení. Aktualizujte na 13.2.1 nebo novější.
  • 11.0.0 až 12.6.0: potenciálně postiženo, s podmínkou výše uvedené otázky o označení. Aktualizujte na 12.6.1 nebo novější. To zahrnuje každou verzi 11.x: samostatná oprava pro 11.x neexistuje a 12.6.1 běží na stejných verzích TYPO3 (12.2 až 12.5) jako 11.x, jde tedy o prostou aktualizaci rozšíření bez nutnosti upgradu TYPO3.
  • 10.9.2 a vše starší: potenciálně postiženo, s podmínkou výše uvedené otázky o označení. Pokud jste na 9.x nebo 10.x (TYPO3 11.5), aktualizujte na 10.9.3 nebo novější. Pokud jste na 7.x nebo 8.x (TYPO3 8.7 až 10.4), přečtěte si následující odstavec.
  • 13.2.1, 12.6.1 nebo 10.9.3 a novější v rámci své řady: co se tohoto problému týče, již opraveno.

Pokud jste na powermailu 7.x nebo 8.x, neexistuje opravená verze, která by běžela na vaší verzi TYPO3: 10.9.3 vyžaduje TYPO3 11.5. Pro tyto weby zní pokyn dodavatele použít výše uvedené zmírnění, tedy odškrtnout „Toto pole obsahuje jméno odesílatele” u každého pole, které ho má, a naplánovat upgrade TYPO3 na podporovanou řadu, kde je opravená verze powermailu k dispozici. Verze TYPO3, na kterých tyto generace běží, jsou samy dávno bez podpory, což je druhý důvod tento krok naplánovat.

Jedna kontrola, která nefunguje, prosím nespoléhejte na ni. Když se podíváte do zdrojového kódu své stránky, uvidíte assety rozšíření s dlouhým připojeným číslem, například .../JavaScript/Powermail/Form.min.js?1785752971 (nebo vložené do názvu souboru jako Form.min.1785752971.js). Toto číslo je časové razítko souboru, které TYPO3 připojuje kvůli obcházení cache, nikoli verze, a verzi z něj okem nevyčtete. Shodou okolností je to právě to, co použila moje kontrola, způsobem, který vysvětluji níže, ale důvěřovat máte čtením uvedeným výše.

Jak aktualizovat

Opravené verze jsou zveřejněny v TYPO3 Extension Repository (TER), na Packagistu a na GitHubu, takže jde o běžnou aktualizaci rozšíření. Nejprve zálohujte a poté aktualizujte mechanismem, který odpovídá způsobu instalace vašeho webu:

  1. Zálohujte svůj web (soubory i databázi), než provedete změny. Většina poskytovatelů hostingu nabízí zálohy na jedno kliknutí.
  2. Instalace přes Composer (většina webů na TYPO3 12 a 13 a mnoho na 11): v adresáři projektu spusťte aktualizaci požadavku pro svou řadu, například composer require "in2code/powermail:^13.2.1" na TYPO3 13, "in2code/powermail:^12.6.1" na TYPO3 12, nebo "in2code/powermail:^10.9.3" na TYPO3 11.5. Poté spusťte své obvyklé kroky po aktualizaci (vendor/bin/typo3 extension:setup na TYPO3 12 a 13, nebo ekvivalent používaný vaším nasazením) a vyprázdněte cache.
  3. Klasická instalace (bez Composeru): v backendu TYPO3 přejděte na Nástroje správce a poté Rozšíření, přepněte rozbalovací nabídku na Získat rozšíření, vyhledejte powermail a aktualizujte ho na opravenou verzi pro svou řadu. Pokud se váš web nedostane k TER, upozornění dodavatele odkazuje přímo na archivy vydání (viz Odkazy); nahrajte archiv přes Rozšíření a tlačítko pro nahrání. Poté vyprázdněte cache.
  4. Po aktualizaci potvrďte novou verzi (13.2.1, 12.6.1 nebo 10.9.3, podle toho, která odpovídá vaší řadě) pomocí výše uvedených kroků a zkušebně odešlete jeden z vlastních formulářů, abyste ověřili, že e-maily nadále chodí normálně.

Když už jste u toho, vyplatí se ověřit, že samotné TYPO3 a vaše ostatní rozšíření jsou aktuální, protože stejný princip platí pro všechny.

Po aktualizaci: nebylo to už proti vám použito?

Aktualizace problém uzavírá a pro mnoho webů je to celý úkol. Tato stránka je preventivní upozornění, nikoli zpráva o incidentu: nemám žádný vhled do toho, zda se na vašem webu něco stalo, a nezjišťoval jsem to.

Protože ale dodavatel uvádí, že tento problém byl zneužíván v praxi, vyplatí se jeden následný krok, a je podmíněný toutéž otázkou o označení. Pokud měl váš web formulář s polem jména odesílatele v době, kdy běžela postižená verze, pak bylo možné, že někdo přes tento formulář spustil na vašem serveru šablonový kód, a aktualizace neodčiní nic, co už mohlo být přečteno. Upozornění dodavatele uvádí jednoduchou samokontrolu a její provedení nic nestojí:

  • Podívejte se na jména odesílatelů, která vaše formuláře obdržely. Zkontrolujte e-maily, které vám formuláře poslaly, a uložené záznamy v backendu TYPO3 (vlastní modul Mails powermailu) nebo v databázové tabulce tx_powermail_domain_model_mail, zda neobsahují jména odesílatelů se syntaxí Fluidu, jako f:, v: nebo {namespace. Jméno skutečného návštěvníka takhle nikdy nevypadá.
  • Pokud nějaká najdete, doporučení dodavatele zní považovat systém za potenciálně kompromitovaný. Protože tento problém může odhalit konfiguraci a proměnné prostředí, rozumnou reakcí je v takovém případě obměnit tajemství, která váš web drží: heslo k databázi, encryptionKey TYPO3, heslo k Install Toolu a jakékoli API klíče nebo přihlašovací údaje uložené ve vaší konfiguraci nebo prostředí. Projděte své backendové uživatele, zda mezi nimi nejsou účty, které nepoznáváte, hledejte nečekané soubory na serveru, a pokud má vaše organizace IT bezpečnostní tým nebo národní CERT, zapojte je.
  • Pokud žádná nenajdete, a zvlášť pokud žádné pole označení od začátku neneslo, stačí samotná aktualizace.

Aby bylo zarámování jasné: jde o samokontrolu, nikoli o prohlášení, že váš web byl napaden. Toto upozornění vychází z otisku verze, nikoli z jakéhokoli důkazu o incidentu.

Co jsem udělal a co ne

Abych byl ohledně kontroly za mým e-mailem zcela transparentní: četl jsem pouze soubory, které váš web už poskytuje každému návštěvníkovi, konkrétně vaši úvodní stránku a adresy assetů powermailu v ní zapsané. Nepřistupoval jsem k vašemu backendu TYPO3, databázi, nastavení formulářů ani k žádné soukromé části webu.

Zejména jsem nikdy neodeslal žádný z vašich formulářů a nikdy jsem neposlal šablonovou syntaxi na váš web ani na web kohokoli jiného. Nic nebylo odesláno, testováno ani zneužito. To zde váží víc než na většině těchto stránek, protože odeslání formuláře je přesně ta akce, které se tento problém týká; „nedotkl jsem se toho” je tedy celý rozdíl mezi zveřejněním a průnikem.

Jak byla verze identifikována, když rozšíření TYPO3 žádný soubor s verzí nezveřejňuje: TYPO3 připojuje k URL každého assetu čas jeho poslední změny, jako v Form.min.js?1785752971. Na webu instalovaném Composerem je tento čas okamžikem vydání dané verze, protože Composer ho při rozbalování balíčku zachovává, takže číslo verzi identifikuje přesně: každé vydání powermailu má své vlastní. Porovnal jsem číslo, které váš web poskytuje, se zveřejněnými časy vydání a napsal jsem vám jen při přesné shodě. Cokoli jiného, což je to, co typicky poskytuje web instalovaný přes Extension Manager nebo nasazený kopírováním souborů, se čte jako „neznámé” a takovým webům jsem vůbec nepsal.

Tato metoda má jedno známé slepé místo a chybuje na straně opatrnosti. Opravy mění pouze PHP kód rozšíření, nikoli jeho veřejné assety. Pokud tedy byl váš web opraven nahrazením pouze kódu (ruční hot-patch místo úplné aktualizace), jeho assety stále nesou časové razítko staré verze a čte se jako postižená verze, přestože je chráněn. Pokud jste to už napravili jiným způsobem, není potřeba žádná akce, a omlouvám se za rušení.

Záměrně také nezveřejňuji detaily, které by někomu pomohly tento problém zneužít. Výše uvedený popis končí na úrovni, kterou majitel webu potřebuje, a neodkazuji na žádný proof-of-concept kód.

Jde o pozorování založené na verzi: assety vašeho webu identifikují verzi v ovlivněném rozsahu. Není to tvrzení, že váš web byl v době mé kontroly zneužitelný. Protože problém závisí na nastavení pole formuláře, které nevidím, web v tomto rozsahu nemusí být vůbec vystaven a web v tomto rozsahu může být nezávisle chráněn jinými prostředky, například webovým aplikačním firewallem.

Nemám webmastera / nevím, kudy dál

Pokud nejste osobou, která web udržuje, přepošlete prosím tuto stránku tomu, kdo to dělá (vašemu webovému vývojáři, agentuře nebo poskytovateli hostingu). Výše uvedené kroky rychle poznají.

Pokud web udržujete sami a zaseknete se, rád vám zdarma pomohu najít správný směr. Kontaktujte mě pomocí kontaktních údajů níže.

Kontakt

Evan Harris, bezpečnostní výzkumník

O takových problémech vás kontaktuji čistě proto, abych pomohl provozovatelům zabezpečit jejich weby. Pokud byste raději nechtěli, abych vás znovu kontaktoval, stačí mi dát vědět a budu to respektovat.

Odkazy

Oficiální hlášení a sledování

Dodavatel / rozšíření