Badacze cyberbezpieczeństwa wykryli krytyczną lukę w Ruflo, otwartoźródłowej platformie do orkiestracji wielu agentów AI oraz narzędziu współpracującym z Anthropic Claude Code i OpenAI Codex. Podatność, oznaczona jako CVE-2026-59726 i oceniona na 10.0 w skali CVSS, umożliwiała nieuwierzytelnionemu napastnikowi wykonanie kodu na odległość. Problem dotyczył wszystkich wersji projektu wcześniejszych niż 3.16.3.
Podatny most MCP był dostępny z sieci
Luka otrzymała nazwę RufRoot od zespołu Noma Labs, należącego do firmy Noma Security. Ruflo, wcześniej rozwijane pod nazwą Claude Flow, pozwala uruchamiać roje agentów, koordynować autonomiczne przepływy pracy oraz budować konwersacyjne systemy AI. Projekt ma ponad 66 500 gwiazdek w serwisie GitHub, dlatego podatność mogła dotyczyć wielu środowisk testowych i produkcyjnych.
Źródłem problemu była konfiguracja mostu Model Context Protocol, czyli warstwy pośredniczącej między platformą a narzędziami wykorzystywanymi przez agentów. Ruflo udostępniało przez ten most 233 narzędzia, w tym funkcje wykonywania poleceń powłoki, operacji na bazach danych, zarządzania agentami i przechowywania pamięci. Domyślna konfiguracja Docker Compose wiązała most z adresem 0.0.0.0, przez co mógł on nasłuchiwać na wszystkich interfejsach sieciowych.
- Podatne były wersje Ruflo wcześniejsze niż 3.16.3, a zagrożenie dotyczyło instancji osiągalnych z sieci.
- Brak uwierzytelnienia pozwalał na wywoływanie dostępnych narzędzi bez wcześniejszego zalogowania.
- Skutkiem mogło być wykonanie kodu w kontenerze, odczyt kluczy API oraz dostęp do rozmów użytkowników.
- Zakres ekspozycji zależał między innymi od reguł zapory, grup bezpieczeństwa i segmentacji sieci.
Przejęcie serwera mogło wpłynąć na odpowiedzi AI
Według opisu opublikowanego w bazie NIST atakujący, który uzyskał dostęp do podatnej instancji, mógł doprowadzić do uruchomienia powłoki w kontenerze mostu. Taki dostęp nie ograniczał się do samego procesu Ruflo. Napastnik mógł odczytać przechowywane w środowisku klucze dostawców modeli językowych, pobrać rozmowy zapisane na platformie i uruchamiać kontrolowane przez siebie roje agentów z wykorzystaniem cudzych poświadczeń.
Szczególnie istotnym skutkiem było ryzyko zatrucia pamięci systemu AI. Ruflo korzysta z mechanizmu przechowującego wzorce uczenia i informacje wykorzystywane przez agentów. Zmodyfikowanie tych danych mogło wpływać na zachowanie modeli oraz kierować przyszłymi odpowiedziami systemu. Badacze wskazali także możliwość utrzymania dostępu po pierwotnym włamaniu przez zapisanie złośliwego ładunku w katalogu aplikacji.
Poprawka i zalecane działania administratorów
Podatność zgłoszono opiekunowi projektu 30 czerwca 2026 roku. Reuven Cohen opublikował poprawkę w ciągu 24 godzin. W wersji 3.16.3 most MCP jest domyślnie wiązany z interfejsem lokalnym, funkcja wykonywania poleceń została objęta kontrolą po stronie serwera, a MongoDB otrzymało uwierzytelnienie. Zmiany mają ograniczyć zarówno dostęp z sieci, jak i możliwość nieuprawnionego wykorzystania wrażliwych funkcji.
Osoby odpowiedzialne za Ruflo powinny przede wszystkim zaktualizować wszystkie instancje do wersji 3.16.3 lub nowszej. W przypadku środowisk, które mogły być dostępne z sieci, zalecane jest natychmiastowe zamknięcie portów 3001 i 27017, a także założenie, że klucze API dostawców modeli zostały ujawnione. Należy je obrócić, czyli unieważnić dotychczasowe poświadczenia i wygenerować nowe.
Sama aktualizacja może nie wystarczyć, jeśli doszło już do naruszenia środowiska. Administratorzy powinni przejrzeć magazyn wzorców AgentDB pod kątem dodanych wpisów, sprawdzić MongoDB pod kątem śladów modyfikacji, przeanalizować rozmowy i logi oraz odbudować kontenery z czystych obrazów. Istotne jest również sprawdzenie, czy w systemie nie pozostały nieautoryzowane pliki lub procesy.
Przypadek Ruflo pokazuje, że zabezpieczenie platform korzystających z agentów AI obejmuje nie tylko sam model. Równie ważne są kontrola dostępu do narzędzi, izolacja usług, ochrona poświadczeń oraz regularny audyt trwałej pamięci systemu. Jeżeli pamięć może wpływać na kolejne odpowiedzi, jej modyfikacja powinna być traktowana jako potencjalne naruszenie integralności całej aplikacji.