CVE-2025-64526
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 41 - wyżej niż 41% wszystkich znanych CVE
Streszczenie
W Strapi w wersjach przed 5.45.0 middleware rate-limit w pluginie users-permissions budował klucz limitu m.in. na podstawie pola `ctx.request.body.email`, nawet na trasach, których schemat żądania nie zawiera pola email (np. /auth/local, /auth/reset-password, /auth/change-password). Nieuwierzytelniony atakujący mógł podać dowolną wartość email w treści żądania, uzyskując nowy klucz limitu przy każdym żądaniu i tym samym omijając ograniczenie liczby prób na IP. Umożliwiało to masowe ataki brute-force na dane logowania, kody resetowania hasła oraz credential stuffing.
Ocena ryzyka
Podatność pozwala na obejście ograniczeń tempa żądań i przeprowadzanie ataków brute-force oraz credential stuffing na konta użytkowników, co może prowadzić do przejęcia kont. Ryzyko jest wysokie, ponieważ atak nie wymaga uwierzytelnienia i jest łatwy do zautomatyzowania.
Rekomendacja
Zaktualizuj Strapi do wersji 5.45.0 lub nowszej, która wprowadza allow-listę tras używających pola email i stosuje stały klucz bez identyfikatora na pozostałych trasach. Do czasu aktualizacji rozważ dodatkowe ograniczenia na poziomie reverse proxy lub WAF dla tras uwierzytelniania.
Inne podatności w Strapi
Zobacz wszystkie- CVE-2026-27886Wysokie
Strapi to otwartoźródłowy system zarządzania treścią, który w wersjach od 4.0.0 do przed 5.37.0 nie wystarczająco sanitizował parametry zapytań przy filtrowaniu treści przez pola relacyjne. Atakujący bez uwierzytelnienia mógł wykorzystać parametr zapytania `where`, aby przeprowadzić atak boolean-oracle na prywatnych polach w tabeli `admin_users`, co umożliwiało przejęcie konta administratora.
- CVE-2023-22894ŚrednieAktywnie exploitowane
Strapi do wersji 4.5.5 pozwala atakującym z dostępem do panelu administracyjnego na odkrycie wrażliwych danych użytkowników poprzez wykorzystanie filtra zapytań. Atakujący może filtrować użytkowników po kolumnach zawierających wrażliwe informacje i wywnioskować wartości z odpowiedzi API. Super admin może odkryć hashe haseł i tokeny resetowania haseł wszystkich użytkowników.
- CVE-2026-108114Średnie
Strapi w wersjach od 5.47.0 do 5.57.0 zawiera podatność na nieprawidłową autoryzację, która pozwala tokenom API administratora zachować pełny dostęp do Menedżera Treści po ograniczeniu pól roli właściciela. Ponieważ funkcja reconcileTokenPermissionsToUserCeiling ignoruje uprawnienia tokenów z pominiętymi lub pustymi polami, posiadacze tokenów mogą nadal czytać pola treści, które administrator usunął z roli.
- CVE-2026-90561Wysokie
Strapi w wersjach 4.x do 4.26.2 oraz 5.x przed 5.48.1 zawiera podatność stored cross-site scripting w komponencie podglądu WYSIWYG menedżera treści, który nie usuwa znaczników script z tekstu sformatowanego. Użytkownik z rolą Author może zapisać złośliwe znaczniki script w polach tekstu sformatowanego, które wykonują się w sesji Editora lub Super Admina po rozwinięciu panelu podglądu, umożliwiając przejęcie konta.
- CVE-2026-57997Średnie
Wtyczka users-permissions w Strapi nie ogranicza algorytmów JWT, gdy parametr plugin::users-permissions.jwt.algorithm nie jest jawnie skonfigurowany, co pozwala na akceptację tokenów HS384 i HS512 obok domyślnego HS256. Atakujący posiadający jwtSecret może tworzyć tokeny z niestandardowymi wariantami HMAC, omijając ograniczenia algorytmów i osłabiając kontrolę uwierzytelniania.
- CVE-2026-22707Średnie
W Strapi w wersjach przed 5.33.3 punkty końcowe Content API wtyczki Upload nie egzekwowały skonfigurowanych przez administratora ograniczeń typu MIME. Uwierzytelniony użytkownik z uprawnieniem do uploadu przez Content API mógł przesłać zabronione typy plików, w tym HTML i SVG, co w domyślnej konfiguracji mogło prowadzić do przejęcia sesji administratora.
- CVE-2026-22706Średnie
W Strapi przed wersją 5.33.3 zmiana lub reset hasła użytkownika domyślnie nie unieważniały istniejących sesji refresh-token, ponieważ krok unieważniania zależał od dostarczonego przez wywołującego deviceId. Atakujący posiadający wcześniej refresh token mógł nadal generować nowe tokeny dostępu po resecie hasła przez prawowitego użytkownika, utrzymując nieautoryzowany dostęp do 30 dni. Poprawka w wersji 5.33.3 unieważnia wszystkie refresh tokeny przy każdej zmianie i resecie hasła.
- CVE-2026-22599Wysokie
W Strapi (gałęzie 4.x przed 4.26.1 i 5.x przed 5.33.2) uwierzytelniony administrator mógł wstrzyknąć dowolne polecenia SQL poprzez atrybut `column.defaultTo` w API Content-Type Builder, ustawiając go jako krotkę `[wartość, { isRaw: true }]`. W zależności od silnika bazy danych umożliwiało to odczyt plików, atak DoS lub zdalne wykonanie kodu na serwerze bazy danych.
- CVE-2025-53092Średnie
Strapi w wersjach przed 5.20.0 zawiera podatność na błędną konfigurację CORS w domyślnych instalacjach. Domyślnie Strapi odzwierciedla wartość nagłówka Origin w nagłówku odpowiedzi Access-Control-Allow-Origin bez odpowiedniej walidacji lub białej listy, co pozwala witrynie kontrolowanej przez atakującego wysyłać żądania z poświadczeniami do backendu Strapi. Podatność naprawiono w wersji 5.20.0.
- CVE-2025-3930Średnie
Strapi używa tokenów JWT do uwierzytelniania. Po wylogowaniu lub dezaktywacji konta token JWT nie jest unieważniany, co pozwala atakującemu, który ukradł lub przechwycił token, na jego ponowne użycie aż do daty wygaśnięcia (domyślnie 30 dni). Istnienie endpointu /admin/renew-token pozwala na nieograniczone odnawianie tokenów bliskich wygaśnięcia, co zwiększa wpływ ataku. Problem naprawiono w wersji 5.24.1.
Oryginalny opis (angielski, źródło NVD)
Strapi is an open source headless content management system. In Strapi versions prior to 5.45.0, the rate-limit middleware in the users-permissions plugin derived its rate-limit key in part from `ctx.request.body.email`, including on routes whose body schema does not contain an `email` field (`/auth/local`, `/auth/reset-password`, `/auth/change-password`). An unauthenticated attacker could include an arbitrary `email` value in the request body to obtain a fresh rate-limit key per request, effectively bypassing per-IP throttling on those routes and enabling high-volume credential brute-force, password-reset code brute-force, and credential-stuffing attempts. The rate-limit key was constructed as `${userIdentifier}:${requestPath}:${ctx.request.ip}`, where `userIdentifier = ctx.request.body.email`. On routes that legitimately use email as their identifier (e.g. `/auth/forgot-password`, `/auth/local/register`), this scoping is correct. On routes that use a different identifier (`identifier` for login, `code` for password reset, `currentPassword` for password change), the email field was not part of the route contract, but the middleware still incorporated it into the key, allowing a caller to rotate the value and obtain a unique key on every request. The patch in version 5.45.0 maintains an allow-list of routes that legitimately key on the email field and excludes that key component on every other route the middleware is mounted on. OAuth callback paths (`/connect/*`) are treated identifier-less. On routes outside the allow-list, the middleware now falls back to a fixed identifier-less key, ensuring per-IP throttling remains effective even when the request body is attacker-controlled.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

