E-mail versturen namens uw domein
CWE-290CWE-346OWASP A05:2021Bijgewerkt 3 september 20265 min leestijd
Ontbreken SPF, DKIM en DMARC of staan ze te soepel ingesteld, dan kan iedereen e-mail versturen die van uw domein afkomstig lijkt. Ontvangende servers hebben dan geen manier om de vervalsing vast te stellen. Het gevolg is phishing die uw naam draagt, gericht op uw klanten en uw eigen medewerkers.
Het e-mailprotocol is ontworpen in een tijd waarin de aangesloten partijen elkaar vertrouwden. Een afzenderadres invullen is daardoor niet moeilijker dan een naam op een envelop schrijven, er wordt niets gecontroleerd tenzij u dat zelf regelt. Hieronder leest u met welke drie records u dat regelt, in welke volgorde u ze invoert en waarom een half ingevulde configuratie weinig oplevert.
Wat is e-mailspoofing?
E-mailspoofing is het versturen van e-mail met een vervalst afzenderadres. Een aanvaller die post verstuurt met facturatie@uwbedrijf.nl als afzender, hoeft daarvoor geen toegang tot uw systemen te hebben; hij vult die waarde eenvoudigweg in bij het versturen.
Of dat lukt, hangt volledig af van wat er over uw domein in het DNS staat. Er zijn drie records die samen het antwoord geven. SPF vermeldt welke servers namens uw domein mogen versturen. DKIM voegt aan uitgaande post een digitale handtekening toe, zodat de ontvanger kan verifiëren dat het bericht van u komt en onderweg niet is gewijzigd. DMARC verbindt die twee met het adres dat de ontvanger daadwerkelijk ziet, en vertelt erbij wat er moet gebeuren als de controle faalt.
Zonder die records staat de ontvangende server voor een onmogelijke vraag. Hij ziet post die beweert van u te komen en heeft geen enkele manier om dat te toetsen. Bij twijfel levert hij af, want post weigeren die wél echt is, is voor hem het grotere probleem.
Hoe stelt u SPF, DKIM en DMARC in?
Kwetsbaar:
uwbedrijf.nl. TXT "v=spf1 include:_spf.leverancier.nl ~all"
Dit ziet er verzorgd uit en is toch onvoldoende. De tilde in ~all betekent softfail: de ontvanger mag de post accepteren en hooguit markeren, en in de praktijk komt hij gewoon aan. Belangrijker is wat ontbreekt. Er is geen DKIM-handtekening en er is geen DMARC-record, waardoor niemand weet wat er bij een mislukte controle moet gebeuren.
En er is een subtiliteit die de SPF-controle grotendeels omzeilbaar maakt: SPF kijkt naar het adres in de envelop, niet naar het adres dat de ontvanger in zijn postvak ziet staan. Een aanvaller kan een envelopadres van zijn eigen domein gebruiken, waarmee SPF keurig slaagt, en tegelijk in het zichtbare From-veld uw adres zetten. Zonder DMARC wordt dat verschil nergens gecontroleerd.
Veilig:
; Welke servers mogen versturen; hardfail voor de rest
uwbedrijf.nl. TXT "v=spf1 include:_spf.leverancier.nl -all"
; Publieke sleutel voor de handtekening
sel1._domainkey.uwbedrijf.nl. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
; Koppelt beide aan het zichtbare afzenderadres
_dmarc.uwbedrijf.nl. TXT "v=DMARC1; p=reject; adkim=s; aspf=s;
rua=mailto:dmarc@uwbedrijf.nl; pct=100"
Nu sluit het geheel. -all instrueert ontvangers om post van andere servers te weigeren. De DKIM-handtekening maakt manipulatie onderweg zichtbaar. Daarnaast DMARC met p=reject zegt wat er moet gebeuren als het misgaat, terwijl adkim=s en aspf=s afdwingen dat het gecontroleerde domein exact overeenkomt met het zichtbare afzenderadres, precies het gat dat SPF alleen openlaat. Het rua-adres levert u periodieke overzichten van wie er namens u verstuurt.
De volgorde van invoeren is daarbij bepalend. Begin met p=none en rapportage, verzamel enkele weken gegevens, herken alle legitieme verzendende partijen (nieuwsbrieven, facturatiesystemen, wervingsplatforms, uw boekhoudpakket) en scherp pas daarna aan via quarantine naar reject.
include bij is gekomen, dan is het record ongeldig en vervalt de bescherming volledig. Controleer dat aantal na elke wijziging.Wat is de impact van e-mailspoofing?
De ernst wordt beoordeeld als middelzwaar tot hoog, waarbij de context van uw organisatie sterk meeweegt. De kwetsbaarheid zit niet in uw applicatie, maar in het vertrouwen dat aan uw naam is verbonden.
Het meest voorkomende misbruik is phishing richting uw eigen klanten. Een e-mail die werkelijk van uw domein lijkt te komen, met uw huisstijl en een geloofwaardige aanleiding, haalt aanzienlijk hogere reactiepercentages dan een bericht van een vreemd adres. De schade valt bij uw klanten, maar de reputatieschade komt bij u terecht.
Daarnaast is er de interne variant, die het meest kost. Een bericht dat van de directie of de financiële administratie afkomstig lijkt en om een spoedbetaling of een wijziging van rekeningnummer vraagt, is de kern van wat CEO-fraude wordt genoemd. Medewerkers zijn getraind om te letten op afwijkende afzenderadressen, maar hier klopt het adres.
Er is ook een indirect gevolg. Wordt uw domein op grote schaal misbruikt voor het versturen van ongewenste post, dan kan de reputatie ervan bij ontvangende partijen dalen, waardoor uw eigen legitieme e-mail slechter wordt afgeleverd.
Hoe spoor je e-mailspoofing op?
De controle begint bij het opvragen van de DNS-records voor het domein. Bestaat er een SPF-record, en eindigt het op -all of op de soepelere ~all? Is er een DMARC-record, en staat het beleid op none, quarantine of reject? Is er een DKIM-selector in gebruik, en welke sleutellengte heeft die?
Daarna volgt de praktijktoets: er wordt een bericht verstuurd met het domein als afzender vanaf een server die niet in de records staat, om te zien of het wordt afgeleverd. Verder wordt gelet op de subdomeinen, want die vallen niet automatisch onder het beleid van het hoofddomein tenzij dat expliciet is geregeld. Ook geparkeerde en ongebruikte domeinen krijgen aandacht, omdat die vaak helemaal geen records hebben en juist daarom aantrekkelijk zijn. Ten slotte wordt het aantal DNS-opzoekingen in het SPF-record geteld, omdat een overschrijding het record stilzwijgend ongeldig maakt. AssistSec neemt deze controle mee bij het in kaart brengen van uw externe aanvalsoppervlak, omdat een goed beveiligde applicatie weinig helpt tegen een aanval die via de naam van uw organisatie binnenkomt.
Hoe voorkom je e-mailspoofing?
- Publiceer een SPF-record dat alle legitieme verzendende partijen benoemt en eindig met
-all. - Onderteken uitgaande post met DKIM en gebruik een sleutel van ten minste 2048 bits.
- Publiceer een DMARC-record en werk toe naar
p=rejectmet strikte uitlijning. - Begin met
p=noneen rapportage om alle verzendende bronnen in kaart te brengen voordat u aanscherpt. - Lees de DMARC-rapportages en handel daarnaar; zonder opvolging is het record een formaliteit.
- Regel het beleid ook voor subdomeinen, expliciet via
sp=. - Zet op geparkeerde en ongebruikte domeinen een SPF-record dat niets toestaat en DMARC op
reject. - Houd het aantal DNS-opzoekingen in uw SPF-record onder de tien.
- Herzie de records wanneer u een nieuwe dienst gaat gebruiken die namens u e-mail verstuurt.
Bronnen
Veelgestelde vragen
Wat is het verschil tussen SPF, DKIM en DMARC?
SPF bepaalt welke servers namens uw domein mogen versturen. DKIM zet een digitale handtekening op de e-mail zelf, zodat wijziging onderweg opvalt. DMARC koppelt beide aan het zichtbare afzenderadres en vertelt de ontvanger wat te doen bij een mislukte controle. Alle drie zijn nodig; los van elkaar zijn ze onvolledig.
Waarom is een SPF-record met tilde niet genoeg?
Een tilde betekent softfail: de ontvanger mag de mail accepteren maar markeren. In de praktijk komt zulke post vaak gewoon aan. Een streepje betekent hardfail en is de duidelijke instructie om te weigeren. Begin met een softfail tijdens de invoering en scherp aan zodra u zeker weet dat alle verzendende bronnen bekend zijn.
Verlies ik legitieme e-mail met DMARC op reject?
Dat risico bestaat als u te snel aanscherpt. Daarom is de aangewezen route om te beginnen met een beleid van none plus rapportage. U ontvangt dan overzichten van alle partijen die namens u versturen, herkent de bronnen die u was vergeten en scherpt pas daarna aan.
Geldt dit ook voor domeinen waarmee ik niet mail?
Juist voor die domeinen. Een geparkeerd of ongebruikt domein zonder records is een aantrekkelijk middel voor phishing, omdat niemand merkt dat er post namens wordt verstuurd. Zet daar een SPF-record dat niets toestaat en een DMARC-beleid op reject.
Verwante artikelen
- KwetsbaarhedenCWE-326A02:2021Zwakke DKIM-sleutelEen DKIM-sleutel van 1024 bits of korter is met moderne middelen te breken. Lees hoe u naar 2048 bits gaat en waarom roteren erbij hoort.
- KwetsbaarhedenCWE-644A03:2021Host header injectionBouwt uw applicatie links op met de Host-header, dan bepaalt de aanvaller waar die naartoe wijzen. Lees hoe dat wachtwoordherstel kaapt.
- KwetsbaarhedenCWE-200A01:2021Information disclosureInformation disclosure uitgelegd: hoe stack traces, .git-mappen, source maps en te ruime API-responses gegevens lekken, en hoe u dat voorkomt.
- KwetsbaarhedenCWE-16A05:2021Security misconfigurationSecurity misconfiguration uitgelegd: hoe standaardwachtwoorden, debug-modi en open cloud-buckets aanvallers binnenlaten, en hoe u dit voorkomt.