Biblioteka LibJS w przeglądarce Ladybird nieprawidłowo obsługuje zwalnianie pamięci wektora, do którego odwołuje się lista argumentów, co prowadzi do błędu use-after-free. Podatność pozwala zdalnym atakującym na wykonanie dowolnego kodu poprzez specjalnie spreparowany plik JavaScript.
▸ Pokaż oryginał (EN)
LibJS in Ladybird before f5a6704 mishandles the freeing of the vector that arguments_list references, leading to a use-after-free, and allowing remote attackers to execute arbitrary code via a crafted .js file. NOTE: the GitHub README says "Ladybird is in a pre-alpha state, and only suitable for use by developers."
Błąd polega na niepoprawnym zarządzaniu cyklem życia wektora przechowującego listę argumentów (arguments_list) w silniku JavaScript LibJS. Pamięć przydzielona dla tego wektora jest zwalniana przedwcześnie, a następnie nadal używana przez silnik (use-after-free, CWE-820). Atakujący może dostarczyć ofierze spreparowany plik .js, którego przetworzenie przez Ladybird wyzwoli ten błąd i umożliwi kontrolę nad przepływem wykonania.
Skuteczne wykorzystanie podatności pozwala zdalnemu atakującemu na wykonanie dowolnego kodu (RCE) w kontekście procesu przeglądarki, co może prowadzić do pełnej kompromitacji poufności, integralności i dostępności systemu.
Należy zaktualizować Ladybird do wersji zawierającej commit f5a670421954fc7130c3685b713c621b29516669 lub nowszy. Warto mieć na uwadze, że zgodnie z oficjalnym README projektu Ladybird jest oprogramowaniem w stanie pre-alpha, przeznaczonym wyłącznie dla deweloperów — nie powinno być stosowane w środowiskach produkcyjnych ani przez użytkowników końcowych.
Ladybird w wersjach przed commitem f5a6704 (f5a670421954fc7130c3685b713c621b29516669); dotyczy komponentu LibJS wbudowanego w tę przeglądarkę
Producent w pliku README na GitHub wyraźnie zastrzega, że Ladybird jest w stanie pre-alpha i przeznaczony wyłącznie do użytku przez deweloperów. Szczegółowa analiza techniczna podatności dostępna jest pod adresem https://jessie.cafe/posts/pwning-ladybirds-libjs/.
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H