Zagrożenie bezpieczeństwa w n8n: nowa luka umożliwia zdalny dostęp dla napastników
Badacze zajmujący się cyberbezpieczeństwem ujawnili szczegóły dotyczące kolejnej luki w zabezpieczeniach w systemie n8n, popularnej platformie do automatyzacji procesów roboczych. Ta poważna podatność, oznaczona jako CVE-2026-21858 (wynik CVSS: 10.0), została nazwana Ni8mare przez Cyera Research Labs. Odkrywca luki, Dor Attias, został wyróżniony za zgłoszenie problemu 9 listopada 2025 roku.
Jak poinformowało n8n w swoim dzisiejszym komunikacie, „Podatność w n8n pozwala atakującemu uzyskać dostęp do plików na serwerze poprzez wykonanie pewnych formularzy roboczych.” Luka ta umożliwia zdalnemu napastnikowi bez uwierzytelnienia dostęp do wrażliwych informacji przechowywanych w systemie, co może prowadzić do dalszego naruszenia bezpieczeństwa w zależności od konfiguracji wdrożenia i użycia workflow.
To już czwarta krytyczna luka ujawniona przez n8n w ciągu ostatnich dwóch tygodni, w tym:
- CVE-2025-68613 (wynik CVSS: 9.9) – nieprawidłowe zarządzanie dynamicznymi zasobami kodu, które mogłoby pozwolić uwierzytelnionym atakującym na zdalne wykonanie kodu (naprawiono w wersjach 1.120.4, 1.121.1 i 1.122.0).
- CVE-2025-68668 lub N8scape (wynik CVSS: 9.9) – luka umożliwiająca obejście piaskownicy, która mogłaby umożliwić uwierzytelnionemu użytkownikowi z uprawnieniami tworzenia lub modyfikacji workflow wykonanie dowolnych poleceń na systemie hosta (naprawiono w wersji 2.0.0).
- CVE-2026-21877 (wynik CVSS: 10.0) – brak ograniczeń przy przesyłaniu plików z niebezpiecznym typem, co mogłoby pozwolić uwierzytelnionemu atakującemu na wykonanie nieufnego kodu za pośrednictwem serwisu n8n (naprawiono w wersji 1.121.3).
W przeciwieństwie do poprzednich luk, CVE-2026-21858 nie wymaga żadnych danych uwierzytelniających i korzysta z luki w rozpoznawaniu „Content-Type” do wyciągania wrażliwych sekretów, fałszowania dostępu administracyjnego oraz wykonywania dowolnych poleceń na serwerze.
Wszyscy użytkownicy n8n powinni zwrócić uwagę, że podatność ta dotyczy wszystkich wersji przed 1.65.0 włącznie, ale została załatana w wersji 1.121.0, wydanej 18 listopada 2025 roku. Warto zauważyć, że najnowsze wersje tej biblioteki to 1.123.10, 2.1.5, 2.2.4 oraz 2.3.0.
Jak wskazano w szczegółach technicznych przekazanych przez Cyera portalowi The Hacker News, problem leży w mechanizmie obsługi webhooków i plików w n8n. Webhooki, które są kluczowe do odbierania danych z aplikacji i usług przy zachodzących zdarzeniach, są aktywowane po sparsowaniu nadchodzącego żądania przy użyciu funkcji „parseRequestBody().”
Funkcja ta jest zaprojektowana do odczytywania nagłówka „Content-Type” w żądaniu i wywoływania innej funkcji do parsowania ciała żądania:
- Używa parseFormData(), zwanej również „parserem przesyłania plików”, jeżeli nagłówek „Content-Type” jest „multipart/form-data”, co oznacza formularz danych.
- Używa parseBody(), znanej jako „zwykły parser ciała”, dla wszystkich innych typów zawartości.
Parser przesyłania plików z kolei używa funkcji parse() związanej z modułem formidable w Node.js do parsowania danych formularza i przechowuje wynik w zmiennej globalnej „req.body.files.” Przetworzone dane są dalej używane przez webhook, który działa tylko wtedy, gdy nagłówek „Content-Type” jest ustawiony na „multipart/form-data.” W przeciwieństwie do tego, zwykły parser ciała przetwarza ciało nadchodzącego żądania HTTP i przechowuje wydobyte dane w innej globalnej zmiennej zwanej „req.body.”
CVE-2026-21858 ma miejsce, gdy funkcja obsługi plików jest wywoływana bez wcześniejszego weryfikowania, że typ zawartości to „multipart/form-data”, co potencjalnie pozwala atakującemu na nadpisanie obiektu req.body.files. Cyera zauważyła, że napotkała taki wrażliwy przepływ w funkcji obsługującej przesłania formularzy („formWebhook()”), która wywołuje funkcję obsługi plików („copyBinaryFile()”) do działania na „req.body.files.”
„Właśnie w tym tkwi problem: ponieważ ta funkcja jest wywoływana bez weryfikacji, że typ zawartości to 'multipart/form-data’, kontrolujemy cały obiekt req.body.files,” powiedział Attias. „To oznacza, że kontrolujemy parametry ścieżki plików, więc zamiast kopiować przesłany plik, możemy skopiować dowolny lokalny plik z systemu.”
Jak może wyglądać atak, przedstawmy to na przykładzie strony internetowej, która ma interfejs czatu służący do dostarczania informacji o różnych produktach w oparciu o pliki specyfikacji produktów przesyłane do bazy wiedzy organizacji przy użyciu workflow formularzy. W takim przypadku złośliwy aktor może wykorzystać lukę bezpieczeństwa, aby uzyskać dostęp do dowolnych plików z instancji n8n i dalej eskalować to do zdalnego wykonania kodu, wykonując następujące kroki:
- Używa arbitralnego odczytu, aby uzyskać dostęp do bazy danych znajdującej się w „/home/node/.n8n/database.sqlite” i załadować ją do bazy wiedzy.
- Wydobywa identyfikator użytkownika administratora, adres e-mail oraz zhashowane hasło przy użyciu interfejsu czatu.
- Używa arbitralnego odczytu ponownie, aby załadować plik konfiguracyjny znajdujący się w „/home/node/.n8n/config” i wydobyć klucz sekretu szyfrowania.
- Wykorzystuje uzyskane informacje o użytkowniku i kluczu do sfałszowania fałszywego ciasteczka sesyjnego, uzyskując dostęp administracyjny, co prowadzi do obejścia uwierzytelniania.
- Osiąga zdalne wykonanie kodu, tworząc nowy workflow z węzłem „Wykonaj polecenie.”
„Zasięg kompromitacji instancji n8n jest ogromny,” powiedziała Cyera. „Skopromitowana instancja n8n to nie tylko utrata jednego systemu – to oddanie w ręce atakujących kluczy do wszystkiego. Poświadczenia API, tokeny OAuth, połączenia z bazą danych, przechowywanie w chmurze – wszystko skoncentrowane w jednym miejscu. n8n staje się pojedynczym punktem awarii i skarbnicą dla zagrożeń.”
W związku z powagą luki, użytkownicy powinni jak najszybciej zaktualizować do poprawionej wersji lub nowszej, aby zapewnić odpowiednią ochronę. Zaleca się unikanie wystawiania n8n do internetu oraz wymuszanie uwierzytelnienia dla wszystkich formularzy. Jako tymczasowe rozwiązania, warto ograniczyć lub wyłączyć publicznie dostępne punkty końcowe webhooków i formularzy.











