CVE-2026-54888
ŚrednieCVSS 6.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 6 - wyżej niż 6% wszystkich znanych CVE
Streszczenie
Podatność w bibliotece mdex (oraz mdex_native) umożliwia atak DoS poprzez dostarczenie głęboko zagnieżdżonego dokumentu Markdown. Rekurencyjne funkcje konwertujące nie sprawdzają maksymalnej głębokości, co prowadzi do przepełnienia stosu C i awarii całego węzła BEAM.
Ocena ryzyka
Atakujący bez uwierzytelnienia może doprowadzić do zatrzymania wszystkich procesów Elixir/Erlang na węźle, powodując całkowitą niedostępność usługi. Awaria jest nieuchwytna i nie może być obsłużona przez maszynę wirtualną Erlanga.
Rekomendacja
Należy niezwłocznie zaktualizować mdex do wersji 0.12.3 lub nowszej, a mdex_native do wersji 0.2.3 lub nowszej. Jeśli aktualizacja nie jest możliwa, ogranicz dostęp do funkcji przetwarzających Markdown tylko dla zaufanych użytkowników.
Inne podatności w mdex
Zobacz wszystkie- CVE-2026-53428Średnie
Podatność w bibliotece mdex i mdex_native pozwala nieuwierzytelnionemu atakującemu na przeprowadzenie ataku DoS poprzez nieograniczoną alokację pamięci. Funkcja parse_highlight_lines w komponencie LumisAdapter rozszerza zakres linii z bloku kodu bez kontroli górnego limitu, co prowadzi do alokacji ogromnych wektorów. Wystarczy przesłać Markdown z zakresem 1-2000000000, aby wyczerpać pamięć hosta i zatrzymać proces BEAM.
- CVE-2026-53427Niskie
W bibliotece MDEx wykryto podatność na ataki XSS (stored i reflected) poprzez nieprawidłową neutralizację danych wejściowych w Markdown. Atakujący może wstrzyknąć dowolny kod HTML/JavaScript, który wykona się w przeglądarce każdego użytkownika wyświetlającego przetworzoną treść.
- CVE-2026-54889Średnie
Podatność XSS w bibliotece mdex dla Elixira pozwala atakującemu na wstrzyknięcie kodu JavaScript poprzez nieprawidłową walidację schematów URL w przetwarzaniu Markdown do Quill Delta. Atakujący może umieścić złośliwy link z schematem javascript: w tekście Markdown, który zostanie bez zmian skopiowany do atrybutu Delta, a następnie wykonany w przeglądarce ofiary po renderowaniu do HTML.
- CVE-2026-53429Średnie
W bibliotekach mdex i mdex_native wykryto podatność polegającą na braku zwalniania pamięci po zakończeniu jej użytkowania. Atakujący może wysłać dokument zawierający znaczniki escaped-tag, co powoduje trwały wyciek pamięci w natywnym kodzie renderującym (Rust NIF). Każde renderowanie takiego dokumentu prowadzi do nieograniczonego wzrostu zużycia pamięci, aż do wyczerpania zasobów i awarii procesu BEAM.
- CVE-2026-53426Wysokie
Podatność w bibliotece MDEx dla Elixira/Erlanga pozwala na wyczerpanie tablicy atomów poprzez przetworzenie specjalnie spreparowanego dokumentu JSON. Funkcja json_to_node/1 tworzy nowe atomy dla każdej unikalnej wartości node_type, które nie są usuwane przez garbage collector, co prowadzi do awarii całej maszyny wirtualnej BEAM.
Oryginalny opis (angielski, źródło NVD)
Uncontrolled Recursion vulnerability in leandrocp mdex allows denial of service via deeply nested Markdown input. mdex converts between an Elixir %MDEx.Document{} struct and Comrak's internal AST using two mutually recursive Rust functions, ex_document_to_comrak_ast and comrak_ast_to_ex_document, in the NIF source file document.rs. Neither function enforces a maximum nesting depth, so the recursion depth is bounded only by the structure of the input. An attacker who can get a Markdown document rendered (for example through MDEx.parse_document!/1 or MDEx.to_html/1) can supply a document with thousands of nested block quotes, which drives unbounded recursion across the NIF boundary and exhausts the native C stack. Because the resulting stack overflow is an uncatchable SIGSEGV raised inside a NIF, it cannot be contained by the Erlang runtime. It terminates the operating system process running the BEAM, killing every Elixir and Erlang process on the node, not just the caller that triggered the render. No authentication or special privileges are required. The vulnerable conversion code was extracted from mdex into the separate mdex_native package starting in mdex 0.12.3. This issue affects mdex from 0.3.0 before 0.12.3 and mdex_native from 0.1.0 before 0.2.3.

