CVE-2026-78204
ŚrednieCVSS 5.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 13 - wyżej niż 13% wszystkich znanych CVE
Streszczenie
Ghostwriter do wersji 7.2.6 nie stosuje autoryzacji per-obiekt na endpointach lintowania szablonów raportów. RoleBasedAccessControlMixin.test_func zwraca tylko request.user.is_active, chyba że widok to nadpisze, a ani endpoint lintujący szablon raportu, ani endpoint zwracający zapisane wyniki lintowania nie nadpisują tej metody. Każde uwierzytelnione konto może lintować dowolny szablon, nadpisując jego zapisany wynik lintowania, oraz czytać zwrócone wyniki, które ujawniają nazwy zmiennych i błędy silnika szablonów, co ujawnia ich strukturę. To odrębna luka od ścieżki podmiany szablonu: tamten endpoint autoryzuje raport, ale pomija sprawdzenie per-szablon, podczas gdy te endpointy pomijają autoryzację całkowicie i pozostają niezafiksowane.
Ocena ryzyka
Uwierzytelniony użytkownik może uzyskać dostęp do struktury szablonów raportów, co może ujawnić wrażliwe informacje o konfiguracji lub logice aplikacji. Może również nadpisać wyniki lintowania, co może prowadzić do manipulacji danymi.
Rekomendacja
Zaleca się natychmiastowe zaktualizowanie Ghostwriter do wersji, która zawiera poprawkę, jeśli jest dostępna. Jeśli nie, należy ręcznie dodać autoryzację per-obiekt do tych endpointów lub ograniczyć dostęp do nich.
Inne podatności w Ghostwriter
Oryginalny opis (angielski, źródło NVD)
Ghostwriter through 7.2.6 does not apply per-object authorization on its report template lint endpoints. RoleBasedAccessControlMixin.test_func returns only request.user.is_active unless a view overrides it, and neither the endpoint that lints a report template nor the endpoint that returns stored lint results provides an override, so each resolves a ReportTemplate from a caller-supplied primary key with no ownership or client-scope check. Any authenticated account can therefore lint an arbitrary template, which overwrites that template's stored lint result, and can read the returned findings, which enumerate the template's variable names and template-engine errors and so disclose its structure. This is distinct from the template swap path: that endpoint authorizes the report but omits the per-template check, whereas these endpoints omit authorization entirely and remain unfixed.

