Podatności django CMS
8 znanych podatności CVE w django CMS, przetłumaczonych i ocenionych.
- 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-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.

