
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
W ekosystemie narzędzi opartych na agentach AI rośnie znaczenie komponentów pośredniczących między modelem językowym a funkcjami systemowymi. Jednym z nich jest most MCP, który umożliwia modelowi wywoływanie narzędzi wykonawczych, operacji bazodanowych i mechanizmów pamięci. W platformie Ruflo wykryto krytyczną podatność, która pozwala nieautoryzowanemu atakującemu zdalnie uruchamiać polecenia w podatnej instancji, a następnie przejąć klucze API, odczytać rozmowy użytkowników i manipulować trwałą pamięcią systemu AI.
W skrócie
Podatność oznaczona jako CVE-2026-59726 dotyczy wszystkich wersji Ruflo wcześniejszych niż 3.16.3. Problem wynikał z domyślnej ekspozycji mostu MCP do sieci oraz braku uwierzytelnienia dla wywołań prowadzących do użycia narzędzia wykonującego polecenia systemowe. W praktyce pojedyncze żądanie HTTP POST mogło umożliwić zdalne wykonanie kodu.
- brak uwierzytelnienia dla wrażliwego endpointu MCP,
- możliwość zdalnego wykonania poleceń jednym żądaniem,
- ryzyko przejęcia kluczy API i historii konwersacji,
- możliwość zatrucia pamięci agentów AI i wpływu na przyszłe odpowiedzi.
Kontekst / historia
Ruflo to otwartoźródłowa platforma orkiestracji agentów AI, wcześniej rozwijana pod nazwą Claude Flow. Projekt służy do budowy wieloagentowych przepływów pracy, koordynacji zadań autonomicznych oraz integracji modeli językowych z narzędziami wykonawczymi. Wraz z popularyzacją takich platform rośnie również powierzchnia ataku, ponieważ łączą one logikę aplikacyjną, interfejsy API modeli, pamięć konwersacyjną, bazy danych oraz funkcje systemowe.
Badacze bezpieczeństwa ujawnili, że domyślna konfiguracja wdrożeniowa narażała instancje Ruflo na dostęp z sieci. Zgłoszenie przekazano opiekunowi projektu 30 czerwca 2026 roku, a poprawka została opublikowana szybko. Mimo sprawnej reakcji problem należy traktować jako szczególnie poważny, ponieważ w środowiskach AI skutki włamania mogą utrzymywać się także po usunięciu samej luki, jeśli wcześniej doszło do trwałej modyfikacji pamięci lub danych operacyjnych.
Analiza techniczna
Rdzeniem podatności był sposób, w jaki Ruflo udostępniał most Model Context Protocol. Domyślna konfiguracja wiązała usługę z adresem 0.0.0.0 na porcie 3001, co oznaczało nasłuch na wszystkich interfejsach sieciowych. Jeżeli instancja była osiągalna z sieci lokalnej, segmentu chmurowego lub internetu i nie była dodatkowo chroniona przez zaporę, atakujący mógł bez uwierzytelnienia komunikować się z endpointem MCP.
Najgroźniejszym elementem była możliwość wywołania narzędzia odpowiedzialnego za wykonanie poleceń powłoki. Wystarczało wysłać odpowiednio przygotowane żądanie typu JSON-RPC do endpointu MCP, aby uruchomić komendę w kontenerze mostu. Oznacza to, że luka nie ograniczała się do błędu logicznego na poziomie aplikacji, ale prowadziła bezpośrednio do pełnego zdalnego wykonania kodu w kontekście podatnego środowiska.
Skala problemu była jeszcze większa, ponieważ przez ten sam kanał dostępnych było wiele narzędzi operacyjnych. Podatny komponent eksponował 233 narzędzia obejmujące między innymi wykonywanie poleceń systemowych, operacje na bazie danych, zarządzanie agentami oraz mechanizmy pamięci. Po uzyskaniu dostępu atakujący mógł odczytać zmienne środowiskowe przechowujące klucze API do usług LLM, przeglądać dane rozmów, inicjować działania agentów na koszt ofiary, a także zapisywać złośliwe wpisy w trwałej pamięci systemu.
Szczególnie niebezpieczny jest aspekt związany z pamięcią AI. W tradycyjnym incydencie RCE celem jest zwykle przejęcie hosta, kradzież danych lub utrzymanie dostępu. W przypadku platform agentowych dochodzi możliwość modyfikacji wzorców, instrukcji lub danych wykorzystywanych przez agentów. Tego typu zatrucie pamięci może sprawić, że system będzie generował zmanipulowane odpowiedzi także po zakończeniu właściwego ataku, jeśli organizacja ograniczy się wyłącznie do aktualizacji oprogramowania.
Wersja 3.16.3 wprowadziła zmiany ograniczające wektor ataku. Most MCP został domyślnie przypięty do interfejsu loopback, wykonanie wybranych narzędzi zostało dodatkowo ograniczone po stronie serwera, a uwierzytelnianie MongoDB włączono, aby utrudnić nieuprawniony dostęp do danych konwersacyjnych i pamięci aplikacji.
Konsekwencje / ryzyko
Ocena ryzyka dla CVE-2026-59726 jest skrajnie wysoka, ponieważ podatność łączy kilka krytycznych cech: brak uwierzytelnienia, niski próg wykorzystania, możliwość zdalnego wykonania poleceń oraz dostęp do wrażliwych zasobów aplikacji AI. W praktyce podatna instancja mogła zostać całkowicie skompromitowana jednym żądaniem sieciowym.
- przejęcie kluczy API do dostawców modeli językowych,
- odczyt i potencjalny wyciek rozmów użytkowników,
- nadużycie zasobów przez uruchamianie agentów na infrastrukturze ofiary,
- trwałe osadzenie backdoora w kontenerze lub katalogach aplikacji,
- manipulacja pamięcią AI i przyszłymi odpowiedziami systemu,
- naruszenie integralności danych aplikacyjnych oraz bazy MongoDB.
Dla organizacji korzystających z agentów AI w procesach biznesowych oznacza to ryzyko operacyjne, finansowe i reputacyjne. Kradzież kluczy API może generować nieautoryzowane koszty, wyciek konwersacji może naruszać tajemnicę przedsiębiorstwa lub dane wrażliwe, a zatrucie pamięci może doprowadzić do długotrwałej utraty zaufania do wyników generowanych przez system.
Rekomendacje
Administratorzy i zespoły DevSecOps powinni w pierwszej kolejności zidentyfikować wszystkie instancje Ruflo działające w wersjach starszych niż 3.16.3 oraz sprawdzić, czy port 3001 był dostępny z niezaufanych segmentów sieci. Jeżeli taka ekspozycja występowała, środowisko należy traktować jako potencjalnie skompromitowane.
- niezwłocznie zaktualizować Ruflo do wersji 3.16.3 lub nowszej,
- zamknąć ekspozycję portów 3001 oraz 27017 na poziomie zapór, security groups i segmentacji sieci,
- ograniczyć dostęp do mostu MCP wyłącznie do localhost lub zaufanego kanału pośredniczącego,
- obrócić wszystkie klucze API używane do komunikacji z dostawcami LLM,
- przeprowadzić audyt bazy MongoDB oraz store’u pamięci AgentDB pod kątem nieautoryzowanych wpisów,
- odbudować kontenery z czystych obrazów zamiast polegać wyłącznie na restarcie usług,
- przeanalizować logi HTTP i logi aplikacyjne w poszukiwaniu wywołań endpointów MCP,
- wdrożyć kontrolę dostępu i uwierzytelnianie dla wszystkich interfejsów narzędziowych dostępnych dla agentów,
- monitorować nietypowe użycie tokenów API i nagłe skoki kosztów usług LLM.
Długofalowo incydent ten pokazuje, że platformy agentowe powinny być projektowane zgodnie z zasadą minimalnego uprzywilejowania. Narzędzia umożliwiające wykonanie komend systemowych, dostęp do baz danych i trwałej pamięci nie powinny być publikowane w sieci bez silnego uwierzytelniania, autoryzacji i kontroli kontekstowej. W środowiskach produkcyjnych konieczne jest również rozdzielenie płaszczyzny sterowania agentami od zasobów danych i sekretów.
Podsumowanie
CVE-2026-59726 w Ruflo to przykład podatności, która dobrze pokazuje specyfikę zagrożeń w systemach AI agentowych. Z pozoru klasyczna luka RCE przeradza się tutaj w pełne przejęcie platformy, kradzież poświadczeń, dostęp do rozmów oraz możliwość długotrwałego wpływania na zachowanie modeli poprzez zatrucie pamięci. Dla zespołów bezpieczeństwa kluczowe jest nie tylko załatanie błędu, ale również potraktowanie pamięci AI i kluczy dostępowych jako elementów, które mogły już zostać naruszone.
Źródła
- Ruflo MCP Flaw Lets Unauthenticated Attackers Run Commands and Poison AI Memory — https://thehackernews.com/2026/07/ruflo-mcp-flaw-lets-unauthenticated.html
- CVE-2026-59726 — NVD — https://nvd.nist.gov/vuln/detail/CVE-2026-59726
- CVE-2026-59726.json — CVE Project — https://github.com/cveproject/cvelistV5/blob/main/cves/2026/59xxx/CVE-2026-59726.json