Średnia

ApostropheCMS import-export: Wstrzyknięcie NoSQL przez wartość update-key umożliwia dopasowanie i nadpisanie niezidentyfikowanego dokumentu

  • Ujawniono: 20.10.2026
  • Aktualizacja: 20.10.2026 21:27

Podsumowanie

Funkcja aktualizacji według klucza w @apostrophecms/import-export pozwala zaimportowanemu dokumentowi zawierać właściwość <field>:key (na przykład slug:key), której wartość służy do wyszukania istniejącego dokumentu w celu jego aktualizacji zamiast wstawiania nowego. getUpdateKey()/insertOrUpdateDocWithKey() (lib/methods/import.js) używają tej wartości bezpośrednio jako zapytania MongoDB bez wcześniejszej sanityzacji:

js
const matchingDraftPromise = manager.findForEditing(
  req.clone({ mode: 'draft' }),
  {
    aposMode: 'draft',
    [updateField]: doc[updateKey]
  }).toObject();

Dokumenty archiwum są parsowane za pomocą EJSON (zobacz lib/formats/gzip.js), który odtwarza obiekty, takie jak { $ne: null }, jako aktywne wartości. Jest to to samo niezaufane źródło danych i mechanizm odtwarzania, które zostały już wcześniej naprawione w tym module dla findSingletonAposDocId/findParkedAposDocId w GHSA-79qf-vqgc-7xx3. Poprawka ta nie objęła jednak insertOrUpdateDocWithKey, dlatego ten sam błąd występuje nadal: spreparowany wpis "slug:key": { "$ne": null } w aposDocs.json archiwum sprawia, że proces importu dopasowuje (a następnie aktualizuje) istniejący dokument, którego autor archiwum w rzeczywistości nie zidentyfikował, zamiast zakończyć się niepowodzeniem wyszukiwania.

Wpływ

Wykorzystanie tej podatności wymaga jedynie uwierzytelnionej sesji z uprawnieniami do importu dla danego typu obiektu (posiada je wbudowana rola contributor, co odpowiada warunkom wstępnym z GHSA-79qf-vqgc-7xx3) i nie wymaga interakcji administratora. Ponieważ dopasowanie wykorzystuje operator MongoDB zamiast dokładnej wartości, nie jest ono ograniczone do dokumentu, którego pole identyfikacyjne jest z góry znane importerowi: każdy istniejący dokument, do którego importer ma ogólne prawa edycji i który spełnia warunki operatora (co { $ne: null } spełnia dla każdego dokumentu z wartością inną niż null w tym polu), staje się kandydatem. Jedynym elementem zawężającym wybór nadpisywanego dokumentu jest filtr uprawnień findForEditing w Apostrophe, a nie logika klucza aktualizacji.

Zweryfikowano w działającym środowisku: żądanie roli contributor importujące dokument zawierający "slug:key": { "$ne": null } spowodowało zastosowanie jego zawartości do istniejącego, niepowiązanego szkicu artykułu i nadpisanie jego tytułu, mimo że importer nie wskazał rzeczywistego sluga tego artykułu.

Wersje dotknięte podatnością

Potwierdzono na gałęzi HEAD main z dnia 2026-09-04, packages/import-export/lib/methods/import.js.

Sugerowana poprawka

Przekształć doc[updateKey] w zwykły ciąg znaków (podobnie jak w poprawce zastosowanej do type/aposLocale/parkedId w GHSA-79qf-vqgc-7xx3) przed użyciem go jako wartości zapytania oraz przejdź do ścieżki wstawiania nowego rekordu, jeśli wartość nie jest poprawnym ciągiem znaków.

Co trzeba zrobić

Zaktualizuj pakiet @apostrophecms/import-export do wersji 3.7.0 lub nowszej.

Czego dotyczy

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

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm @apostrophecms/import-export < 3.7.0 3.7.0

Odnośniki

Ocena CVSS 5.4/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
Słabość (CWE)
CWE-284, CWE-943
Platforma
npm
Paczka
@apostrophecms/import-export
Ujawniono
20.10.2026
Aktualizacja
20.10.2026 21:27

Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.

OSV / GitHub Advisory Database - GHSA-jqw5-w6h3-44g6 - CC BY 4.0

Historia podatności: @apostrophecms/import-export

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

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

Rozkład istotności

  • Krytyczna 1
  • Średnia 3

Ujawnienia w latach

  1. 2026: 4
  1. ApostropheCMS import-export: Wstrzyknięcie NoSQL przez wartość update-key umożliwia dopasowanie i nadpisanie niezidentyfikowanego dokumentu ten wpis
    Średnia · 5.4 CVE-2026-113662 < 3.7.0 3.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.