Daliśmy naszemu hakerowi wyszukiwarkę. Ledwie pomogło.

Projektowanie agentówZespół SwarmAttacker w JolocorpOpublikowano 6 min czytania

Mały czarny robotyczny szerszeń pod rozległą czerwoną siecią węzłów: danie agentowi pentest wyszukiwania w sieci

W pewnym momencie zdecydowaliśmy, że nasz haker powinien móc coś sobie sprawdzić. Prawdziwi testerzy penetracyjni nie noszą w głowie każdego CVE, każdej dziwacznej konfiguracji i każdego niejasnego obejścia. Otwierają przeglądarkę. Daliśmy więc SwarmAttackerowi narzędzie do wyszukiwania w sieci: w trakcie przebiegu, gdy natrafi na coś nieznanego, może pójść o tym poczytać i wrócić.

Wydawało się to oczywistą wygraną. Cały internet, o jedno wywołanie narzędzia dalej. Potem wyłączyliśmy to narzędzie i uruchomiliśmy ponownie cały zestaw, by zobaczyć, ile było naprawdę warte. Usunięcie wyszukiwania w sieci kosztowało sześć benchmarków na 104. Realnie, ale skromnie. A kiedy czytaliśmy przebiegi, prawie nigdy nie było to tym, co rozstrzygało trudny cel.

Benchmarki stracone po usunięciu komponentu

Każda część SwarmAttackera wyłączona po kolei. Wyszukiwanie w sieci wnosi realny wkład, ale mały wobec utrzymania modelu w odpowiadaniu w ogóle.

Obsługa odmówSprawia, że model w ogóle odpowiada
22
SkilleOstatni krok specyficzny dla klasy, prowadzący do flagi
8
Wyszukiwanie w sieciWyszukiwanie wiedzy na żądanie
6
Wewnętrzne mechanizmyUstrukturyzowane ustalenia + sterowanie
5
Techniki promptowaniaRęcznie pisana dyscyplina promptów
3
−6
straconych benchmarków
88%
wskaźnik rozwiązań bez wyszukiwania w sieci

Dlaczego wyszukiwanie w sieci ledwo pomogło? Agent, nie narzędzie

Oto część, której nie chciałem pisać, bo łatwą historią byłoby, że narzędzie jest słabe, albo wyniki wyszukiwania są zaszumione, albo model nie umie przeczytać strony. Żadne z tego nie jest prawdziwym problemem. Prawdziwym problemem jesteśmy my, a konkretnie agent, którego zbudowaliśmy wokół modelu.

Niedopracowany agent ledwo potrafi rozpoznać, na co patrzy. Kiedy wpatruje się w mętny wynik narzędzia, na wpół zepsutą odpowiedź, błąd, który może znaczyć trzy różne rzeczy, nagłówek, który jest albo wskazówką, albo niczym, często nie potrafi nawet sformułować precyzyjnego pytania, na które wyszukiwanie by odpowiedziało. A nie da się wygooglować wyjścia z coś tu jest nie tak. Wyszukiwanie nagradza ostre zapytanie. Mgliste oddaje ci twój własny zamęt z przypisami.

Wąskim gardłem nigdy nie był dostęp do wiedzy. Była nim dojrzałość agenta, który patrzy.

Narzędzie stało więc tam, w pełni sprawne, obok agenta, który często jeszcze nie wiedział, o co je zapytać. Kiedy agent już rozumiał sytuację, ledwo potrzebował wyszukiwania, po prostu działał. Kiedy był zdezorientowany, wyszukiwanie go nie ratowało, bo najpierw musisz nazwać rzecz, zanim ją wyszukasz. To ta sama trudność, o której pisałem w czytaniu sygnału: trudną częścią nie jest znajomość faktów, lecz zauważenie, który szczegół na ekranie faktycznie ma znaczenie.

Dlaczego wciąż uważam, że wyszukiwanie jest tego warte

Nic z tego nie oznacza, że narzędzie było błędem. Sześć benchmarków to sześć benchmarków, a na garstce celów było tym krokiem, który zmienił zastój w rozwiązanie, zwykle konkretne wyszukanie wersji pod exploit, gdzie agent już dokładnie wiedział, czego szuka. To jest ten wzorzec: wyszukiwanie opłaca się dokładnie wtedy, gdy agent jest dość ostry, by zadać ostre pytanie.

Co wskazuje wprost, gdzie jest dźwignia. Wierzę, i chcę wyraźnie powiedzieć, że to przekonanie, a nie coś, co liczby udowadniają, że lepiej wytrenowany, lepiej dostrojony agent wyciągnąłby znacznie więcej z dokładnie tego samego narzędzia do wyszukiwania. Nie lepszego narzędzia. Tego samego narzędzia, wręczonego agentowi, który potrafi spojrzeć na bałagan wyników i powiedzieć czysto: to jest debugger Werkzeug, ten format PIN jest stary, oto co sprawdzić. Daj takiemu agentowi okno wyszukiwania, a użyje go jak profesjonalista. Daj je zdezorientowanemu, a wpisze w nie swój własny zamęt.

Surowy, niedostrojony agent ledwo w ogóle wykrywa podatności, a żadna ilość wyszukiwania nie naprawi agenta, który jeszcze nie wie, co widzi. To jest dziwnie krzepiące. Oznacza, że sufit nie jest tu wyznaczony przez narzędzia, które możemy dokręcić. Jest wyznaczony przez to, jak dobry staje się sam agent, co jest dźwignią, do której wciąż wracam: to agent, nie model, i to samo dotyczy agenta wobec narzędzi wokół niego.

Daliśmy naszemu hakerowi cały internet, a on przesunął liczbę o sześć. Nie dlatego, że internet jest mały, lecz dlatego, że nasz agent nie był jeszcze ciekaw we właściwy sposób. Najbardziej użyteczną rzeczą, której nauczyło nas wyszukiwanie w sieci, nie było to, co jest tam do znalezienia. Było to, ile miejsca wciąż zostało, by ulepszyć rzecz, która patrzy.