← Wszystkie CVE
CVE-2026-40457 PUBLISHED LOW 2.1
Opublikowano: 18 czerwca 2026

Zgłaszający według advisory CERT Polska: Tymoteusz Dominik

Reflected XSS in LMS dbrecover.php and netremap.php

Podsumowanie

W dbrecover.php i netremap.php wartości z GET trafiały do atrybutów href linków potwierdzających akcję bez HTML-escaping. Atakujący nie musiał mieć konta (PR:N), ale wykonanie wymagało aktywnej interakcji zalogowanej ofiary LMS (UI:A) i dodatkowego warunku aplikacyjnego (AT:P).

Szczegóły techniczne

CWE CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Wektor CVSS CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Wynik CVSS 2.1 LOW
Uprawnienia atakującego (PR) Brak wymaganych uprawnień
Warunki eksploatacji Atakujący nie potrzebuje konta (PR:N), ale exploit wymaga aktywnej interakcji zalogowanej ofiary LMS (UI:A) oraz dodatkowego warunku aplikacyjnego (AT:P, np. istniejącej sieci dla netremap.php).
Podatne wersje LMS przed commitem 9c5651b
Poprawka dostępna od commit 9c5651b

Przepływ danych i poprawka

Source
parametry GET: db w dbrecover.php oraz id i mapto w netremap.php
Miejsca
modules/dbrecover.php oraz modules/netremap.php
Transformacja
konkatenacja parametrów GET do href linku potwierdzającego
Sink
wartości osadzone w atrybutach href bez HTML escaping
Warunek
interakcja uwierzytelnionego użytkownika LMS i dodatkowy warunek aplikacyjny AT:P
Fix
htmlspecialchars() przed osadzeniem wartości w HTML
CVSS
PR:N dotyczy atakującego; UI:A dotyczy wymaganej interakcji ofiary

Oś czasu

przed publikacją Zgłoszenie podatności do CERT Polska
18 czerwca 2026 Publikacja advisory CERT Polska
18 czerwca 2026 Publikacja rekordu CVE-2026-40457 i danych CVSS v4

CVE-2026-40457: reflected XSS w linkach potwierdzających akcję

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.