Krytyczna podatność w Roundcube od 10 lat

7 czerwca, 2025

W popularnym przeglądarkowym kliencie poczty elektronicznej Roundcube znaleziono podatność CVE-2025-49113 pozwalającą na zdalne wykonanie kodu w systemie operacyjnym serwera hostującego tę aplikację (w wielu przypadkach jest to sam serwer obsługujący pocztę). Wykorzystanie podatności co prawda wymaga dostępu do konta pocztowego, natomiast – pewnie z uwagi na dość łatwe użycie – w dziesięciostopniowej skali CVSS przyznano jej 9.9. Same podatności RCE z reguły są uznawane za znaczące, bo ich skuteczne wykonanie jest równoznaczne z możliwością działania w docelowym systemie – w tym przypadku na prawach użytkownika serwera HTTP lub puli PHP-FPM.

Widok interfejsu użytkownika w Roundcube
Widok interfejsu użytkownika w Roundcube

Podatność jako pierwszy opisał Kirill Firsov, CEO firmy FearsOff oferującej usługi związane z bezpieczeństwem IT. Problematyczna okazała się deserializacja obecna w kodzie PHP – parametr GET _from nie był uwzględniany w żadnej walidacji. Wczoraj w godzinach porannych został nawet udostępniony „oficjalny” exploit, z którego kodem źródłowym warto się zapoznać, aby dokładnie zrozumieć przyczynę błędu.

Roundcube można uznać wręcz za standardowe narzędzie systemów poczty elektronicznej. Z uwagi na prostotę wdrożenia – podstawowa konfiguracja ograniczona do kilku kroków, PHP jako główna technologia – i intuicyjną obsługę jest szeroko wykorzystywany m.in. w różnych hostingach (często jedynie ze zmodyfikowanym interfejsem graficznym) czy gotowych rozwiązaniach hostingowych, takich jak cPanel i Plesk. Serwery poczty z definicji są publicznie dostępne i dlatego też istotna jest możliwie szybka aktualizacja używanej wersji Roundcube – tym bardziej że exploit jest już publicznie dostępny, a jego uruchomienie nie wymaga złożonej wiedzy technicznej. Poza tym Roudncube z uwagi na globalne użycie jest ogólnie częstym celem różnych ataków.

Błąd istniał od początkowych wersji Roundcube z 2014 roku, co jednak nie jest niczym zaskakującym. W różnych projektach główne testy obejmują – nawet bardzo ogólną – weryfikację poprawności działania aplikacji, a testy bezpieczeństwa raczej stanowią stałego elementu procesu wytwarzania oprogramowania. Zresztą nie ma żadnej pewności, że różne automatyczne skanery statycznego kodu w ogóle mogłoby wykryć ten dość nieoczywisty problem.

Roundcube to stabilne rozwiązanie i nie wydaje się, aby opisywana podatność w jakikolwiek sposób wpłynęła na skalę jego wykorzystania. Błędy bezpieczeństwa mogą zostać znalezione w dowolnym oprogramowaniu. Ważne jest, aby używać raczej bardziej znanych rozwiązań, bo dzięki temu jest szansa, że podatność zostanie naprawiona w sensownym czasie, a sam produkt będzie posiadał choćby podstawowe wsparcie.

Czy ten artykuł był pomocny?

Oceniono: 0 razy

Picture of Michał Giza

Michał Giza

Administrator systemów Linux i Windows Server. Konfiguruje serwery WWW, bazy danych i inne usługi sieciowe. Wykonuje i automatyzuje wdrożenia aplikacji internetowych.
Picture of Michał Giza

Michał Giza

Administrator systemów Linux i Windows Server. Konfiguruje serwery WWW, bazy danych i inne usługi sieciowe. Wykonuje i automatyzuje wdrożenia aplikacji internetowych.

PODZIEL SIĘ:

guest
0 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments

[ninja_tables id=”27481″]

\r\n <\/div>\r\n<\/div>\r\n","isUserRated":"0","version":"7.6.30","wc_post_id":"56337","isCookiesEnabled":"1","loadLastCommentId":"0","dataFilterCallbacks":[],"phraseFilters":[],"scrollSize":"32","url":"https:\/\/avlab.pl\/wp-admin\/admin-ajax.php","customAjaxUrl":"https:\/\/avlab.pl\/wp-content\/plugins\/wpdiscuz\/utils\/ajax\/wpdiscuz-ajax.php","bubbleUpdateUrl":"https:\/\/avlab.pl\/wp-json\/wpdiscuz\/v1\/update","restNonce":"dbc4f4834d","is_rate_editable":"0","menu_icon":"https:\/\/avlab.pl\/wp-content\/plugins\/wpdiscuz\/assets\/img\/plugin-icon\/wpdiscuz-svg.svg","menu_icon_hover":"https:\/\/avlab.pl\/wp-content\/plugins\/wpdiscuz\/assets\/img\/plugin-icon\/wpdiscuz-svg_hover.svg","is_email_field_required":"1"}; var wpdiscuzUCObj = {"msgConfirmDeleteComment":"Are you sure you want to delete this comment?","msgConfirmCancelSubscription":"Are you sure you want to cancel this subscription?","msgConfirmCancelFollow":"Are you sure you want to cancel this follow?","additionalTab":"0"}; -->