PHPMailer w wersjach 6.1.8–6.4.0 jest podatny na object injection poprzez deserializację formatu Phar przy użyciu ścieżek UNC w funkcji addAttachment. Podatność jest krytyczna (CVSS 9.8), ponieważ nie wymaga uwierzytelnienia ani interakcji użytkownika i może prowadzić do przejęcia kontroli nad serwerem.
▸ Pokaż oryginał (EN)
PHPMailer 6.1.8 through 6.4.0 allows object injection through Phar Deserialization via addAttachment with a UNC pathname. NOTE: this is similar to CVE-2018-19296, but arose because 6.1.8 fixed a functionality problem in which UNC pathnames were always considered unreadable by PHPMailer, even in safe contexts. As an unintended side effect, this fix eliminated the code that blocked addAttachment exploitation.
Podatność wynika z niezamierzonego efektu ubocznego poprawki wprowadzonej w wersji 6.1.8, która naprawiła problem funkcjonalny polegający na tym, że ścieżki UNC były zawsze traktowane jako nieczytelne przez PHPMailer. Usunięcie tego ograniczenia wyeliminowało jednocześnie kod blokujący możliwość nadużycia funkcji addAttachment. Atakujący może przekazać specjalnie spreparowaną ścieżkę UNC wskazującą na plik Phar, co powoduje deserializację osadzonego w nim obiektu PHP (CWE-502). Mechanizm jest analogiczny do wcześniej opisanej podatności CVE-2018-19296.
Udana eksploatacja umożliwia atakującemu wykonanie dowolnego kodu na serwerze (RCE), a także naruszenie poufności, integralności i dostępności danych — w zależności od dostępnych klas PHP (gadget chains) w środowisku docelowym.
Należy zaktualizować PHPMailer do wersji wyższej niż 6.4.0, w której problem został rozwiązany. Dostępna poprawka opisana jest w commicie repozytorium GitHub (e2e07a355ee8ff36aba21d0242c5950c56e4c6f9). Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dodatkowo zaleca się weryfikację, czy dane wejściowe przekazywane do funkcji addAttachment są odpowiednio walidowane i ograniczone wyłącznie do zaufanych ścieżek.
PHPMailer w wersjach od 6.1.8 do 6.4.0 (włącznie). Pośrednio dotyczy aplikacji korzystających z PHPMailer, w tym instalacji WordPress z wtyczkami lub motywami używającymi tej biblioteki.
Podatność jest regresją wprowadzoną w wersji 6.1.8 — poprawka funkcjonalna dla ścieżek UNC nieumyślnie usunęła zabezpieczenie blokujące wcześniej znany wektor ataku CVE-2018-19296.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HPhpmailer Project Phpmailer
APPPhpmailer Project6.1.8 – 6.4.0WordPress
APPWordpress3.7 – 3.7.36 (bez)3.8 – 3.8.36 (bez)3.9 – 3.9.34 (bez)4.0 – 4.0.33 (bez)4.1 – 4.1.33 (bez)4.2 – 4.2.30 (bez)4.3 – 4.3.26 (bez)4.4 – 4.4.25 (bez)4.5 – 4.5.24 (bez)4.6 – 4.6.21 (bez)4.7 – 4.7.21 (bez)4.8 – 4.8.17 (bez)4.9 – 4.9.18 (bez)5.0 – 5.0.13 (bez)5.1 – 5.1.10 (bez)+ 6 więcej
Powiązane podatności
WordPress: RCE przez route confusion w REST API i SQL Injection
PHPMailer — RCE poprzez argument injection w funkcji mailSend
Privilege escalation w WordPress przez XML-RPC (przed wersją 5.5.2)
WordPress — niebezpieczna deserializacja w FilteredIterator
WordPress: privilege escalation przez XML-RPC przy komentowaniu wpisów