CVE-2026-93710
NieznaneStreszczenie
Dancer2 w wersjach od 2.0.0 do przed 2.2.0 dla Perla wykonuje trasę, którą umierający hook odrzucił, gdy handler wyjątku zatrzymuje odpowiedź w compile_hooks. Handler, który zatrzymuje odpowiedź, nie zatrzymuje procesu czyszczenia, co prowadzi do wykonania odrzuconej trasy. Obejście to może pozwolić na ominięcie kontroli w hooku before.
Ocena ryzyka
Ryzyko to możliwość ominięcia kontroli bezpieczeństwa zaimplementowanych w hookach, co może prowadzić do nieautoryzowanego dostępu lub wykonania niepożądanych operacji.
Rekomendacja
Zaleca się aktualizację Dancer2 do wersji 2.2.0 lub nowszej oraz przegląd logiki hooków, aby zapewnić, że zatrzymanie odpowiedzi faktycznie przerywa przetwarzanie.
Inne podatności w Dancer2
Zobacz wszystkie- CVE-2026-93712Nieznane
Dancer2 w wersjach od 2.1.0 do przed 2.2.0 dla Perla serwuje pliki spoza public_dir przez względne segmenty ścieżki w handlerze trasy File. Handler łączy ścieżkę żądania z public_dir bez usuwania segmentów względnych, co pozwala na dostęp do plików poza katalogiem publicznym. Handler jest domyślnie wyłączony, ale aplikacja jest zagrożona, gdy włączy File w route_handlers i ustawi static_handler na 0.
- CVE-2026-93711Nieznane
Dancer2 w wersjach przed 2.2.0 dla Perla nie usuwa znaków CR i LF z nazw nagłówków odpowiedzi w funkcji headers_to_array. Rutynowo usuwa CR i LF z wartości nagłówka, ale nie z nazwy, co pozwala na wstrzyknięcie dodatkowych nagłówków i podział odpowiedzi. Aplikacja musi wyprowadzać nazwę nagłówka z danych żądania.
- CVE-2026-93709Nieznane
Dancer2 w wersjach przed 2.2.0 dla Perla serwuje layout jako stronę, gdy równoważna pisownia jego ścieżki omija zabezpieczenie w handlerze AutoPage. Handler porównuje ścieżkę żądania z nazwą katalogu layoutu jako tekst, podczas gdy późniejsze wyszukiwanie kanonizuje ścieżkę. Podwójny slash, segment kropki, zakodowany procentowo slash lub inna wielkość liter na systemie plików bez rozróżniania wielkości liter omija zabezpieczenie.
- CVE-2026-13577Wysokie
Wersje Dancer2 dla Perla przed 2.2.0 generują niezabezpieczone identyfikatory sesji, gdy wymagane moduły CSPRNG są niedostępne. W takim przypadku następuje cichy powrót do identyfikatora sesji opartego na wbudowanej funkcji rand, która ma niską entropię i jest łatwa do odgadnięcia. Przewidywalne identyfikatory sesji mogą umożliwić atakującemu uzyskanie dostępu do systemu.
Oryginalny opis (angielski, źródło NVD)
Dancer2 versions from 2.0.0 before 2.2.0 for Perl dispatch a route that a dying hook refused when the exception handler halts the response in compile_hooks. A hook that dies fires core.app.hook_exception, then calls cleanup unless the failing hook is the exception handler. A handler that halts does not stop that cleanup, which discards the request, response and session the dispatcher has yet to read, so the refused route runs. The handler has to halt the response object by calling its halt method or setting is_halted: the halt keyword unwinds through with_return before cleanup runs. A check in a before hook is not enforced: the caller gets the refusal, while the route body runs and its writes land.

