Preskočiť na obsah

Model hrozieb

Frontmail vám umožňuje posielať e-maily priamo z prehliadača. Je to pohodlné, ale znamená to, že časť vašej integrácie je v kóde, ktorý si ktokoľvek môže prečítať a skopírovať. Na tejto stránke nájdete všetky útoky na tento model, o ktorých vieme, ako sa im Frontmail bráni, čo by ste si mali nastaviť sami – a otvorene aj riziko, ktoré zostáva. Ak vám tu niečo chýba, napíšte na security@frontmail.dev.

  • Verejný kľúč je verejný. Je v zdrojovom kóde vašej stránky. Berte ho ako používateľské meno, nie ako heslo. Ktokoľvek si ho môže skopírovať a volať API zo skriptu.
  • Hlavička Origin nie je overenie. Prehliadače ju vypĺňajú poctivo, ale skript pošle akúkoľvek hodnotu. Povolené domény zabránia iným webom, aby váš kľúč používali v prehliadačoch svojich návštevníkov – odhodlaného útočníka však nezastavia.
  • Skutočne vás chráni to, čo útočník zmeniť nemôže:
    1. šablóna – útočník smie poslať len vaše šablóny a vyplniť len ich parametre,
    2. CAPTCHA (Turnstile) – každé odoslanie ho stojí jedno vyriešenie,
    3. limity – na IP adresu, kľúč, organizáciu, príjemcu a vaše kredity.
  • Súkromný kľúč je tajomstvo. Patrí len na váš server. Obchádza povolené domény aj CAPTCHA a dokáže čítať históriu správ.

Zvyšok stránky z týchto štyroch bodov vychádza.

1. Phishing z vašej domény (najdôležitejší)

Section titled “1. Phishing z vašej domény (najdôležitejší)”

Útok. Šablóna berie príjemcu z parametrov – obnovenie hesla, notifikácia, potvrdenie odberu. Útočník si skopíruje váš verejný kľúč, pošle šablónu obeti a do reset_url vyplní svoj web. E-mail príde z vašej domény, prejde kontrolou SPF aj DKIM, vyzerá presne ako váš a vedie k útočníkovi.

Čo robí Frontmail. Požiadavka s verejným kľúčom na šablónu s dynamickým príjemcom dostane uzamknutý obsah:

  • CAPTCHA je povinná (dynamic_recipient_requires_captcha),
  • každý odkaz musí viesť na vaše povolené domény – kontrolujú sa odkazy v atribútoch, CSS, obyčajnom texte (aj holé evil.com/login, z ktorého e-mailový klient urobí odkaz) a predmete, vrátane trikov ako https://vy.sk@evil.com, spätné lomky, podobne vyzerajúce domény v Unicode alebo zakódované znaky (link_not_allowed),
  • adresa odosielateľa, meno odosielateľa a Reply-To nesmú pochádzať z parametrov (dynamic_field_not_allowed),
  • žiadne HTML parametre, textové parametre najviac 500 znakov,
  • každý príjemca dostane od vašej organizácie najviac 5 takých e-mailov denne (nastaviteľné).

Všetko sa kontroluje skôr, ako sa spotrebuje kredit. Automatické odpovede sú uzamknuté rovnako.

Čo by ste mali urobiť vy. Ak vaše odkazy vedú aj inam než na doménu vášho webu, vyplňte Zabezpečenie → Povolené domény odkazov. Nastavte si vlastné kľúče Turnstile. Šablóny, ktoré posiela len váš server (potvrdenie objednávky, obnovenie hesla vygenerované na backende), posielajte súkromným kľúčom.

Zostávajúce riziko. Útočník môže cudziemu človeku stále poslať váš legitímny e-mail – napríklad „Potvrďte odber newslettera“ s odkazom na váš web. Nie je v ňom nič, čo by útočník ovládal, takže nejde o phishing, ale môže obťažovať. Limit na príjemcu a CAPTCHA to udržia v malom. Obyčajný text bez odkazu (napríklad „zavolajte na toto číslo“) sa do textového parametra stále dá vložiť do 500 znakov – dynamické textové parametre preto obmedzte na to, čo e-mail naozaj potrebuje.

Útok. Skript zaplaví šablónu kontaktného formulára nezmyslami.

Čo robí Frontmail. Limit na IP adresu (predvolene 10 požiadaviek / 60 s, IPv6 sa počíta po sieťach /64), limity na kľúč a organizáciu, detekcia anomálií, kontrola headless prehliadačov a blokovaných hodnôt na serveri, voliteľná CAPTCHA pre každú šablónu.

Čo by ste mali urobiť vy. Pri verejných formulároch zapnite Vyžadovať CAPTCHA. Známe spamové hodnoty pridajte do zoznamu blokovaných hodnôt.

Zostávajúce riziko. Bez CAPTCHA prejde trpezlivý útočník, ktorý strieda IP adresy. S CAPTCHA musí za každý e-mail zaplatiť službe, ktorá ju rieši.

3. Volanie API zo skriptu alebo z falošnej „aplikácie“

Section titled “3. Volanie API zo skriptu alebo z falošnej „aplikácie“”

Útok. Útočník posiela požiadavky mimo prehliadača, s podvrhnutým Origin alebo úplne bez neho.

Čo robí Frontmail. Požiadavky bez Origin a Referer (typické pre skripty) sa odmietnu, ak nemáte zapnuté Povoliť mobilné aplikácie – aj keď je zoznam povolených domén prázdny. Zdieľanú mobilnú CAPTCHA Frontmailu používajú len organizácie s touto voľbou; všetky ostatné musia prejsť vaším vlastným widgetom Turnstile a jeho token musí pochádzať z domény, z ktorej požiadavka prišla.

Čo by ste mali urobiť vy. Povoliť mobilné aplikácie nechajte vypnuté, ak nemáte natívnu aplikáciu. Kód na serveri má používať súkromný kľúč.

Zostávajúce riziko. Podvrhnutý Origin zoznamom povolených domén stále prejde; zastaví ho CAPTCHA a limity (pozrite bod 2).

4. Vyčerpanie vašich kreditov alebo karty

Section titled “4. Vyčerpanie vašich kreditov alebo karty”

Útok. Útočník s vaším verejným kľúčom posiela toľko e-mailov, koľko limity dovolia, aby spálil vašu mesačnú kvótu – a keby mohol, aj prečerpanie a automatické dobíjanie.

Čo robí Frontmail.

  • Prevádzka s verejným kľúčom nečerpá prečerpanie a nespúšťa automatické dobíjanie, pokiaľ to výslovne nepovolíte (Fakturácia → Výdavky z prevádzky s verejným kľúčom).
  • Fronta pozdržaných e-mailov má strop; nad ním sa požiadavky odmietajú namiesto zaradenia do fronty, takže smeti nespotrebujú kredity, ktoré si kúpite neskôr.
  • Automatické dobíjanie má mesačný limit počtu aj výdavkov.

Čo by ste mali urobiť vy. Nechajte predvolené nastavenia, používajte CAPTCHA, sledujte e-maily o anomáliách.

Zostávajúce riziko. Vašu bežnú kvótu a kreditové balíky môžu stále spotrebovať smeti, ktoré prejdú cez CAPTCHA a limity. Stojí vás to kredity, nie peniaze navyše.

5. Zablokovanie formulára skutočným návštevníkom

Section titled “5. Zablokovanie formulára skutočným návštevníkom”

Útok. Lacná záplava neplatných požiadaviek vyčerpá limity vašej organizácie a skutoční návštevníci dostanú 429.

Čo robí Frontmail. Limity organizácie a detekcia anomálií počítajú len požiadavky, ktoré prešli kontrolou šablóny a CAPTCHA; dovtedy platí len limit na IP adresu a veľkorysá ochrana proti záplave.

Zostávajúce riziko. Veľký distribuovaný útok môže prevádzku spomaliť; väčšinu z neho zachytí firewall na okraji siete (WAF).

Útok. Volať servery Frontmailu priamo namiesto cez CDN, obísť webový aplikačný firewall a podvrhnúť IP adresu klienta.

Čo robí Frontmail. Servery prijímajú len požiadavky, ktoré prešli naším CDN, a veria len IP adrese klienta, ktorú CDN odovzdá. Nemusíte nič nastavovať.

Útok. Súkromný kľúč skončí v kóde pre prehliadač (často po prechode z EmailJS, kde je accessToken súkromný kľúč) a niekto si ho skopíruje.

Čo robí Frontmail. SDK pre prehliadač so súkromným kľúčom odmietnu fungovať (private_key_in_browser) a API odmietne požiadavky so súkromným kľúčom z webovej stránky, ak nemáte zapnuté Povoliť súkromné kľúče v prehliadačoch. Súkromné kľúče ukladáme len ako hash.

Čo by ste mali urobiť vy. Nikdy nedávajte sk_… do frontendového kódu ani do premenných VITE_ / NEXT_PUBLIC_. Ak unikol, okamžite ho vymeňte.

Zostávajúce riziko. Kto má váš súkromný kľúč, môže posielať bez CAPTCHA a čítať históriu správ (vrátane odoslaných formulárov). Chráňte ho ako heslo.

Útok. Poslať vám alebo dynamickému príjemcovi malvér v prílohe.

Čo robí Frontmail. Prílohy z prehliadača sú vypnuté, kým ich šablóna nepovolí. Spustiteľné súbory, skripty, HTML/SVG, obrazy diskov, dokumenty Office s makrami a podobné typy sú blokované, aj keď sa skrývajú za trikmi ako faktura.pdf.exe., znaky obracajúce smer textu alebo neviditeľné znaky. Nahrávanie s verejným kľúčom má denný limit objemu.

Zostávajúce riziko. Aj bežné dokumenty (PDF, DOCX) môžu obsahovať škodlivý obsah; poslednou obranou je antivírus vášho e-mailového klienta.

9. Vloženie HTML alebo skriptu do e-mailu

Section titled “9. Vloženie HTML alebo skriptu do e-mailu”

Útok. Vložiť do parametra <script>, sledovací pixel alebo falošný formulár.

Čo robí Frontmail. Parametre sa vždy escapujú (aj v {{{ }}}), html parametre prechádzajú sanitizáciou podľa zoznamu povolených prvkov a nemôžu uniknúť z atribútov, nebezpečné URL sa zneškodnia, z hlavičiek sa odstraňujú konce riadkov (žiadne vkladanie hlavičiek) a kľúče znečisťujúce prototyp sa zahadzujú.

10. Obťažovanie jedného človeka (mail bombing)

Section titled “10. Obťažovanie jedného človeka (mail bombing)”

Útok. Šablónou s dynamickým príjemcom poslať na jednu adresu množstvo e-mailov.

Čo robí Frontmail. Denný limit na príjemcu (predvolene 5), spoločný s automatickými odpoveďami; zoznam blokovaných adries pre adresy, z ktorých sa e-mail vrátil alebo ktorých majitelia sa sťažovali.

Útok. Hádanie hesla, ukradnutá relácia, ukradnutá schránka.

Čo robí Frontmail. Limity prihlasovania, dvojstupňové overenie vynútené pri každom spôsobe prihlásenia, odkazy na obnovenie hesla platné len raz a odhlasujúce všetky zariadenia, zmena e-mailu potvrdzovaná zo starej adresy, upozornenia na prihlásenie z nového zariadenia, roly s najmenšími potrebnými právami a auditný záznam.

Čo by ste mali urobiť vy. Zapnite si 2FA a kolegom dávajte najmenšiu rolu, ktorá stačí.

Útok. Čítať históriu správ alebo súbory niekoho iného.

Čo robí Frontmail. Históriu prečíta len súkromný kľúč alebo členovia vašej organizácie; každé vyhľadávanie je obmedzené na vašu organizáciu, vrátane súborov priložených k šablónam.

Útok. Poslať falošné udalosti „nedoručené“ alebo „sťažnosť“ a dostať vašich zákazníkov na zoznam blokovaných adries.

Čo robí Frontmail. Webhooky poskytovateľov sa overujú podpisom, ak ho poskytovateľ podporuje, a vždy tajným tokenom v URL; udalosť ovplyvní len skutočného príjemcu danej správy.

Čo by ste mali urobiť vy. Kde to poskytovateľ ponúka, nastavte podpisový kľúč.

Útok. Škodlivý kód v skripte, ktorý načítava váš web.

Čo robí Frontmail. Vydania sa zostavujú bez tajných kľúčov, publikujú sa s overiteľným pôvodom (provenance) a akcie v CI sú pripnuté na presné verzie.

Čo by ste mali urobiť vy. Načítavajte SDK z URL s pevnou verziou a atribútom integrity (pozrite SDK pre prehliadač) alebo použite balík z npm.

Útok. Phishingový web používa vlastný účet vo Frontmaile, aby si posielal ukradnuté heslá – to sa stáva každej službe tohto typu.

Čo robí Frontmail. Overený e-mail vlastníka, sledovanie nezvyčajnej prevádzky, rýchle pozastavenie nahlásených účtov. Zneužitie hláste na abuse@frontmail.dev.

Čo zostáva na vás – kontrolný zoznam

Section titled “Čo zostáva na vás – kontrolný zoznam”
  • Vyplňte Povolené weby svojimi doménami.
  • Pridajte vlastné kľúče Turnstile a pri verejných formulároch vyžadujte CAPTCHA.
  • Dynamického príjemcu používajte len tam, kde ho potrebujete; vyplňte Povolené domény odkazov.
  • Povoliť mobilné aplikácie a Povoliť súkromné kľúče v prehliadačoch nechajte vypnuté, ak ich nepotrebujete.
  • Súkromný kľúč len na serveri; pri pochybnostiach ho vymeňte.
  • Prečerpanie a automatické dobíjanie pre prevádzku s verejným kľúčom nechajte vypnuté (predvolený stav).
  • Zapnite 2FA všetkým v tíme.
  • Načítavajte SDK z pevnej verzie s atribútom integrity.