CVE-2026-54624
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 16 - wyżej niż 16% wszystkich znanych CVE
Streszczenie
django CMS przed wersją 5.0.8 zawiera podatność w render_object_structure w cms/views.py, która renderuje cms/toolbar/structure.html dla obiektu PageContent bez wywołania user_can_view_page(). Każde konto pracownika może zażądać struktury ograniczonej strony, gdy CMS_PERMISSION jest włączone i strona ma ograniczenia widoczności lub CMS_PUBLIC_FOR jest ustawione na staff. Odpowiedź ujawnia wartości get_short_description() wtyczek, w tym nazwy linków, adresy URL i fragmenty tekstu, a nie tylko kształt strony.
Ocena ryzyka
Atakujący może uzyskać nieautoryzowany dostęp do szczegółów treści strony, co może prowadzić do ujawnienia poufnych informacji lub naruszenia kontroli dostępu.
Rekomendacja
Zaktualizuj django CMS do wersji 5.0.8 lub nowszej, która zawiera poprawkę.
Inne podatności w django CMS
Zobacz wszystkie- CVE-2015-5081Wysokie
W podatności CSRF w django CMS przed wersją 3.0.14 oraz 3.1.x przed wersją 3.1.1, zdalni atakujący mogą manipulować uprzywilejowanymi użytkownikami, zmuszając ich do wykonywania nieznanych działań.
- CVE-2026-75526Średnie
django CMS w wersjach od 5.0.8 do 5.0.9 zawiera podatność, w której ContentRenderer.render_placeholder w cms/plugin_rendering.py może przekazywać przechowywane, kontrolowane przez atakującego wartości do ContentRenderer.render_exception, gdy renderowanie wtyczki nie powiedzie się w trybie edycji. Wartości z get_short_description(), komunikatu wyjątku, placeholdera lub placeholder.source są interpolowane do nagłówka cms-rendering-exception i później zwracane przez mark_safe. Ponieważ nagłówek nie jest escapowany, przechowywany HTML wykonuje się w przeglądarce edytora, a settings.DEBUG nie zapobiega renderowaniu niestandardowego nagłówka.
- CVE-2026-63003Średnie
django CMS przed wersją 5.0.9 zawiera podatność w duplikacji stron, która nie sprawdza autoryzacji na poziomie obiektu dla źródłowej strony. W cms/admin/forms.py, DuplicatePageForm.source akceptuje dowolną stronę, konstruktor AddPageForm nie zawęża ukrytego pola źródła, AddPageForm.clean nie waliduje źródła względem użytkownika, a AddPageForm.save wywołuje from_source. W cms/admin/pageadmin.py, duplicate i PageAdmin.has_add_permission sprawdzają tylko, czy pracownik może dodać stronę. Spreparowana wartość źródła może skopiować każdy placeholder i wtyczkę z nieautoryzowanej strony z permissions=False, usuwając ograniczenia widoczności źródła i ujawniając treści między witrynami lub ograniczonymi poddrzewami, gdy CMS_PERMISSION jest włączone.
- CVE-2026-61663Średnie
django CMS przed wersją 5.0.9 zawiera podatność w render_object_structure, która nie autoryzuje obiektów niebędących PageContent używających PlaceholderRelationField. Aktywny pracownik bez uprawnień cms.use_structure lub uprawnień do przeglądania/zmiany na poziomie modelu może zażądać endpointu //admin/cms/placeholder/object/<content_type_id>/structure/<object_id>/ z odgadniętymi wartościami content_type_id i object_id. Odpowiedź ujawnia nazwy slotów placeholderów, drzewa wtyczek, identyfikatory wtyczek, etykiety i istnienie obiektów dla obiektów edytowalnych we frontendzie. Poprawka stosuje user_can_view_placeholder_source do gałęzi nie-PageContent, pozostawiając tablicę struktury tylko do odczytu dla użytkowników z uprawnieniami tylko do przeglądania.
- CVE-2026-54622Średnie
django CMS przed wersją 5.0.8 zawiera podatność w punkcie końcowym copy_plugins, który autoryzuje tylko docelowy schowek, ale nie sprawdza źródłowego placeholdera. Użytkownik personelu z globalnym uprawnieniem dodawania dla typu wtyczki może kopiować wtyczki z nieautoryzowanych stron i odczytywać sekretne teksty, nazwy linków i adresy URL.
- CVE-2026-54625Średnie
django CMS przed wersjami 5.0.8 i 5.1.0 ignoruje nagłówki żądań zadeklarowane przez wtyczki w funkcji get_vary_cache_on() podczas generowania klucza pamięci podręcznej. Powoduje to, że różni użytkownicy mogą otrzymać treść przeznaczoną dla innych.
- CVE-2026-54623Wysokie
django CMS to łatwy w użyciu i przyjazny dla programistów system zarządzania treścią dla przedsiębiorstw oparty na Django. Przed wersją 5.0.8 punkt końcowy move_plugin w cms/admin/placeholderadmin.py akceptuje kontrolowaną przez atakującego wartość plugin_parent bez odrzucania identyfikatora własnego pluginu lub identyfikatora potomka. Użytkownik personelu z uprawnieniami do zmiany pluginu w ramach CMS_PERMISSION może utworzyć cykl parent_id w drzewie pluginów. Zapytania _get_descendants_cte i _get_ancestors_cte w cms/models/pluginmodel.py nie mają zabezpieczenia przed cyklem, więc get_descendants() i późniejsze operacje renderowania, kopiowania lub usuwania mogą rekurencyjnie działać w nieskończoność lub osiągnąć limit rekurencji bazy danych, uszkadzając drzewo i zużywając wątki robocze. Problem został naprawiony w wersji 5.0.8.
Oryginalny opis (angielski, źródło NVD)
django CMS is an easy-to-use and developer-friendly enterprise content management system powered by Django. Prior to 5.0.8, render_object_structure in cms/views.py renders cms/toolbar/structure.html for a PageContent object without calling user_can_view_page(). Any staff account can request a restricted page’s structure when CMS_PERMISSION is enabled and the page has view restrictions or CMS_PUBLIC_FOR is set to staff. The response exposes plugin get_short_description() values, including link names, URLs, and text snippets, rather than only the page shape. This issue is fixed in versions 5.0.8.

