OpenNext Cloudflare: Przechwytywanie pamięci podręcznej może ominąć ochronę middleware dla zakodowanych ścieżek
Podsumowanie
Gdy przechwytywanie pamięci podręcznej jest włączone, @opennextjs/cloudflare może odmiennie interpretować ścieżki zakodowane procentowo (percent-encoded) podczas dopasowywania middleware oraz podczas wyszukiwania w pamięci podręcznej.
Zakodowane żądanie może nie pasować do reguł middleware autoryzacyjnego, a następnie zostać zdekodowane do klucza pamięci podręcznej chronionej trasy. W rezultacie zbuforowana odpowiedź może zostać zwrócona bez wywołania middleware.
enableCacheInterception jest domyślnie wyłączone.
Wpływ
Zdalny, nieuwierzytelniony atakujący może pobrać zbuforowaną zawartość tras, które miały być chronione przez middleware.
Aplikacja jest podatna, gdy:
- jawnie włącza
enableCacheInterception; - polega na middleware w zakresie kontroli dostępu; oraz
- posiada pasującą trasę w pamięci podręcznej.
Szczegóły
Dopasowywanie middleware używało wcześniej zakodowanej ścieżki żądania, podczas gdy mechanizm przechwytywania pamięci podręcznej dekodował ścieżkę przed wyborem wpisu z pamięci podręcznej.
Dla przykładu rozważmy aplikację zawierającą:
- wzorzec dopasowania middleware
/admin/:path*; - middleware zwracający
401 Authentication requireddla/admin; - statycznie wygenerowaną, zbuforowaną trasę
/admin; oraz - włączone przechwytywanie pamięci podręcznej:
export default defineCloudflareConfig({
incrementalCache: staticAssetsIncrementalCache,
enableCacheInterception: true,
});
Atakujący może wysłać żądanie:
GET /%61dmin
Zakodowana ścieżka nie pasuje do /admin/:path*, przez co middleware autoryzacyjny nie zostaje wywołany. Następnie przechwytywanie pamięci podręcznej dekoduje %61dmin do admin i może zwrócić zbuforowaną odpowiedź dla /admin:
HTTP/1.1 200 OK
x-opennext-cache: HIT
Protected content
Nieprawidłowo sformatowane ścieżki ujawniły dodatkową niespójność. Na przykład:
GET /%61dmin/%ZZ
Poprzednia implementacja dekodowała każdy segment niezależnie. Dekodowała ona %61dmin do admin, lecz zachowywała uszkodzony segment %ZZ, co pozwalało na kontynuowanie wyszukiwania w pamięci podręcznej z użyciem częściowo zdekodowanej ścieżki.
Poprawki
Poprawka ujednolica obsługę zakodowanych ścieżek między dopasowywaniem middleware a wyszukiwaniem w pamięci podręcznej oraz odrzuca nieprawidłowo sformatowane ścieżki zamiast częściowo je dekodować. Zobacz poprawki upstream w opennextjs-aws#1199 i opennextjs-aws#1200..
Użytkownicy powinni dokonać aktualizacji do wersji @opennextjs/cloudflare@1.20.2 lub nowszej.
Co trzeba zrobić
Zaktualizuj do wersji @opennextjs/cloudflare@1.20.2 lub nowszej. Jeśli natychmiastowa aktualizacja nie jest możliwa, zastosuj następujące obejścia:
- Wyłącz przechwytywanie pamięci podręcznej poprzez usunięcie
enableCacheInterception: true. - Wymuś autoryzację bezpośrednio w procedurach obsługi chronionych tras, zamiast polegać wyłącznie na middleware.
- Odrzucaj zakodowane ścieżki prowadzące do chronionych tras na poziomie zaufanego serwera proxy, zanim dotrą one do usługi Worker.
Dodanie poszczególnych zakodowanych wariantów dopasowań nie stanowi pełnego rozwiązania, ponieważ ścieżki mogą mieć wiele równoważnych reprezentacji.
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Paczka npm | @opennextjs/cloudflare | >= 0.3.0, < 1.20.2 | 1.20.2 |
Odnośniki
- https://github.com/opennextjs/opennextjs-cloudflare/security/advisories/GHSA-2vc4-c4r6-p6v6
- https://nvd.nist.gov/vuln/detail/CVE-2026-100409
- https://github.com/opennextjs/opennextjs-aws/pull/1199
- https://github.com/opennextjs/opennextjs-aws/pull/1200
- https://github.com/opennextjs/opennextjs-cloudflare/commit/38ea40b669be272ddf09a7df7e70c69d0b57404b
- https://github.com/opennextjs/opennextjs-cloudflare
- https://github.com/opennextjs/opennextjs-cloudflare/releases/tag/@opennextjs/cloudflare@1.20.2
- Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N- Słabość (CWE)
CWE-177, CWE-180- Platforma
- npm
- Paczka
@opennextjs/cloudflare- Ujawniono
- 15.10.2026
- Aktualizacja
- 16.10.2026 08:00
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-2vc4-c4r6-p6v6 - CC BY 4.0
Historia podatności: @opennextjs/cloudflare
Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
- Wszystkich wpisów
- 2
- Pierwsza → ostatnia
- 06.2025 10.2026
- Bez poprawki
- 0
- Wykorzystywana w atakach
- 0
Rozkład istotności
- Wysoka 2
Ujawnienia w latach
- 2025: 1
- 2026: 1
-
OpenNext Cloudflare: Przechwytywanie pamięci podręcznej może ominąć ochronę middleware dla zakodowanych ścieżek ten wpis
Dowiedz się, które podatności dotyczą Twojej aplikacji
Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.