Średnia

ApostropheCMS: Nieodpowiednio ograniczone przesyłanie multipart bez uwierzytelnienia prowadzące do DoS przez wyczerpanie dysku

  • Ujawniono: 20.10.2026
  • Aktualizacja: 20.10.2026 21:23

Podsumowanie

Punkt końcowy przesyłania formularzy uruchamia multer({ dest: os.tmpdir() }).any() przed logiką uwierzytelniania, klucza API, odpowiednika CSRF lub weryfikacji istnienia formularza, bez limitów rozmiaru, liczby czy częstotliwości zapytań. Nieuwierzytelnieni użytkownicy mogą przesyłać nieograniczone treści żądań na dysk w ramach każdego żądania; czyszczenie następuje dopiero po odebraniu pełnej zawartości.

Szczegóły

packages/form/index.js apiRoutes.post.submit (L274–296): [ multer({ dest: os.tmpdir() }).any(), self.normalizeFiles, async function (req) { try { submitForm } finally { unlink files } } ]. Brak limits, brak limitowania zapytań (rate limiting) i brak wstępnej walidacji. „CSRF” to plik cookie o stałej wartości typu double-submit (vulnlab.csrf=csrf, ustawiany przy dowolnym GET, express/index.js L694–703) — łatwy do anonimowego uzyskania.

PoC

bash
$ curl -s -c csrfjar.cookies http://localhost:3100/        # get vulnlab.csrf=csrf (any GET)
$ df -P /tmp                                                # before: used=1105212
$ curl -b csrfjar.cookies -X POST http://localhost:3100/api/v1/@apostrophecms/form/submit \
      -F "file=@/tmp/opencode/big.bin;type=application/octet-stream" &
   DURING transfer:    used=1148668
   still transferring: used=1226936        # +121MB mid-transfer on disk
   http=500 time=1.78s sent=209715411B     # generic error AFTER full staging
# Anonymous, zero credentials. 200MB written to /tmp pre-validation.

Wpływ

Dowolny nieuwierzytelniony klient może zmusić serwer do zapisywania całych treści żądań w tymczasowym systemie plików i ich dekodowania przez procesor; równoległe żądania wyczerpują dysk /tmp (awaria procesu/hosta) oraz nasycają pętlę zdarzeń, powodując zdalny DoS. Przerwane transfery stwarzają ryzyko pozostawienia porzuconych plików tymczasowych (brak czyszczenia req.aborted).

Co trzeba zrobić

Zaktualizuj pakiet @apostrophecms/form do wersji 1.5.5 lub nowszej.

Ponadto należy ustawić limits dla multer (fileSize, fields, parts, fieldSize); przeprowadzać weryfikację uwierzytelnienia/ról/istnienia przed montowaniem multer lub wewnątrz sprawdzanego handlera; usuwać przygotowane pliki przy pierwszym odczycie oraz przy req.aborted/błędzie; a także dodać limitowanie zapytań per IP.

Czego dotyczy

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

PlatformaPaczkaPodatne wersjePoprawka w wersji
Paczka npm @apostrophecms/form < 1.5.5 1.5.5

Odnośniki

Ocena CVSS 5.3/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Słabość (CWE)
CWE-770
Platforma
npm
Paczka
@apostrophecms/form
Ujawniono
20.10.2026
Aktualizacja
20.10.2026 21:23

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

OSV / GitHub Advisory Database - GHSA-89mh-mm8c-mv7f - CC BY 4.0

Historia podatności: @apostrophecms/form

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
10.2026 10.2026
Bez poprawki
0
Wykorzystywana w atakach
0

Rozkład istotności

  • Średnia 2

Ujawnienia w latach

  1. 2026: 2
  1. ApostropheCMS: Nieodpowiednio ograniczone przesyłanie multipart bez uwierzytelnienia prowadzące do DoS przez wyczerpanie dysku ten wpis
    Średnia · 5.3 CVE-2026-113656 < 1.5.5 1.5.5

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.