Gemiddeld · 4.4 Node.js & npm GHSA-85x2-q946-cp5h GHSA-m943-m63m-w62w GHSA-8c8m-p3m8-cjg8
Drie fouten in Nodemailer's adresparser laten aanvallers e-mail omleiden naar domeinen die hun eigen validatie juist zou moeten blokkeren
Drie samenhangende kwetsbaarheden in de addressparser van Nodemailer (GHSA-85x2-q946-cp5h, GHSA-m943-m63m-w62w, GHSA-8c8m-p3m8-cjg8) zorgen ervoor dat een speciaal geprepareerd maar volgens RFC 5322 geldig adres de validatie van een applicatie passeert, terwijl Nodemailer de e-mail in werkelijkheid naar een ander, door de aanvaller gekozen domein stuurt. Treft Nodemailer 3.0.0 t/m 10.1.3; verholpen in 10.1.4.
AI-samenvatting
Drie gerelateerde beveiligingsadviezen beschrijven hoe de interne adresparser van Nodemailer, addressparser, een e-mailadres anders kan interpreteren dan een standaardconforme RFC 5322-parser dat zou doen. In elk geval wordt een speciaal opgebouwde adrestekst die een validatie door een standaardconforme parser doorstaat, door Nodemailer gelezen als een verwijzing naar een ander, door de aanvaller gecontroleerd domein of postbus. Alle drie de problemen treffen Nodemailer-versies 3.0.0 tot en met 10.1.3 en zijn verholpen in versie 10.1.4. Ze treffen ook gebruikers van de losse addressparser-module, zoals mailparser, bij het verwerken van inkomende e-mailheaders.
Wat is er gebeurd
Beveiligingsonderzoekers hebben drie afzonderlijke parserfouten gevonden in het addressparser-onderdeel van Nodemailer, die allemaal dezelfde oorzaak hebben: addressparser stopt met lezen bij het eerste voorkomen van een structureel teken (een sluithaakje '>', een groep-afsluitende puntkomma ';', of een comment-afsluitend haakje ')'), zelfs wanneer dat teken binnen een aanhalingsteken-string, een comment, of een geneste comment staat. Een standaardconforme RFC 5322-parser houdt correct bij of zulke tekens zich binnen aanhalingstekens of geneste inhoud bevinden en negeert ze daar. GHSA-85x2-q946-cp5h betreft het parsen van hoekadressen: een '>' binnen een geciteerd local-part deel beëindigt het adres te vroeg, waardoor het domein verkeerd wordt gelezen. GHSA-m943-m63m-w62w betreft adresgroepen: een ';' binnen een geciteerde weergavenaam of comment beëindigt de groep te vroeg, waardoor weergavetekst een actief ontvangeradres wordt. GHSA-8c8m-p3m8-cjg8 betreft geneste comments: een genest sluithaakje beëindigt de buitenste comment te vroeg, waardoor tekst die een comment had moeten zijn, als ontvangeradres vrijkomt.
Technische oorzaak
In alle drie de gevallen ontbreekt bij addressparser correcte statusbewaking voor aanhalingsteken-strings, comments en geneste comments tijdens het zoeken naar structurele scheidingstekens. De parser behandelt het eerste voorkomen van een scheidingsteken als betekenisvol, ongeacht de context, terwijl RFC 5322 vereist dat tekens binnen aanhalingstekens of comments (ook geneste) als letterlijke tekst worden behandeld, niet als syntax. Omdat de verkeerd geïnterpreteerde waarden nog altijd syntactisch geldige RFC 5322-adressen zijn, accepteren parsers die de standaard correct implementeren (de adviezen noemen als voorbeeld Python's email._header_value_parser.get_address_list) ze zonder enige melding van een gebrek, terwijl Nodemailer uit dezelfde invoer een ander adres of ontvanger afleidt. De oplossingen voegen expliciete bewaking toe van de status van aanhalingsteken-strings, comments en domain-literals, zodat structurele tekens alleen buiten die status worden gehonoreerd, en er wordt bijgehouden hoe diep comments genest zijn, zodat alleen het buitenste sluithaakje een comment beëindigt.
Waarom dit belangrijk is
Applicaties valideren door gebruikers opgegeven ontvanger- of afzenderadressen vaak met een aparte, standaardconforme parser of een domein-allowlist voordat de waarde aan Nodemailer wordt doorgegeven om te verzenden. Omdat de geprepareerde adressen in deze adviezen geldig zijn volgens RFC 5322, keurt zo'n validatie ze goed. Nodemailer interpreteert dezelfde tekenreeks vervolgens anders en verstuurt het bericht, of bouwt de uitgaande envelop (RCPT TO) op, met een domein of postbus die de header van de applicatie niet bedoelde en die de validatiestap niet heeft opgemerkt. Hierdoor kan een aanvaller een applicatie e-mail laten afleveren — mogelijk met gevoelige inhoud zoals uitnodigingen, meldingen of wachtwoordherstelinformatie — aan een domein of adres van zijn keuze, waarmee de allowlist voor ontvangers van de applicatie wordt omzeild. Aan de inkomende kant kan de losse addressparser-module, zoals gebruikt door mailparser om binnenkomende e-mail te lezen, een andere afzender of ontvanger rapporteren dan een conforme parser uit dezelfde header leest, wat een discrepantie oplevert die bruikbaar is voor afzenderspoofing of misleiding op weergaveniveau.
Wie wordt getroffen
Elke applicatie die door gebruikers beïnvloede e-mailadressen (ontvangerslijsten, afzenderadressen of adresvelden opgebouwd uit gebruikersinvoer) doorgeeft aan Nodemailer voor uitgaande e-mail is getroffen, met name applicaties die domein-allowlists of aparte RFC 5322-validatie gebruiken als beveiligingsgrens. Gebruikers van de losse addressparser-module buiten Nodemailer zelf — de adviezen noemen specifiek mailparser — worden eveneens getroffen bij het verwerken van inkomende e-mailheaders, omdat dezelfde parserlogica wordt gedeeld.
Ontdekking en tijdlijn
Alle drie de problemen zijn gevonden tijdens een interne review van addressparser op 2026-10-18 en geverifieerd tegen Nodemailer-versies 3.0.0, 6.9.16 en 10.1.3. De adviezen merken op dat een van de drie problemen (het geval met geneste comments) structureel verwant is aan een eerder, apart verholpen probleem met een escaped haakje, dat is verholpen in versie 10.1.2, maar hier wordt bereikt via geneste comments in plaats van een quoted-pair. De drie adviezen zijn gepubliceerd op 2026-10-23.
Getroffen versies
Nodemailer-versies 3.0.0 tot en met 10.1.3 zijn getroffen door alle drie de problemen. Versie 10.1.4 bevat oplossingen voor alle drie. Het feitenpakket specificeert niet welke exacte tussenliggende versies tussen 3.0.0 en 10.1.3 afzonderlijk zijn getest, buiten de drie expliciet genoemde geverifieerde versies (3.0.0, 6.9.16 en 10.1.3).
Oplossingen en mitigatie
Nodemailer 10.1.4 verhelpt alle drie de problemen door correcte statusbewaking toe te voegen: aanhalingsteken-strings, comments en domain-literals worden nu bijgehouden binnen een hoekadres, zodat een sluithaakje '>' alleen buiten die status wordt gehonoreerd; aanhalingsteken-strings en comments worden bijgehouden binnen adresgroepen, zodat een puntkomma ';' alleen buiten die status wordt gehonoreerd; en de nestdiepte van comments wordt bijgehouden, zodat alleen het buitenste sluithaakje een comment beëindigt. Applicaties en bibliotheken (waaronder mailparser, dat dezelfde onderliggende parserlogica deelt) die afhankelijk zijn van de adresparsing van Nodemailer, dienen te updaten naar 10.1.4 of nieuwer.
Aanbevolen actie
Update Nodemailer zo snel mogelijk naar versie 10.1.4 of nieuwer. Als uw applicatie domein-allowlists voor ontvangers of andere adresgebaseerde toegangscontroles afdwingt met een aparte validatiebibliotheek, controleer dan na de upgrade opnieuw of die validatielogica overeenkomt met het daadwerkelijke parsegedrag van Nodemailer, aangezien een verschillende interpretatie van hetzelfde adres door beide de kern van dit type probleem is. Als u mailparser of een andere gebruiker van de losse addressparser-module inzet om inkomende e-mail te verwerken, controleer dan of ook deze de bijbehorende fix heeft ontvangen, aangezien dezelfde onderliggende parserlogica wordt getroffen.
PatchBriefing-score
4.4 / 10 · Gemiddeld
Officiële CVSS: 6.5
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N
Waarom deze score
Elk van de drie adviezen heeft een CVSS-basisscore van 6,5 (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N), wat duidt op een via het netwerk uitbuitbaar probleem zonder vereiste rechten en zonder gebruikersinteractie, met een hoge impact op vertrouwelijkheid (e-mailinhoud die bij een onbedoelde ontvanger terechtkomt), lage impact op integriteit en geen impact op beschikbaarheid. De aanvalscomplexiteit is als hoog beoordeeld omdat de aanvaller afhankelijk is van specifiek applicatiegedrag (een geprepareerd maar syntactisch geldig adres dat na validatie aan Nodemailer wordt doorgegeven). De berekende PatchBriefing-score van 4,4 weerspiegelt deze basisernst plus bescheiden toevoegingen vanwege het ongeauthenticeerde, externe karakter van het probleem en het ontbreken van vereiste gebruikersinteractie. Er is geen bewijs van actieve misbruik in het wild of een publiek exploit, en er is een oplossing beschikbaar, waardoor de totaalscore gematigd blijft in plaats van kritiek.
Getroffen versies
- nodemailer >= 3.0.0, < 10.1.4
- kwetsbaar
- nodemailer ≥ 3.0.0 < 10.1.4
- kwetsbaar
- ≥ 10.1.4
- gepatcht
- nodemailer >= 3.0.0, < 10.1.4
- kwetsbaar
- nodemailer ≥ 3.0.0 < 10.1.4
- kwetsbaar
- ≥ 10.1.4
- gepatcht
- nodemailer >= 3.0.0, < 10.1.4
- kwetsbaar
- nodemailer ≥ 3.0.0 < 10.1.4
- kwetsbaar
- ≥ 10.1.4
- gepatcht
Gemelde oplossingen
Nodemailer 10.1.4 verhelpt alle drie de problemen door correcte statusbewaking toe te voegen: aanhalingsteken-strings, comments en domain-literals worden nu bijgehouden binnen een hoekadres, zodat een sluithaakje '>' alleen buiten die status wordt gehonoreerd; aanhalingsteken-strings en comments worden bijgehouden binnen adresgroepen, zodat een puntkomma ';' alleen buiten die status wordt gehonoreerd; en de nestdiepte van comments wordt bijgehouden, zodat alleen het buitenste sluithaakje een comment beëindigt. Applicaties en bibliotheken (waaronder mailparser, dat dezelfde onderliggende parserlogica deelt) die afhankelijk zijn van de adresparsing van Nodemailer, dienen te updaten naar 10.1.4 of nieuwer.
Hoe dit rapport is gemaakt
6 bronrecords zijn opgehaald, gekoppeld en gebruikt om het rapport hierboven op te stellen.
-
GitHub Advisory Database database
-
OSV.dev database
-
GitHub Advisory Database database
-
OSV.dev database
-
GitHub Advisory Database database
-
OSV.dev database
Revisiegeschiedenis
- Gepubliceerd
- Gegenereerd
Gerelateerd
Relevante veranderingen voor de stacks die je volgt.
Kies je stacks, onderwerpen en eventueel WordPress-plugins. Om 07:00 CEST worden passende meldingen en releases uit de rapportageperiode in één e-mail gegroepeerd.
✓ Kies stacks en onderwerpen✓ Pas voorkeuren altijd aan✓ Eén gebundelde e-mail