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.
Základní model
Sekce “Základní model”- 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
Originnení 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:
- šablona – útočník smí poslat jen vaše šablony a vyplnit jen jejich parametry,
- CAPTCHA (Turnstile) – každé odeslání ho stojí jedno vyřešení,
- 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í.
Útoky a obrana
Sekce “Útoky a obrana”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ů jakohttps://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).
6. Obejití firewallu
Sekce “6. Obejití firewallu”Ú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íč.
14. Napadené SDK
Sekce “14. Napadené SDK”Ú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.