Langflow – platforma open-source, która pozwala programistom łączyć prompty LLM, źródła danych i niestandardowy kod Python – posiada krytyczną lukę, która umożliwia każdemu uruchomienie dowolnego kodu Python na podatnym serwerze. CVE-2026-33017, z oceną 9.8 w skali CVSS, dotyczy każdej wersji starszej niż 1.9.0 i może zostać wywołana bez uwierzytelnienia, co zmusza operatorów do aktualizacji lub wyłączenia funkcji „public flow”.

Na czym polega błąd

Punkt końcowy (endpoint) public-flow w Langflow był przeznaczony dla chatbotów typu demo, z których każdy może skorzystać bez logowania. Endpoint ten przyjmuje parametr data w ciele żądania, zakłada, że ładunek (payload) zawiera bezpieczną definicję przepływu, a następnie przekazuje zawartość bezpośrednio do wbudowanej w Pythonie funkcji exec(). Funkcja exec() interpretuje ciąg znaków jako kod i uruchamia go z tymi samymi uprawnieniami, co proces Langflow.

Atakujący potrzebuje jedynie identyfikatora public flow – wartości często widocznej w udostępnianych adresach URL – aby przygotować żądanie, które podmieni definicję przepływu na złośliwą. Gdy serwer przetwarza żądanie, wstrzyknięty kod Python uruchamia się natychmiast, dając atakującemu pełną kontrolę nad systemem hosta.

Jak doszło do powstania podatności

W wcześniejszych wersjach ścieżka kodu ładująca przepływ z bazy danych była omijana, gdy obecne było pole data. Zamiast sanitować lub walidować ładunek, serwer ufał wywołującemu i wykonywał go dosłownie. Ponieważ do punktu końcowego można uzyskać dostęp bez logowania, powierzchnia ataku obejmuje publiczny internet dla każdej instancji Langflow, która ma włączone publiczne przepływy.

Kto jest narażony

Biorąc pod uwagę wynik skali dotkliwości, podatność jest uznawana za „krytyczną”.

Natychmiastowe kroki łagodzące

  1. Aktualizacja do Langflow 1.9.0 – jest to jedyna zweryfikowana poprawka.
  2. Wyłączenie funkcji public flow, jeśli nie jest wymagany dostęp anonimowy.
  3. Wyłączenie AUTO_LOGIN – zatrzymuje to automatyczne tworzenie sesji dla nieuwierzytelnionych żądań.
  4. Umieszczenie API za firewallem lub reverse proxy, aby ograniczyć dostęp do zaufanych zakresów IP.
  5. Wdrożenie Web Application Firewall (WAF), który blokuje żądania do punktu końcowego build_public_tmp zawierające parametr data.

Dlaczego poprawka jest ważna

Podatność wykorzystuje fundamentalny błąd projektowy: ufanie kodowi dostarczonemu przez użytkownika w kontekście, który działa z wysokimi uprawnieniami. Poprzez usunięcie tego zaufania i wymuszenie surowszego przetwarzania danych wejściowych, Langflow 1.9.0 przywraca barierę między publicznymi użytkownikami demo a serwerem bazowym.

Na co zwrócić uwagę w przyszłości

  • Reakcja społeczności – monitoruj repozytorium Langflow pod kątem kolejnych poprawek lub komunikatów bezpieczeństwa.

Podsumowując: Każda instalacja Langflow udostępniająca punkt końcowy public-flow musi zostać dziś naprawiona. Do czasu uruchomienia wersji 1.9.0 należy wyłączyć tę funkcję i zabezpieczyć usługę za pomocą kontroli sieciowych. Koszt naruszenia bezpieczeństwa znacznie przewyższa wysiłek związany z szybką aktualizacją.