CVE-2026-73159
ŚrednieCVSS 5.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 14 - wyżej niż 14% wszystkich znanych CVE
Streszczenie
Podatne wersje cti-transmute pozwalają na przechowywanie wartości ikony tagu i późniejszą interpolację do HTML przez v-html. Funkcja mapIcon() konstruowała string HTML bezpośrednio z wartości ikony, np. <i class="fas fa-${name}"></i>. Ponieważ ikona jest dostarczana przez użytkownika, spreparowana wartość mogła wyrwać się z zamierzonego markupu i wstrzyknąć HTML kontrolowany przez atakującego. Gdy tag był renderowany, w tym na administracyjnym interfejsie triage, payload mógł wykonać się w przeglądarce widza. Poprawka zastępuje v-html bindingiem :class, ogranicza mapIcon() do klasy FontAwesome i waliduje ikony po stronie backendu.
Ocena ryzyka
Atakujący może wykonać dowolny skrypt w przeglądarce administratora, co może prowadzić do przejęcia konta lub kradzieży danych.
Rekomendacja
Zaktualizuj cti-transmute do wersji z poprawką, która eliminuje użycie v-html i waliduje ikony.
Oryginalny opis (angielski, źródło NVD)
Affected versions of cti-transmute allow a tag's icon value to be stored and later interpolated into HTML through Vue's v-html. The helper mapIcon() previously constructed an HTML string directly from the icon value: <i class="fas fa-${name}"></i> Because the icon is user-supplied, a crafted value could break out of the intended markup and inject attacker-controlled HTML. When the affected tag was later rendered, including on the administrative triage interface, the payload could execute in the viewer's browser. The patch mitigates the issue at multiple layers: v-html is replaced with Vue :class binding, mapIcon() now returns only a constrained FontAwesome class string, and the backend validates icons against the FontAwesome catalogue or a strict [a-z0-9-]{1,40} slug pattern before storing them.

