Wysoka

ApostropheCMS: Nieuwierzytelnione żądania importu CSV pozostawiają odrzucone pliki w systemowym katalogu tymczasowym

  • Ujawniono: 20.10.2026
  • Aktualizacja: 20.10.2026 21:26

Podsumowanie

Odrzucony plik może pozostać w katalogu tymczasowym systemu operacyjnego.

Multer zapisuje plik przed zweryfikowaniem jego rozszerzenia, a ścieżka obsługi odrzucenia nie usuwa tego pliku tymczasowego. Nieuwierzytelniony użytkownik może powtarzać tę operację z użyciem dużych plików i stopniowo wyczerpywać przestrzeń dyskową na pliki tymczasowe.

Szczegóły

Punkt końcowy (endpoint):

POST /api/v1/@apostrophecms/rich-text-widget/generate-csv-table

W packages/apostrophe/modules/@apostrophecms/rich-text-widget/lib/apiRoutes.js Multer najpierw zapisuje przesyłany plik do os.tmpdir(). Następnie procedura obsługi odrzuca nazwy plików, których rozszerzenie jest inne niż csv, jednak na tej ścieżce błędu brakuje czyszczenia pliku zapisanego przez Multer.

Ścieżka ta nie wymaga uwierzytelnionego użytkownika. Wystarczy standardowe ciasteczko CSRF.

Podczas testów żądanie zwróciło odpowiedź HTTP 400 z Only csv files are supported, podczas gdy cała przesłana zawartość pozostała po odpowiedzi w pliku o losowej nazwie w skonfigurowanym katalogu tymczasowym.

Związek z wcześniejszymi pracami publicznymi

Przeanalizowano PR #5013,, w ramach którego ścieżka przesyłania plików CSV w formacie Rich Text została zmigrowana z connect-multiparty do biblioteki Multer. Niniejsze zgłoszenie dotyczy czyszczenia po tej migracji: odrzucony plik Multer pozostaje na dysku, co nie zostało opisane w PR ani w powiązanej dyskusji w ramach przeglądu kodu.

Dowód koncepcji (PoC)

Utwórz mały plik testowy. Do zademonstrowania zapełniania dysku można użyć większego pliku, lecz 1 MiB wystarcza do bezpiecznego lokalnego odtworzenia problemu:

bash
dd if=/dev/zero of=rejected.txt bs=1M count=1

Pobierz standardowe ciasteczka witryny i wyślij odrzucany plik:

bash
curl -c cookies.txt 'http://127.0.0.1:3000/' > /dev/null

curl -i -b cookies.txt \
  -F 'file=@rejected.txt;filename=rejected.txt;type=text/plain' \
  'http://127.0.0.1:3000/api/v1/@apostrophecms/rich-text-widget/generate-csv-table'

Odpowiedź to HTTP 400. Porównaj zawartość systemowego katalogu tymczasowego przed i po żądaniu:

bash
ls -lt /tmp

Nowy plik o losowej nazwie pozostaje na dysku i zawiera przesłane bajty.

Logowanie nie jest wymagane. Powtarzanie żądania multipart tworzy kolejne trwałe pliki tymczasowe.

Wpływ

Zdalny, nieuwierzytelniony atakujący może zapełnić partycję używaną przez katalog tymczasowy systemu operacyjnego. Po wyczerpaniu miejsca na tej partycji Apostrophe oraz inne, niezwiązane usługi na tym samym hoście mogą nie być w stanie przesyłać plików, tworzyć danych tymczasowych ani kontynuować normalnego działania.

Atak wymaga jedynie powtarzania żądań HTTP, a zapisane pliki pozostają na dysku po każdej odrzuconej odpowiedzi.

Co trzeba zrobić

Zaktualizuj ApostropheCMS do wersji 4.33.0 lub nowszej.

Czego dotyczy

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

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm apostrophe < 4.33.0 4.33.0

Odnośniki

Ocena CVSS 7.5/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Słabość (CWE)
CWE-400, CWE-459, CWE-770
Platforma
npm
Paczka
apostrophe
Ujawniono
20.10.2026
Aktualizacja
20.10.2026 21:26

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

OSV / GitHub Advisory Database - GHSA-qhcq-9pm2-c9w9 - CC BY 4.0

Historia podatności: apostrophe

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

Wszystkie (27) w archiwum
Wszystkich wpisów
27
Pierwsza → ostatnia
09.2020 10.2026
Bez poprawki
4
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 2
  • Wysoka 8
  • Średnia 13
  • Niska 4

Ujawnienia w latach

  1. 2020: 2
  2. 2021: 2
  3. 2022: 0
  4. 2023: 0
  5. 2024: 0
  6. 2025: 0
  7. 2026: 23
Istotność:
  1. ApostropheCMS: Nieuwierzytelnione żądania importu CSV pozostawiają odrzucone pliki w systemowym katalogu tymczasowym ten wpis
    Wysoka · 7.5 CVE-2026-113658 < 4.33.0 4.33.0
  2. Wysoka · 7.3 CVE-2026-45011 = 4.29.0 brak poprawki
  3. Krytyczna · 9.8 CVE-2021-25979 >= 2.63.0, < 3.4.0 3.4.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.