Gemiddeld · 4.9 Node.js & npm GHSA-f2hq-32vh-53cc
postal-mime: kwadratisch CPU-verbruik door geprepareerde e-mailheaders (GHSA-f2hq-32vh-53cc)
Een denial-of-service-kwetsbaarheid in het npm-pakket postal-mime zorgt ervoor dat een geprepareerde e-mailheader excessief CPU-gebruik veroorzaakt en de event loop blokkeert. Verholpen in versie 4.0.8.
AI-samenvatting
Er is een kwetsbaarheid bekendgemaakt in postal-mime, een npm-pakket voor het verwerken van e-mailberichten. Het probleem maakt het mogelijk dat een speciaal geprepareerde e-mailheader tijdens het parseren excessief CPU-verbruik veroorzaakt, waardoor de applicatie die het bericht verwerkt kan vastlopen. Het probleem is geregistreerd als GHSA-f2hq-32vh-53cc en is verholpen in versie 4.0.8.
Wat is er gebeurd
Er is een kwetsbaarheid bekendgemaakt in postal-mime die betrekking heeft op de manier waarop het pakket e-mailheaders decodeert met lange reeksen aaneen te voegen RFC 2047 base64-gecodeerde woorden (bijvoorbeeld herhaalde `=?utf-8?B?QUJT?=`-reeksen in een Subject-, From-, To-, bestandsnaam- of beschrijvingsveld). De decodeerlogica voerde bij elk verwerkt woord een reguliere expressie uit over de volledig opgebouwde tekst tot dan toe, waardoor de verwerkingstijd kwadratisch toenam met het aantal woorden in plaats van lineair.
Technische oorzaak
De kwetsbaarheid is geclassificeerd als CWE-400 (Uncontrolled Resource Consumption). De oorzaak ligt in de manier waarop postal-mime controleerde of RFC 2047-gecodeerde woorden aaneengesloten konden worden: bij elk nieuw woord werd de opgebouwde tekst opnieuw platgeslagen en met een regex doorzocht, in plaats van alleen het laatst toegevoegde woord bij te houden. Een enkel goed gevormd bericht van ongeveer 1,6 MB met zo'n header kon de event loop, afhankelijk van de host, één tot twintig seconden blokkeren. Ingesloten `message/rfc822`-onderdelen (geneste berichten) verhoogden de kosten verder, omdat elk genest bericht zijn eigen headerbudget meebracht.
Waarom dit belangrijk is
Dit probleem heeft een CVSS-score van 7,5 (vector: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H), wat duidt op een via het netwerk uitbuitbare denial-of-service-situatie zonder dat authenticatie of gebruikersinteractie vereist is, met een hoge impact op beschikbaarheid maar geen impact op vertrouwelijkheid of integriteit. Elke applicatie die postal-mime gebruikt om onbetrouwbare of extern aangeleverde e-mail te verwerken — ook via de geëxporteerde helper `decodeWords()` — kan worden gedwongen tot excessief CPU-gebruik, wat de verwerking van andere verzoeken kan vertragen of blokkeren zolang de event loop bezet is.
Wie wordt getroffen
Elke applicatie of dienst die het npm-pakket postal-mime gebruikt om onbetrouwbare e-mailinvoer te verwerken, is kwetsbaar als een getroffen versie wordt gebruikt.
Getroffen versies
postal-mime versies 3.0.0 tot maar niet met inbegrip van 4.0.8 zijn getroffen, inclusief versie 4.0.7. Het probleem is verholpen in versie 4.0.8.
Oplossingen en mitigatie
Het probleem is verholpen in postal-mime 4.0.8. De oplossing wijzigt de padding-controle zodat alleen het laatst toegevoegde woord wordt bijgehouden in plaats van steeds de volledige samengevoegde tekst opnieuw te testen, waardoor de decodeertijd lineair wordt ten opzichte van de headerlengte. Versie 4.0.8 telt daarnaast de onderdelen en headerbytes van ingesloten `message/rfc822`-subberichten mee in de limieten van het hoofdbericht, telt elke headerregel voor minimaal 64 bytes mee in `maxHeadersSize`, en voegt een schaaltest toe die de prestaties van de parser op twee invoergroottes meet. Als tijdelijke mitigatie voor systemen die niet direct kunnen updaten, kan het verlagen van `maxHeadersSize` ten opzichte van de standaardwaarde van 2 MiB de kosten per bericht beperken, of kan onbetrouwbare e-mail worden verwerkt in een worker-proces dat kan worden beëindigd als het te lang draait.
Aanbevolen actie
Update postal-mime zo spoedig mogelijk naar versie 4.0.8. Als directe update niet haalbaar is, verlaag dan de instelling `maxHeadersSize` ten opzichte van de standaardwaarde of isoleer het verwerken van onbetrouwbare e-mail in een beëindigbaar worker-proces als tijdelijke mitigatie.
PatchBriefing-score
4.9 / 10 · Gemiddeld
Officiële CVSS: 7.5
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Waarom deze score
De patchwire-score van 4,9 is voornamelijk afgeleid van de CVSS-basisscore van 7,5, die een denial-of-service-situatie weerspiegelt die via het netwerk uitbuitbaar is zonder authenticatie of gebruikersinteractie (bijdrage van 4,13 punten), plus kleine toevoegingen voor onbeauthenticeerde externe toegang (0,6) en het ontbreken van vereiste gebruikersinteractie (0,2). Er is geen bekende actieve uitbuiting, geen publiek beschikbare exploitcode, en geen bijdrage vanuit EPSS omdat er geen EPSS-score is aangeleverd. Er is een fix beschikbaar, wat niet bijdraagt aan de score. De totale score weerspiegelt een reëel maar tot beschikbaarheid beperkt risico, geen kritieke, actief uitgebuite dreiging.
Getroffen versies
- postal-mime >= 3.0.0, < 4.0.8
- kwetsbaar
- postal-mime ≥ 3.0.0 < 4.0.8
- kwetsbaar
- ≥ 4.0.8
- gepatcht
Gemelde oplossingen
Het probleem is verholpen in postal-mime 4.0.8. De oplossing wijzigt de padding-controle zodat alleen het laatst toegevoegde woord wordt bijgehouden in plaats van steeds de volledige samengevoegde tekst opnieuw te testen, waardoor de decodeertijd lineair wordt ten opzichte van de headerlengte. Versie 4.0.8 telt daarnaast de onderdelen en headerbytes van ingesloten `message/rfc822`-subberichten mee in de limieten van het hoofdbericht, telt elke headerregel voor minimaal 64 bytes mee in `maxHeadersSize`, en voegt een schaaltest toe die de prestaties van de parser op twee invoergroottes meet. Als tijdelijke mitigatie voor systemen die niet direct kunnen updaten, kan het verlagen van `maxHeadersSize` ten opzichte van de standaardwaarde van 2 MiB de kosten per bericht beperken, of kan onbetrouwbare e-mail worden verwerkt in een worker-proces dat kan worden beëindigd als het te lang draait.
Hoe dit rapport is gemaakt
2 bronrecords zijn opgehaald, gekoppeld en gebruikt om het rapport hierboven op te stellen.
-
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