CVE-2026-92595
ŚrednieCVSS 5.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 10 - wyżej niż 10% wszystkich znanych CVE
Streszczenie
Nodemailer w wersjach 9.1.0 i wcześniejszych nie respektuje opcji sandboxa disableFileAccess i disableUrlAccess, gdy treść wiadomości jest rozwiązywana przez publiczne API pluginów MailMessage.resolveContent() z użyciem starej trzyargumentowej sygnatury. W efekcie kod pluginu lub aplikacji może zostać zmuszony do odczytu dowolnych plików lokalnych lub wykonania wychodzących żądań HTTP(S) (SSRF), omijając włączony sandbox. Naprawiono w wersji 9.1.1.
Ocena ryzyka
Atakujący może wykorzystać tę lukę do odczytu poufnych plików lokalnych lub przeprowadzenia ataków SSRF, co może prowadzić do wycieku danych lub dostępu do zasobów wewnętrznych. Ryzyko dotyczy aplikacji, które używają resolveContent() do przetwarzania niezaufanej treści.
Rekomendacja
Zaktualizuj Nodemailer do wersji 9.1.1 lub nowszej. Do czasu aktualizacji unikaj używania starej trzyargumentowej sygnatury resolveContent() z niezaufanymi danymi.
Inne podatności w Nodemailer
Zobacz wszystkie- GHSA-2x7j-588g-ccc2Wysokie
Parser adresów e-mail w Nodemailer (lib/addressparser/index.js) przetwarza listę adresów oddzielonych przecinkami w czasie kwadratowym (O(n²)) w zależności od liczby adresów. Pojedynczy spreparowany ciąg adresów (np. w polach To, Cc, Bcc, From, Reply-To) może spowodować znaczne spowolnienie.
- GHSA-r7g4-qg5f-qqm2Średnie
Nodemailer wyłącza weryfikację certyfikatów TLS w swoim wewnętrznym kliencie HTTPS, ustawiając rejectUnauthorized: false w pliku lib/fetch/index.js. Powoduje to, że żądania tokenów OAuth2 ufają nieprawidłowym lub samopodpisanym certyfikatom HTTPS.
- GHSA-268h-hp4c-crq3Średnie
Podatność w bibliotece Nodemailer umożliwia wstrzyknięcie nagłówków poprzez pole `list.*.comment`, które nie jest oczyszczane ze znaków CR (`\r`) i LF (`\n`). Atakujący może dostarczyć złośliwą wartość w tym polu, co prowadzi do fałszowania nagłówków wiadomości e-mail.
- GHSA-wqvq-jvpq-h66fŚrednie
Podatność w Nodemailer pozwala na obejście opcji `disableFileAccess` i `disableUrlAccess` w przypadku korzystania z `jsonTransport`. Mimo że normalny strumień MIME wymusza te ograniczenia, `jsonTransport` serializuje wiadomość w sposób, który je pomija, umożliwiając potencjalny dostęp do lokalnych plików lub zewnętrznych URL-i.
- GHSA-8m3c-c648-2xjjŚrednie
Opcje disableFileAccess i disableUrlAccess w Nodemailer służą jako piaskownica uniemożliwiająca niezaufanej treści wiadomości czytanie lokalnych plików lub wykonywanie żądań HTTP(S). Poprawka dla wcześniejszej podatności (GHSA-wqvq-jvpq-h66f) może być niekompletna, umożliwiając obejście zabezpieczeń.
- GHSA-p6gq-j5cr-w38fWysokie
W nodemailer v9.0.0 opcja `raw` na poziomie wiadomości omija zabezpieczenia `disableFileAccess` i `disableUrlAccess`, umożliwiając odczyt dowolnych plików oraz pełny atak SSRF (Server-Side Request Forgery) w wysyłanej wiadomości.
- GHSA-wmmp-3585-3rmpŚrednie
Nodemailer rozwiązuje międzynarodowe (IDN / nie-ASCII) domeny odbiorcy na inny etykietę Punycode (xn--) niż standardowe parsery zgodne z UTS-46 (np. przeglądarki, URL Standard, Node's url.domainToASCII, Python's idna). Jego normalizator adresów _normalizeAddress może prowadzić do błędnego rozpoznania domeny, co może być wykorzystane do ataków typu phishing lub przejęcia wiadomości.
- GHSA-cc9r-2j5m-2m83Średnie
Parser adresów e-mail w Nodemailer traktuje komentarz RFC 5322 (w nawiasach) w domenie jako miejsce łączenia tekstu, zamiast jako białe znaki składane (CFWS), które kończą domenę. To może prowadzić do błędnego parsowania adresu, np. [email protected](x)evil.c..., umożliwiając atakującemu przekierowanie wiadomości lub obejście walidacji.
- CVE-2026-82854Krytyczne
Nodemailer przed wersją 8.0.4 jest podatny na wstrzykiwanie komend SMTP przez niesanityzowany parametr envelope.size. Gdy aplikacja przekazuje niestandardowy obiekt envelope z właściwością size zawierającą znaki CRLF do sendMail(), wartość jest konkatenowana do komendy SMTP MAIL FROM (jako SIZE=...) bez sanityzacji, co pozwala na wstrzyknięcie dowolnych komend SMTP, takich jak RCPT TO, w celu cichego dodania adresatów kontrolowanych przez atakującego.
- CVE-2026-92598Średnie
Nodemailer przed wersją 9.1.0 nie stosuje normalizacji UTS-46 przy kodowaniu międzynarodowych nazw domen, przez co resolver domen oblicza inny A-label Punycode niż parsery zgodne ze standardem. Atakujący może tworzyć adresy odbiorców z niewidocznymi znakami lub mapowaniami zgodności, które przechodzą kontrolę listy dozwolonych domen, ale są dostarczane do domen kontrolowanych przez atakującego przez SMTP.
Oryginalny opis (angielski, źródło NVD)
Nodemailer (npm package `nodemailer`) versions 9.1.0 and earlier do not honor the `disableFileAccess` and `disableUrlAccess` sandbox options when message content is resolved through the public plugin API `MailMessage.resolveContent()` using the documented legacy three-argument signature `resolveContent(data, key, callback)`. Because `shared.resolveContent()` normalizes the missing `options` argument to an empty object, the message-level flags copied into `mail.data` by the MailMessage constructor are discarded, and `resolveContentValue()` skips both access-control checks, reaching `nmfetch(url)` or `fs.createReadStream(path)`. As a result, plugin or application code that resolves untrusted message content (html, text, attachment `path` or `href`) via this API can be induced to read arbitrary local files or issue outbound HTTP(S) requests (server-side request forgery), bypassing the sandbox the application enabled. The internal paths used by `transporter.sendMail()` (`resolveAll()`, `_convertDataImages()`, and the MIME streaming path) are not affected. Fixed in version 9.1.1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

