Opis podatności
CVE-2026-40457 ma CVSS v4 2.1 LOW. Niska punktacja wynika przede wszystkim z
UI:A i AT:P: exploit wymaga aktywnej interakcji zalogowanej ofiary oraz
spełnienia dodatkowego warunku aplikacyjnego, a nie z braku wpływu na kontekst
przeglądarki.
Podatne były dwa miejsca: dbrecover.php oraz netremap.php. W pierwszym do
linku potwierdzającego trafiał parametr db, w drugim parametry id i mapto.
Wartości były osadzane w atrybucie href bez kodowania dla kontekstu atrybutu
HTML.
Warunki wykorzystania
W CVSS widać PR:N, ale to dotyczy atakującego. Atakujący nie musi mieć konta
w LMS, żeby przygotować link. Jednocześnie ofiara musi kliknąć go jako
uwierzytelniony użytkownik LMS, a dla netremap.php potrzebny jest dodatkowy
kontekst aplikacyjny (AT:P), np. istniejąca sieć możliwa do użycia w tym
widoku.
Tego przypadku nie należy opisywać jako krytycznego XSS. Trafniejszy opis to błąd kontekstowego escapowania, w którym dane z URL-a wracały do HTML w miejscu interpretowanym przez przeglądarkę jako atrybut linku.
Patch
Commit 9c5651b dodaje htmlspecialchars() dla wartości z GET przed osadzeniem
ich w atrybutach href w dbrecover.php i netremap.php. To HTML-escaping w
kontekście atrybutu linku, nie ogólna walidacja URL ani uniwersalne filtrowanie
XSS.
Ten przypadek dobrze pokazuje, że poprawka powinna być oceniana przez kontekst wyjścia. Inaczej traktuje się tekst w HTML, inaczej atrybut, inaczej URL i inaczej fragment JavaScript. Tutaj problem był przy atrybucie linku.