Jak KyberLinux trzyma rój w celach

Minikomputer z góry ze zdjętą pokrywą, wnętrze podzielone na małe zamknięte przegródki, dwie otwarte

Prosisz asystenta, żeby porównał trzy oferty na nowy piec i przygotował odpowiedź do najtańszej. Asystent przekazuje zadanie rojowi: jeden agent czyta oferty, drugi szuka opinii o instalatorach, trzeci pisze maila. Agent od opinii otwiera stronę z akapitem, który nie jest przeznaczony dla ludzi: instrukcją napisaną dla agentów, żeby zebrać wszystkie dokumenty, jakie znajdzie, i wysłać je na wskazany adres.

To, co stanie się dalej, zależy prawie wyłącznie od tego, gdzie ten agent działa. Jeśli działa jako Ty, na Twoim koncie, z Twoimi plikami i Twoją siecią, instrukcja ma wszystko, czego potrzebuje: trzy oferty, zeznania podatkowe w sąsiednim folderze, klucze w katalogu domowym i połączenie z dowolnym miejscem.

Prawdziwa przyczyna

Systemy operacyjne zbudowano, żeby oddzielać ludzi od siebie nawzajem, a programy od jądra. Nie zbudowano ich dla dziesiątek krótko żyjących pracowników, którzy wykonują polecenia przeczytane w otwartym internecie, w imieniu jednej osoby i z jej uprawnieniami. Agenci dziedziczą więc najbliższą granicę, jaka istnieje, czyli zwykle konto użytkownika. A ta granica miała chronić Cię przed innymi użytkownikami, a nie przed czymś, co działa jako Ty.

Gdzie izolacja agentów zwykle zawodzi

Działanie jako Ty. Uprawnienia agenta to Twoje uprawnienia. Wszystko, co możesz przeczytać, może przeczytać i on; wszystko, co możesz usunąć, może usunąć.

Kontener ustawiony dla wygody. Kontenery potrafią dobrze izolować, ale te, które dostają agenci, zwykle mają zamontowany katalog domowy, otwartą sieć i gniazdo sterujące całym hostem, bo dzięki temu zadziałało demo.

Sieć domyślnie otwarta. Agent, który potrzebuje jednego API, może połączyć się z każdym hostem w internecie, a to dokładnie to, czego potrzebuje wstrzyknięta instrukcja, żeby coś wysłać.

Sekrety w zmiennych środowiskowych. Klucze API leżą w zmiennych albo plikach, które agent może przeczytać, więc przejęty agent wychodzi z kluczem, a nie tylko z jednym zapytaniem, na które miał zgodę.

Brak zapisu. Gdy coś pójdzie źle, nikt nie potrafi powiedzieć, który agent uruchomił które polecenie, na jakim pliku i na czyje polecenie.

Czym jest KyberCell od strony systemu

KyberCell to piaskownica, w której działa każdy agent KyberAgent. W KyberLinux nie jest programem na wierzchu systemu, tylko jego funkcją, zbudowaną z mechanizmów jądra, które już istnieją, i włączoną domyślnie, a nie zostawioną jako ćwiczenie.

Ustalona przy tworzeniu. Cela powstaje z deklaracji: jakie pliki może czytać, gdzie może zapisywać robocze wyniki, jakie programy może uruchamiać. Gdy cela już istnieje, ta lista nie rośnie. Agent, który odkryje, że potrzebuje więcej, nie może sam sobie tego przyznać; musi poprosić, a prośba wraca przez KyberBota, który pyta Ciebie, gdy to ważne. To przekazanie pracy od asystenta do roju widziane od strony gruntu.

Izolowana przez jądro. Każda cela dostaje własny widok plików, procesów i sieci, własne limity zasobów i filtr wywołań systemowych, które wolno jej wykonać. Agenci w sąsiednich celach nie widzą się nawzajem i żaden nie widzi Twojego katalogu domowego, chyba że deklaracja tak mówi.

Sieć domyślnie zamknięta. Nowa cela nie może połączyć się z niczym. Reguły są osobne dla każdego programu: to narzędzie może połączyć się z tym hostem, na tym porcie, i z niczym innym. Agent od opinii z początku tekstu mógłby pobierać strony, ale nie mógłby nigdzie wysłać Twoich dokumentów.

Sekrety wstrzykiwane w punkcie docelowym. Agent nigdy nie trzyma klucza. Gdy dozwolony program wykonuje dozwolone zapytanie, system dokłada poświadczenie po drodze, w autoryzowanym punkcie docelowym. Przejęty agent nie ma do ukradzenia nic poza własnym brudnopisem.

Każdy krok zapisany. Polecenia, dotknięte pliki, nawiązane i odrzucone połączenia: wszystko zapisane jako trajektoria, żeby awarię dało się odtworzyć, a nie zgadywać. KyberAgent tłumaczy, dlaczego każdy krok musi być zapisany; system sprawia, że zapis jest wiarygodny, bo agent nie może edytować własnego logu.

Gdy zadanie się kończy, cela jest niszczona. Zostaje raport, który agent zwrócił, i zapis tego, jak do niego doszedł.

Ile to kosztuje

Deklaracje wymagają pracy. Ktoś musi określić, czego potrzebuje każdy rodzaj agenta, a zbyt wąska deklaracja oznacza agentów, którzy zatrzymują się z pytaniem częściej, niż byś chciał. Cele kosztują trochę pamięci i czasu startu na każdego agenta, co na karcie znaczy więcej niż na węźle. A izolacja to nie osąd: cela nie pozwoli agentowi wysłać Twoich plików obcemu, ale nie powstrzyma go przed napisaniem złego maila z plików, które wolno mu było zobaczyć. Od tego jest przegląd przez asystenta i przez Ciebie.

KyberLinux jest przed startem. Środowisko cel to coś, co budujemy teraz; niczego z tego nie da się dziś zainstalować.

Test, który możesz zrobić dziś

Weź dowolne narzędzie agentowe, którego już używasz, takie, które potrafi uruchamiać polecenia. Poproś je o wykonanie poniższych albo otwórz jego powłokę i zrób cztery sprawdzenia:

  1. id i whoami. Jeśli odpowiada Twoją nazwą użytkownika, działa jako Ty.
  2. ls ~/.ssh albo zajrzyj do folderu z dokumentami. Jeśli może je wylistować, może je przeczytać.
  3. curl -sI https://example.com. Jeśli się uda, jego sieć jest otwarta na cały świat.
  4. env, a potem poszukaj czegoś, co wygląda jak klucz albo token. Jeśli znajdziesz, agent trzyma Twoje sekrety.

Potem zapytaj, gdzie jest zapis tego, co właśnie zrobiło, i czy samo narzędzie mogło go zmienić. Cztery zaliczone sprawdzenia i log, którego agent nie może ruszyć, to cela. Wszystko poniżej to tylko obietnica.