Podatność w platformie Mastodon umożliwia atakującemu ominięcie mechanizmu sanityzacji HTML poprzez spreparowane dane oEmbed, co skutkuje możliwością wykonania dowolnego kodu JavaScript w przeglądarce ofiary. Ze względu na brak wymagań co do uprawnień i szeroki zasięg społecznościowy platformy, podatność niesie wysokie ryzyko dla użytkowników.
▸ Pokaż oryginał (EN)
Mastodon is a free, open-source social network server based on ActivityPub. Starting in version 1.3 and prior to versions 3.5.9, 4.0.5, and 4.1.3, an attacker using carefully crafted oEmbed data can bypass the HTML sanitization performed by Mastodon and include arbitrary HTML in oEmbed preview cards. This introduces a vector for cross-site scripting (XSS) payloads that can be rendered in the user's browser when a preview card for a malicious link is clicked through. Versions 3.5.9, 4.0.5, and 4.1.3 contain a patch for this issue.
Atakujący przygotowuje złośliwy link zawierający starannie skonstruowane dane oEmbed, które są pobierane przez serwer Mastodon w celu wygenerowania karty podglądu (preview card). Spreparowane dane oEmbed zawierają osadzony HTML z payload XSS, który omija wbudowany mechanizm sanityzacji HTML stosowany przez Mastodon. Gdy użytkownik kliknie w kartę podglądu złośliwego linku, osadzony kod JavaScript jest renderowany i wykonywany w kontekście jego przeglądarki.
Atakujący może wykonać dowolny kod JavaScript w przeglądarce zalogowanego użytkownika, co może prowadzić do przejęcia sesji, kradzieży danych uwierzytelniających lub przeprowadzenia dalszych ataków w kontekście konta ofiary. Podatność ma charakter reflected/stored XSS z potencjalnym wpływem na poufność i integralność danych.
Należy zaktualizować Mastodon do wersji 3.5.9, 4.0.5 lub 4.1.3 — w zależności od używanej gałęzi. Patche są dostępne w oficjalnym repozytorium GitHub projektu Mastodon.
Mastodon w wersjach od 1.3 do (z wyłączeniem) 3.5.9, 4.0.5 oraz 4.1.3 — odpowiednio dla gałęzi 3.5.x, 4.0.x i 4.1.x
Podatność obecna od wersji 1.3, co oznacza bardzo długi czas ekspozycji. Poprawka dostępna jest m.in. w commicie 6d8e0fae3e96f3cf4febe03fa7fcf5b95ff761b2 w repozytorium GitHub.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:NJoinmastodon Mastodon
APPJoinmastodon1.3 – 3.5.9 (bez)4.0.0 – 4.0.5 (bez)4.1.0 – 4.1.3 (bez)
Powiązane podatności
Mastodon: Podszywanie się pod zdalne konta poprzez brak walidacji origin
Mastodon: path traversal w przetwarzaniu mediów umożliwia RCE
Brak ograniczenia prób uwierzytelniania w Mastodon (przed 4.0.0)
Mastodon: nieprawidłowa kontrola dostępu przez brak kompaktowania JSON-LD
Mastodon: błędna obsługa timeout sesji — niewystarczające wygasanie sesji