Ten wpis opisuje podatność CVE-2026-33017 w Langflow, narzędziu do budowania i wdrażania agentów oraz przepływów opartych na sztucznej inteligencji. Z tekstu dowiesz się, na czym luka polega, dlaczego agencja CISA wpisała ją do katalogu aktywnie wykorzystywanych podatności pięć dni po publikacji rekordu i jakie działania powinien podjąć zespół odpowiedzialny za systemy, w których Langflow działa.
Co się stało: zdalne wykonanie kodu bez logowania
Langflow pozwala składać aplikacje AI z gotowych bloków, zwanych węzłami, i uruchamiać je jako przepływy. Część węzłów zawiera kod w języku Python, który serwer wykonuje przy budowaniu przepływu.
Podatność znajduje się w punkcie końcowym POST /api/v1/build_public_tmp/{flow_id}/flow. Ten adres z założenia działa bez uwierzytelnienia, bo obsługuje publiczne przepływy, czyli takie, które twórca chce udostępnić osobom bez konta.
Mechanizm błędu jest prosty. Gdy wywołujący poda opcjonalny parametr data, punkt końcowy używa danych przepływu przesłanych w żądaniu, zamiast definicji zapisanej w bazie. Kod Pythona zawarty w dostarczonych definicjach węzłów trafia bezpośrednio do funkcji exec(), bez żadnego sandboxowania, czyli izolacji od reszty systemu. Wynik to nieuwierzytelnione zdalne wykonanie kodu: atakujący uruchamia własny program na serwerze, nie mając konta ani uprawnień.
Warunek wykorzystania jest jeden: instancja Langflow musi być osiągalna sieciowo. Nie jest potrzebna żadna interakcja użytkownika.
Element | Szczegóły |
|---|
Identyfikator | CVE-2026-33017 |
Produkt | Langflow (dostawca langflow-ai, według bazy ENISA) |
Podatny punkt końcowy | POST /api/v1/build_public_tmp/{flow_id}/flow |
Klasy słabości | CWE-94 (wstrzyknięcie kodu), CWE-95 (dynamiczna ewaluacja kodu), CWE-306 (brak uwierzytelnienia dla krytycznej funkcji) |
Ocena NVD | 9,8 na 10, poziom krytyczny (CVSS 3.1) |
Ocena CNA | 9,3 na 10, poziom krytyczny (CVSS 4.0) |
Publikacja rekordu NVD | 20 marca 2026 |
Wpis do katalogu CISA KEV | 25 marca 2026 |
Termin wymaganego działania w KEV | 8 kwietnia 2026 |
Status wpisu | aktywny (wersja katalogu z 21 sierpnia 2026) |
O co chodzi w prostych słowach
Wyobraź sobie recepcję, która na życzenie gościa odczytuje dokument z firmowego archiwum. Gość nie musi się legitymować, bo usługa jest celowo publiczna. Luka przypomina dodatkowe pole w formularzu: „albo podaj własną treść”. Gdy gość je wypełni, recepcja wykonuje polecenia z jego kartki, zamiast sięgnąć po dokument z archiwum. W przypadku Langflow „kartką” jest definicja przepływu z kodem Pythona, a „wykonaniem” jest uruchomienie tego kodu na serwerze z uprawnieniami procesu.
Scenariusz | Zgodnie z założeniem | Z wykorzystaniem luki |
|---|
Skąd pochodzi uruchamiana definicja przepływu | Z bazy, zapisana przez twórcę | Z żądania, dostarczona przez atakującego |
Kto decyduje o treści kodu | Właściciel przepływu | Dowolna osoba, która widzi adres serwera w sieci |
Co serwer robi z kodem w węzłach | Uruchamia kod z zapisanej definicji | Przekazuje obcy kod do exec() bez izolacji |
Wymagane konto | Brak, bo punkt końcowy jest publiczny | Nadal brak, a atakujący wykonuje własny kod |
Jak wygląda atak krok po kroku
Etap | Działanie atakującego | Reakcja serwera |
|---|
1 | Znajduje w sieci osiągalną instancję Langflow | Brak, to zwykły ruch sieciowy |
2 | Wysyła żądanie POST na podatny adres z własnym parametrem data | Żądanie zostaje przyjęte bez logowania |
3 | W definicjach węzłów umieszcza własny kod Pythona | Serwer buduje przepływ z przesłanych danych |
4 | Czeka na wykonanie kodu | Kod trafia do exec() i działa z uprawnieniami procesu Langflow |
Trzy fakty podnoszą wagę sytuacji. Po pierwsze, według NVD publicznie dostępny jest opis sposobu wykorzystania: baza oznacza dwa odsyłacze znacznikiem Exploit. Po drugie, ocena SSVC koordynatora CISA z 26 marca 2026 to: exploitation active (luka jest wykorzystywana), automatable yes (atak nadaje się do automatyzacji), technicalImpact total (pełny wpływ techniczny). Po trzecie, według danych FIRST wynik EPSS z 23 sierpnia 2026 wynosi 0,96177 przy percentylu 0,99876. Model EPSS szacuje więc prawdopodobieństwo wykorzystania na około 96 procent, a ta podatność plasuje się wśród ułamka procenta najwyżej ocenianych rekordów.
CISA nie potwierdza natomiast powiązania tej luki z kampaniami ransomware: pole knownRansomwareCampaignUse w katalogu KEV ma wartość Unknown.
Co jest zagrożone
Zdalne wykonanie kodu oznacza, że atakujący działa na serwerze z uprawnieniami procesu Langflow. Pełny wpływ techniczny (technicalImpact total w ocenie CISA) oznacza, że przejmuje kontrolę nad tym procesem, a przez to nad danymi, które proces obsługuje.
Wskaźnik | Wartość | Źródło |
|---|
CVSS 3.1 | 9,8, krytyczny | NVD |
CVSS 4.0 | 9,3, krytyczny | CNA (GitHub) |
EPSS na 23 sierpnia 2026 | 0,96177, percentyl 0,99876 | FIRST |
Ocena SSVC z 26 marca 2026 | active, automatable, total | koordynator CISA |
Potwierdzona eksploatacja od | 25 marca 2026 | ENISA (EUVD-2026-13556) |
Tomasz Kaczmarek
Mogę Ci jakoś pomóc?
Katalog KEV to lista podatności, których wykorzystanie w praktyce CISA potwierdziła. CVE-2026-33017 trafiło tam pięć dni po publikacji rekordu, pod nazwą Langflow Code Injection Vulnerability, a wpis pozostaje aktywny. Dla firm prywatnych obecność w tym katalogu jest sygnałem, że łatanie nie cierpi zwłoki, bo ataki nie są teoretyczną możliwością, tylko obserwowanym zjawiskiem.
Co zrobić: wersje i działania
Według opisu CNA podatne są wersje wcześniejsze niż 1.9.0, a naprawa trafiła do wersji 1.9.0. Tę samą granicę powtarza baza ENISA. Konfiguracja CPE w NVD wskazuje węższy zakres (podatne poniżej 1.8.2) i tej rozbieżności nie udało się rozstrzygnąć. Bezpieczna interpretacja: aktualizacja co najmniej do wersji 1.9.0. NVD oznacza ponadto odsyłacz do repozytorium producenta znacznikiem Patch, wskazując na pojedynczy commit naprawczy.
Uwaga dla zespołów, które łatały Langflow wcześniej: według NVD ta podatność jest odrębna od CVE-2025-3248, naprawionej przez dodanie uwierzytelnienia do punktu końcowego /api/v1/validate/code. Tamta łatka nie chroni przed tą luką.
Priorytet | Działanie | Uzasadnienie |
|---|
NATYCHMIAST | Ustal, czy w organizacji działa Langflow i w jakiej wersji | Podatne są wersje wcześniejsze niż 1.9.0 (według opisu CNA) |
NATYCHMIAST | Sprawdź, czy instancja przyjmuje połączenia z internetu | Warunkiem ataku jest wyłącznie sieciowa dostępność instancji |
NATYCHMIAST | Zaplanuj aktualizację do wersji 1.9.0 lub nowszej | Według opisu CNA i ENISA tam trafiła naprawa; CISA wyznaczyła termin 8 kwietnia 2026 |
PILNE | Zweryfikuj, czy ktoś nie uznał tematu za zamknięty po łatce na CVE-2025-3248 | To inna podatność i inny punkt końcowy (według NVD) |
PILNE | Do czasu aktualizacji ogranicz dostęp sieciowy do instancji | Zawęża warunek ataku, ale nie zastępuje łatki; potwierdzonego obejścia innego niż aktualizacja nie ma |
Pytania kontrolne dla zespołu IT
- Czy w firmowej infrastrukturze działa Langflow, wliczając środowiska testowe i deweloperskie?
- W jakiej wersji i czy jest ona wcześniejsza niż 1.9.0?
- Czy instancja jest osiągalna z internetu albo z sieci dostępnej dla osób spoza zespołu?
- Czy aktualizacja ma przypisaną datę i właściciela?
- Czy po wdrożeniu wersji 1.9.0 zweryfikowano, że żadna instancja nie została pominięta?
Podsumowanie: luka o ocenie 9,8, z publicznym opisem wykorzystania i potwierdzoną aktywną eksploatacją, dotyczy funkcji, która z założenia działa bez logowania. Instancja Langflow widoczna w sieci jest przez nią otwartym wejściem na serwer. Według opisu CNA aktualizacja do wersji 1.9.0 zamyka ten wektor; wszystko inne jest jedynie ograniczaniem narażenia do czasu łatki.