Jeśli otrzymali Państwo ode mnie e-mail kierujący na tę stronę, to dlatego, że Państwa witryna wydaje się uruchamiać wersję wtyczki SMS Alert (wtyczki WordPressa figurującej jako “SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery”, autorstwa Cozy Vision Technologies, znajdującej się w Państwa plikach w katalogu /wp-content/plugins/sms-alert/), która mieści się w zakresie objętym znanym problemem bezpieczeństwa. Ta strona wyjaśnia, na czym polega problem, jak ustalić, czy w ogóle dotyczy on Państwa witryny, oraz jak dokonać aktualizacji. W całym tekście mowa jest o wtyczce WordPressa.

Zanim przejdę dalej, najważniejszy fakt dotyczący tego powiadomienia: sama wersja z zakresu objętego problemem nie oznacza, że Państwa witryna jest narażona. Poniższy problem ma znaczenie tylko wtedy, gdy spełnione są jednocześnie dwa warunki, z których żaden nie jest widoczny z zewnątrz Państwa witryny:

  1. w ustawieniach SMS Alert mają Państwo włączoną weryfikację OTP przy resetowaniu hasła, oraz
  2. konto będące celem ataku ma zapisany numer telefonu.

Jeśli korzystają Państwo z SMS Alert wyłącznie do powiadomień o zamówieniach, wiadomości o porzuconych koszykach lub OTP przy realizacji zamówienia czy rejestracji, a nie do weryfikacji resetowania hasła, to ten problem najprawdopodobniej nie dotyczy Państwa witryny, nawet przy wersji objętej problemem. Mogę odczytać wersję Państwa wtyczki z publicznego pliku, ale nie mogę zobaczyć Państwa ustawień, więc to powiadomienie jest zapobiegawczym ostrzeżeniem, a nie potwierdzonym ustaleniem dotyczącym Państwa witryny.

Problem to CVE-2026-11387, nieuwierzytelnione przejęcie konta poprzez proces resetowania hasła wtyczki (CWE-640, słabe odzyskiwanie hasła). Dotyczy wersji od 3.0.0 do 3.9.5 i został naprawiony w wersji 3.9.6. Jeśli korzystają Państwo z wersji objętej problemem, proszę zaktualizować SMS Alert do wersji 3.9.6 lub nowszej. Wydania 3.9.7 i 3.9.8 pojawiły się później i naprawiają inne kwestie; obie są bezpieczne w odniesieniu do tego problemu, a 3.9.8 jest bieżącym wydaniem. Luka ma wynik CVSS 9.8, a kod proof-of-concept jest publicznie dostępny, dlatego piszę do Państwa, mimo że powyższe pytanie o konfigurację może rozstrzygnąć sprawę na Państwa korzyść.

Słowo o pilności, ponieważ to powiadomienie jest warunkowe. Jeśli nie korzystają Państwo z SMS Alert do weryfikacji resetowania hasła, aktualizacja jest zwykłą konserwacją wtyczki. Jeśli Państwo z niej korzystają, proszę potraktować aktualizację jako priorytet: w takiej konfiguracji luka mogła pozwolić zdalnemu odwiedzającemu bez żadnego konta ustawić nowe hasło dla dowolnego użytkownika, który ma zapisany numer telefonu, w tym administratora, co oznaczałoby przejęcie kontroli nad witryną.

Jest to luka we wtyczce, a nie w rdzeniu WordPressa ani WooCommerce. W pełni zaktualizowany WordPress nie chroni Państwa, jeśli sama wtyczka SMS Alert jest w wersji objętej problemem.

Czy ta wiadomość jest wiarygodna?

Tak. Jest to powiadomienie o odpowiedzialnym ujawnieniu luki, wystosowane w dobrej wierze przez niezależnego badacza bezpieczeństwa. Nie proszę o pieniądze, hasła ani dostęp do Państwa witryny, i nie próbowałem się do niej włamać, niczego do niej przesłać ani niczego wykorzystać.

Jedynie sprawdziłem publicznie widoczne pliki, które Państwa witryna udostępnia każdemu odwiedzającemu (w ten sam sposób, w jaki Państwa strona główna jest publiczna), i odnotowałem numer wersji publikowany przez wtyczkę w jej publicznym pliku readme.txt. Celowo nie dotknąłem procesu resetowania hasła, i żadna część tego sprawdzenia nie dotyka Państwa danych, panelu administracyjnego ani żadnej prywatnej części Państwa witryny (więcej szczegółów w sekcji Co zrobiłem, a czego nie poniżej).

Jeśli chcą Państwo zweryfikować, kim jestem, dane kontaktowe znajdują się na dole tej strony oraz na stronie O mnie.

Dlaczego to ważne

SMS Alert wysyła powiadomienia SMS i WhatsApp dla sklepów WooCommerce, a ponadto może umieścić jednorazowy kod przed niektórymi działaniami użytkownika. Jednym z procesów, które może w ten sposób chronić, jest resetowanie hasła po kliknięciu „nie pamiętasz hasła?”: odwiedzający prosi o reset, wtyczka wysyła SMS-em jednorazowy kod na numer telefonu przypisany do konta, a nowe hasło ma zostać ustawione dopiero po poprawnym wpisaniu tego kodu.

W wersjach objętych problemem etap ustawiania nowego hasła nie sprawdzał, czy jednorazowy kod został faktycznie potwierdzony. Reset mógł więc zostać przeprowadzony do końca bez wpisania kodu, przez kogoś, kto nie jest zalogowany i nie ma własnego konta. Wersja 3.9.6 dodaje brakujące sprawdzenie, dzięki czemu etap ustawiania hasła odmawia teraz działania, dopóki wyzwanie kodem nie zostanie najpierw zaliczone.

Dwie rzeczy decydują o tym, jak bardzo dotyczy to danej witryny. Po pierwsze, punktem wejścia jest właśnie ta konkretna konfiguracja: wtyczka uruchamia swój proces resetowania tylko tam, gdzie administrator włączył weryfikację OTP dla resetowania hasła, i tylko wtedy ma komu wysłać kod, gdy konto ma zapisany numer telefonu. Witryna, która nigdy nie włączyła tej funkcji, najprawdopodobniej w ogóle nie jest narażona, nawet przy wersji objętej problemem. Po drugie, tam, gdzie konfiguracja jest włączona, skutek jest poważny, a nie marginalny, ponieważ nic nie ogranicza go do kont o niskich uprawnieniach: celem może stać się dowolne konto z zapisanym numerem telefonu, w tym konta administratorów.

Jeśli mój e-mail powołał się na ten problem, oznacza to, że wersja zgłaszana przez Państwa witrynę mieści się w zakresie objętym problemem. Nie sprawdzałem, czy akurat Państwa witrynę da się wykorzystać, i nie widzę, jak skonfigurowane są Państwa ustawienia OTP; zaobserwowałem wyłącznie to, że witryna zgłasza wersję objętą problemem.

Czy mnie to dotyczy?

O tym decydują dwa pytania, w tej kolejności.

Po pierwsze: czy korzystają Państwo z SMS Alert do weryfikacji resetowania hasła? To jest pytanie decydujące, i tylko Państwo mogą na nie odpowiedzieć. Sprawdzenie własnych ustawień jest całkowicie bezpieczne i to właśnie jest sens tej strony.

  • W panelu administracyjnym WordPressa proszę otworzyć menu SMS Alert i przejść do jego ustawień, a następnie do sekcji kontrolującej weryfikację OTP. Ta sekcja wymienia procesy, przed którymi można umieścić jednorazowy kod. Proszę sprawdzić, czy resetowanie hasła (czasem pokazywane jako „utracone hasło” lub „nie pamiętam hasła”) znajduje się wśród włączonych opcji.
  • Jeśli ta opcja nie jest włączona, ten problem najprawdopodobniej nie dotyczy Państwa witryny, nawet przy wersji objętej problemem. Aktualizacja jest nadal zalecana, jako zwykła konserwacja.
  • Jeśli ta opcja jest włączona, problem Państwa dotyczy i powinni Państwo zaktualizować wtyczkę niezwłocznie.

Proszę nie próbować odtwarzać problemu na własnej ani cudzej witrynie, i nie muszą Państwo tego robić, by odpowiedzieć na powyższe pytanie: sprawdzenie własnych ustawień mówi Państwu wszystko, co potrzebne.

Po drugie: której wersji Państwo używają? Nie muszą Państwo wierzyć mi na słowo, ale w przypadku tej wtyczki jeden z oczywistych sposobów sprawdzenia jest mylący, więc warto przeczytać tę część uważnie.

W panelu administracyjnym WordPressa (źródło rozstrzygające):

  1. Proszę zalogować się do panelu WordPressa (zwykle pod adresem yourdomain.com/wp-admin).
  2. Przejść do Wtyczki, a następnie Zainstalowane wtyczki.
  3. Odnaleźć pozycję figurującą jako “SMS Alert – SMS & OTP for WooCommerce …“ (jej katalog to sms-alert) i odczytać wersję widoczną pod jej nazwą. To jest rzeczywista zainstalowana wersja.

Z publicznego manifestu (bez logowania): proszę otworzyć w przeglądarce adres yourdomain.com/wp-content/plugins/sms-alert/readme.txt. Linia Stable tag: blisko początku to wersja zgłaszana przez Państwa instalację, i jest to ten sam publiczny plik, który odczytałem.

Jednej rzeczy nie należy ufać: numerowi ?ver= dołączonemu do skryptów front-endowych i arkuszy stylów wtyczki w źródle Państwa strony. SMS Alert stempluje te zasoby na podstawie wewnętrznej stałej, która przynajmniej raz pozostała w tyle za faktycznym wydaniem: wersja 3.5.0 została wydana z zasobami oznaczonymi jako 3.4.9. Odczytanie wersji w ten sposób może więc pokazać wydanie starsze niż to, które Państwo faktycznie mają, co na granicy zakresu zmieniłoby załataną instalację 3.9.6 w pozorną wersję 3.9.5. Dokładnie dlatego nie posłużyłem się tym sposobem, decydując, do kogo napisać, i dlatego powinni Państwo oceniać swoją wersję na podstawie ekranu administracyjnego lub linii readme.txt.

Następnie proszę zastosować tę regułę, pamiętając, że wersje porównuje się numerycznie, a nie alfabetycznie, więc 3.9.10 byłaby nowsza niż 3.9.9:

  • Od 3.0.0 do 3.9.5: potencjalnie objęte problemem (zależnie od pytania o konfigurację OTP powyżej), proszę zaktualizować teraz.
  • 3.9.6 lub nowsza: już naprawiona. Dotyczy to również 3.9.7 i 3.9.8, które są późniejszymi wydaniami naprawiającymi niepowiązane kwestie; bieżącym wydaniem jest 3.9.8.
  • Starsza niż 3.0.0: poza tym, co jestem gotów stwierdzić. Najstarsze wydanie nadal publikowane przez producenta to 3.0.0, więc nie mam możliwości zbadania niczego poniżej tej wersji, i wolę nic nie mówić niż oskarżać wersję, której nie mogę sprawdzić. W praktyce ten przypadek jest hipotetyczny: najstarsza zaobserwowana przeze mnie instalacja to wydanie z linii 3.4.x.

Jak zaktualizować

Najbezpieczniejsza droga to aktualizacja przez sam WordPress, po uprzednim wykonaniu kopii zapasowej:

  1. Proszę wykonać kopię zapasową swojej witryny (plików i bazy danych) przed wprowadzeniem jakichkolwiek zmian. Większość dostawców hostingu oferuje kopie zapasowe jednym kliknięciem, można też skorzystać z wtyczki do kopii zapasowych WordPressa.
  2. W panelu administracyjnym WordPressa proszę przejść do Kokpit, a następnie Aktualizacje, albo do Wtyczki, a następnie Zainstalowane wtyczki. Jeśli na liście pojawi się aktualizacja SMS Alert, proszę zainstalować ją stąd.
  3. Jeśli wolą Państwo wiersz poleceń, WP-CLI robi to samo: wp plugin update sms-alert (polecenie używa nazwy katalogu, sms-alert).
  4. Jeśli nie pojawia się żadna aktualizacja, mogą Państwo pobrać najnowszą wersję bezpośrednio ze strony wtyczki w katalogu WordPress.org, SMS Alert, i zaktualizować przez Wtyczki, następnie Dodaj wtyczkę i Wyślij wtyczkę na serwer.
  5. Po aktualizacji proszę potwierdzić nowy numer wersji (3.9.6 lub nowszy), korzystając z powyższych kroków, i sprawdzić, czy Państwa powiadomienia o zamówieniach oraz wszelkie używane przez Państwa procesy OTP nadal działają prawidłowo.

Przy tej okazji warto upewnić się, że rdzeń WordPressa, WooCommerce oraz pozostałe Państwa wtyczki są aktualne, ponieważ ta sama zasada dotyczy ich wszystkich.

Po aktualizacji

Aktualizacja do wersji 3.9.6 lub nowszej zamyka ten problem i dla większości witryn to cały zakres zadania. Ta strona jest powiadomieniem zapobiegawczym, a nie raportem incydentu: nie mam wglądu w to, czy na Państwa witrynie coś się wydarzyło, i tego nie sprawdzałem.

Jedną rzecz warto rozważyć jako uzupełnienie, i jest ona warunkowa, zależna od tego samego pytania o konfigurację. Jeśli Państwa witryna miała włączoną weryfikację OTP dla resetowania hasła, działając na wersji objętej problemem, to przynajmniej teoretycznie było możliwe, że ktoś ustawił nowe hasło na koncie z zapisanym numerem telefonu. Aktualizacja zamyka lukę, ale nie cofa dostępu, który już został uzyskany, więc w takim przypadku rozsądne są dwa rutynowe środki ostrożności:

  • Proszę przejrzeć konta administratorów, oraz wszelkie inne istotne konta, pod kątem wpisów, których Państwo nie rozpoznają, lub zmian ról, których Państwo nie dokonali.
  • Proszę przejrzeć niedawne zmiany haseł i niedawne logowania na kontach z zapisanym numerem telefonu, i zresetować każde hasło, które wygląda na zmienione bez wiedzy właściciela konta.

Jeśli znajdą Państwo coś, co Państwa niepokoi, właściwą reakcją jest potraktowanie tego tak samo, jak każdego innego podejrzenia nieuprawnionego dostępu: proszę zmienić hasła administratorów i rozważyć ponowne wygenerowanie kluczy i „soli” w pliku wp-config.php, co wylogowuje wszystkie istniejące sesje. Jeśli Państwa witryna nigdy nie miała włączonej weryfikacji OTP dla resetowania hasła, sama aktualizacja wystarczy.

Co zrobiłem, a czego nie

Dla pełnej przejrzystości co do sprawdzenia stojącego za moim e-mailem: odczytałem wyłącznie dwa publiczne pliki, które Państwa witryna i tak udostępnia każdemu odwiedzającemu, konkretnie publiczny plik readme.txt wtyczki oraz Państwa stronę główną. Nie uzyskałem dostępu do panelu administracyjnego WordPressa, do Państwa bazy danych ani do żadnej prywatnej części witryny. W szczególności nie dotknąłem procesu resetowania hasła, niczego nie przesłałem do Państwa witryny i niczego nie testowałem ani nie wykorzystałem.

Celowo nie publikuję również szczegółów, które pomogłyby komuś wykorzystać ten problem: powyższy opis opisuje lukę na poziomie, jakiego potrzebuje właściciel witryny, i nie dalej, i nie podaję odnośnika do publicznie dostępnego kodu proof-of-concept.

To jest obserwacja oparta na wersji: Państwa witryna zgłasza wersję z zakresu objętego problemem. Ponieważ ten problem zależy od konfiguracji, witryna z tego zakresu może wcale nie być narażona (jeśli nie korzysta z weryfikacji OTP dla resetowania hasła), a może być też już chroniona innymi środkami, takimi jak zapora aplikacji webowych (WAF). To powiadomienie nie jest stwierdzeniem, że Państwa witryna była podatna na atak w chwili, gdy ją sprawdzałem.

Nie mam webmastera / utknąłem

Jeśli nie zajmują się Państwo witryną osobiście, proszę przekazać tę stronę osobie, która to robi (deweloperowi, agencji lub firmie hostingowej). Powyższe kroki rozpozna od razu.

Jeśli utrzymują Państwo witrynę samodzielnie i utkną, chętnie bezpłatnie wskażę właściwy kierunek. Proszę napisać, korzystając z danych kontaktowych poniżej.

Kontakt

Evan Harris, badacz bezpieczeństwa

Kontaktuję się w takich sprawach wyłącznie po to, by pomóc operatorom zabezpieczyć ich witryny. Jeśli wolą Państwo nie otrzymywać kolejnych wiadomości, proszę dać znać; uszanuję to.

Źródła

Oficjalne komunikaty i śledzenie

Producent / wtyczka