CVE-2026-54622
ŚrednieCVSS 6.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 15 - wyżej niż 15% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ryzyko polega na nieautoryzowanym dostępie do poufnych treści w systemie CMS, co może prowadzić do wycieku danych.
Rekomendacja
Zaleca się natychmiastową aktualizację 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-54624Średnie
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.
- 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, the copy_plugins endpoint in cms/admin/placeholderadmin.py authorizes only the destination clipboard. The _copy_plugin_to_clipboard and _copy_placeholder_to_clipboard paths accept source_placeholder_id and source_plugin_id values but use has_copy_plugins_permission and check_source only for the requesting user’s clipboard, without validating the source placeholder. Under CMS_PERMISSION, a staff user with the global add permission for a plugin type can copy plugins from an unauthorized page or placeholder into the user’s clipboard and read secret text, link names, and URLs. This issue is fixed in versions 5.0.8.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

