Přeskočit na obsah

Model hrozeb

Frontmail vám umožňuje posílat e-maily přímo z prohlížeče. Je to pohodlné, ale znamená to, že část vaší integrace je v kódu, který si kdokoli může přečíst a zkopírovat. Na této stránce najdete všechny útoky na tento model, o kterých víme, jak se jim Frontmail brání, co byste si měli nastavit sami – a otevřeně i riziko, které zůstává. Pokud vám tu něco chybí, napište na security@frontmail.dev.

  • Veřejný klíč je veřejný. Je ve zdrojovém kódu vaší stránky. Berte ho jako uživatelské jméno, ne jako heslo. Kdokoli si ho může zkopírovat a volat API ze skriptu.
  • Hlavička Origin není ověření. Prohlížeče ji vyplňují poctivě, ale skript pošle jakoukoli hodnotu. Povolené originy zabrání jiným webům, aby váš klíč používaly v prohlížečích svých návštěvníků – odhodlaného útočníka ale nezastaví.
  • Skutečně vás chrání to, co útočník změnit nemůže:
    1. šablona – útočník smí poslat jen vaše šablony a vyplnit jen jejich parametry,
    2. CAPTCHA (Turnstile) – každé odeslání ho stojí jedno vyřešení,
    3. limity – na IP adresu, klíč, organizaci, příjemce a vaše kredity.
  • Soukromý klíč je tajemství. Patří jen na váš server. Obchází povolené originy i CAPTCHA a umí číst historii zpráv.

Zbytek stránky z těchto čtyř bodů vychází.

1. Phishing z vaší domény (nejdůležitější)

Sekce “1. Phishing z vaší domény (nejdůležitější)”

Útok. Šablona bere příjemce z parametrů – obnovení hesla, notifikace, potvrzení odběru. Útočník si zkopíruje váš veřejný klíč, pošle šablonu oběti a do reset_url vyplní svůj web. E-mail přijde z vaší domény, projde kontrolou SPF i DKIM, vypadá přesně jako váš a vede k útočníkovi.

Co dělá Frontmail. Požadavek s veřejným klíčem na šablonu s dynamickým příjemcem dostane zamčený obsah:

  • CAPTCHA je povinná (dynamic_recipient_requires_captcha),
  • každý odkaz musí vést na vaše povolené domény – kontrolují se odkazy v atributech, CSS, prostém textu (i holé evil.com/login, ze kterého e-mailový klient udělá odkaz) a předmětu, včetně triků jako https://vy.cz@evil.com, zpětná lomítka, podobně vypadající domény v Unicode nebo zakódované znaky (link_not_allowed),
  • adresa odesílatele, jméno odesílatele a Reply-To nesmí pocházet z parametrů (dynamic_field_not_allowed),
  • žádné HTML parametry, textové parametry nejvýš 500 znaků,
  • každý příjemce dostane od vaší organizace nejvýš 5 takových e-mailů denně (nastavitelné).

Vše se kontroluje dřív, než se spotřebuje kredit. Automatické odpovědi jsou zamčené stejně.

Co byste měli udělat vy. Pokud vaše odkazy vedou i jinam než na doménu vašeho webu, vyplňte Zabezpečení → Povolené domény odkazů. Nastavte si vlastní Turnstile klíče. Šablony, které posílá jen váš server (potvrzení objednávky, obnovení hesla vygenerované na backendu), posílejte soukromým klíčem.

Zbývající riziko. Útočník může cizímu člověku pořád poslat váš legitimní e-mail – třeba „Potvrďte odběr newsletteru“ s odkazem na váš web. Není v něm nic, co by útočník ovládal, takže nejde o phishing, ale může obtěžovat. Limit na příjemce a CAPTCHA to udrží v malém. Prostý text bez odkazu (třeba „zavolejte na toto číslo“) v textovém parametru jde do 500 znaků pořád vložit – dynamické textové parametry proto omezte na to, co e-mail opravdu potřebuje.

2. Spam do vaší vlastní schránky

Sekce “2. Spam do vaší vlastní schránky”

Útok. Skript zaplaví šablonu kontaktního formuláře nesmysly.

Co dělá Frontmail. Limit na IP adresu (výchozí 10 požadavků / 60 s, IPv6 se počítá po sítích /64), limity na klíč a organizaci, detekce anomálií, kontrola headless prohlížečů a blokovaných hodnot na serveru, volitelná CAPTCHA pro každou šablonu.

Co byste měli udělat vy. U veřejných formulářů zapněte Vyžadovat CAPTCHA. Známé spamové hodnoty přidejte do seznamu blokovaných.

Zbývající riziko. Bez CAPTCHA projde trpělivý útočník, který střídá IP adresy. S CAPTCHA musí za každý e-mail zaplatit službě, která ji řeší.

3. Volání API ze skriptu nebo z falešné „aplikace“

Sekce “3. Volání API ze skriptu nebo z falešné „aplikace“”

Útok. Útočník posílá požadavky mimo prohlížeč, s podvrženým Origin nebo úplně bez něj.

Co dělá Frontmail. Požadavky bez Origin a Referer (typické pro skripty) jsou odmítnuté, pokud nemáte zapnuté Povolit mobilní aplikace – i když je seznam povolených originů prázdný. Sdílenou mobilní CAPTCHA Frontmailu používají jen organizace s touto volbou; všechny ostatní musí projít vaším vlastním Turnstile widgetem a jeho token musí pocházet z domény, ze které požadavek přišel.

Co byste měli udělat vy. Povolit mobilní aplikace nechte vypnuté, pokud nemáte nativní aplikaci. Kód na serveru má používat soukromý klíč.

Zbývající riziko. Podvržený Origin seznamem povolených originů pořád projde; zastaví ho CAPTCHA a limity (viz bod 2).

4. Vyčerpání vašich kreditů nebo karty

Sekce “4. Vyčerpání vašich kreditů nebo karty”

Útok. Útočník s vaším veřejným klíčem posílá tolik e-mailů, kolik limity dovolí, aby spálil vaši měsíční kvótu – a kdyby mohl, i přečerpání a automatické dobití.

Co dělá Frontmail.

  • Provoz s veřejným klíčem nečerpá přečerpání a nespouští automatické dobití, pokud to výslovně nepovolíte (Fakturace → Útrata za e-maily s veřejným klíčem).
  • Fronta pozdržených zpráv má strop; nad ním se požadavky odmítají místo řazení do fronty, takže smetí nespotřebuje kredity, které si koupíte později.
  • Automatické dobití má měsíční limit počtu i útraty.

Co byste měli udělat vy. Nechte výchozí nastavení, používejte CAPTCHA, sledujte e-maily o anomáliích.

Zbývající riziko. Vaši běžnou kvótu a balíčky kreditů může pořád spotřebovat smetí, které projde přes CAPTCHA a limity. Stojí vás to kredity, ne peníze navíc.

5. Zablokování formuláře skutečným návštěvníkům

Sekce “5. Zablokování formuláře skutečným návštěvníkům”

Útok. Levná záplava neplatných požadavků vyčerpá limity vaší organizace a skuteční návštěvníci dostanou 429.

Co dělá Frontmail. Limity organizace a detekce anomálií počítají jen požadavky, které prošly kontrolou šablony a CAPTCHA; do té doby platí jen limit na IP adresu a štědrá ochrana proti záplavě.

Zbývající riziko. Velký distribuovaný útok může provoz zpomalit; většinu z něj zachytí firewall na okraji sítě (WAF).

Útok. Volat servery Frontmailu přímo místo přes CDN, obejít webový aplikační firewall a podvrhnout IP adresu klienta.

Co dělá Frontmail. Servery přijímají jen požadavky, které prošly naším CDN, a věří jen IP adrese klienta, kterou CDN předá. Nemusíte nic nastavovat.

7. Uniklý soukromý klíč

Sekce “7. Uniklý soukromý klíč”

Útok. Soukromý klíč skončí v kódu pro prohlížeč (často po přechodu z EmailJS, kde je accessToken soukromý klíč) a někdo si ho zkopíruje.

Co dělá Frontmail. SDK pro prohlížeč se soukromým klíčem odmítne fungovat (private_key_in_browser) a API odmítne požadavky se soukromým klíčem z webové stránky, pokud nemáte zapnuté Povolit privátní klíč v prohlížeči. Soukromé klíče ukládáme jen jako hash.

Co byste měli udělat vy. Nikdy nedávejte sk_… do frontendového kódu ani do proměnných VITE_ / NEXT_PUBLIC_. Pokud unikl, okamžitě ho vyměňte.

Zbývající riziko. Kdo má váš soukromý klíč, může posílat bez CAPTCHA a číst historii zpráv (včetně odeslaných formulářů). Chraňte ho jako heslo.

8. Nebezpečné přílohy

Sekce “8. Nebezpečné přílohy”

Útok. Poslat vám nebo dynamickému příjemci malware v příloze.

Co dělá Frontmail. Přílohy z prohlížeče jsou vypnuté, dokud je šablona nepovolí. Spustitelné soubory, skripty, HTML/SVG, obrazy disků, dokumenty Office s makry a podobné typy jsou blokované, i když se schovávají za triky jako faktura.pdf.exe., znaky obracející směr textu nebo neviditelné znaky. Nahrávání s veřejným klíčem má denní limit objemu.

Zbývající riziko. I běžné dokumenty (PDF, DOCX) mohou obsahovat škodlivý obsah; poslední obranou je antivir vašeho e-mailového klienta.

9. Vložení HTML nebo skriptu do e-mailu

Sekce “9. Vložení HTML nebo skriptu do e-mailu”

Útok. Vložit do parametru <script>, sledovací pixel nebo falešný formulář.

Co dělá Frontmail. Parametry se vždy escapují (i v {{{ }}}), html parametry prochází sanitizací podle povoleného seznamu a nemohou uniknout z atributů, nebezpečné URL se zneškodní, z hlaviček se odstraňují konce řádků (žádné vkládání hlaviček) a klíče znečišťující prototyp se zahazují.

10. Obtěžování jednoho člověka (mail bombing)

Sekce “10. Obtěžování jednoho člověka (mail bombing)”

Útok. Šablonou s dynamickým příjemcem poslat na jednu adresu spoustu e-mailů.

Co dělá Frontmail. Denní limit na příjemce (výchozí 5), společný s automatickými odpověďmi; seznam potlačených adres pro adresy, které vrátily e-mail nebo si stěžovaly.

11. Převzetí vašeho účtu v dashboardu

Sekce “11. Převzetí vašeho účtu v dashboardu”

Útok. Hádání hesla, ukradená session, ukradená schránka.

Co dělá Frontmail. Limity přihlašování, dvoufázové ověření vynucené při každém způsobu přihlášení, odkazy na obnovení hesla platné jen jednou a odhlašující všechna zařízení, změna e-mailu potvrzovaná ze staré adresy, upozornění na přihlášení z nového zařízení, role s nejmenšími potřebnými právy a auditní log.

Co byste měli udělat vy. Zapněte si 2FA a kolegům dávejte nejmenší roli, která stačí.

12. Krádež odeslaných formulářů

Sekce “12. Krádež odeslaných formulářů”

Útok. Číst historii zpráv nebo soubory někoho jiného.

Co dělá Frontmail. Historii přečte jen soukromý klíč nebo členové vaší organizace; každé vyhledání je omezené na vaši organizaci, včetně souborů přiložených k šablonám.

13. Podvržené události o doručení

Sekce “13. Podvržené události o doručení”

Útok. Poslat falešné události „vráceno“ nebo „stížnost“ a dostat vaše zákazníky na seznam potlačených adres.

Co dělá Frontmail. Webhooky providerů se ověřují podpisem, pokud ho provider podporuje, a vždy tajným tokenem v URL; událost ovlivní jen skutečného příjemce dané zprávy.

Co byste měli udělat vy. Kde to provider nabízí, nastavte podpisový klíč.

Útok. Škodlivý kód ve skriptu, který načítá váš web.

Co dělá Frontmail. Vydání se sestavují bez tajných klíčů, publikují se s ověřitelným původem (provenance) a akce v CI jsou připnuté na přesné verze.

Co byste měli udělat vy. Načítejte SDK z URL s pevnou verzí a atributem integrity (viz SDK pro prohlížeč), nebo použijte balíček z npm.

15. Frontmail v rukou zločinců

Sekce “15. Frontmail v rukou zločinců”

Útok. Phishingový web používá vlastní účet ve Frontmailu, aby si posílal ukradená hesla – to se stává každé službě tohoto typu.

Co dělá Frontmail. Ověřený e-mail vlastníka, sledování neobvyklého provozu, rychlé pozastavení nahlášených účtů. Zneužití hlaste na abuse@frontmail.dev.

Co zůstává na vás – kontrolní seznam

Sekce “Co zůstává na vás – kontrolní seznam”
  • Vyplňte Povolené originy svými doménami.
  • Přidejte vlastní Turnstile klíče a u veřejných formulářů vyžadujte CAPTCHA.
  • Dynamického příjemce používejte jen tam, kde ho potřebujete; vyplňte Povolené domény odkazů.
  • Povolit mobilní aplikace a Povolit privátní klíč v prohlížeči nechte vypnuté, pokud je nepotřebujete.
  • Soukromý klíč jen na serveru; při pochybnostech ho vyměňte.
  • Přečerpání a automatické dobití pro provoz s veřejným klíčem nechte vypnuté (výchozí stav).
  • Zapněte 2FA všem v týmu.
  • Načítejte SDK z pevné verze s atributem integrity.