PABLO.ENGINEERING
// WRÓĆ DO WSZYSTKICH WPISÓW
// 3 min

Walidator F4 i odsłonięcie ciszy detektora anty-injection

Dzień upłynął pod znakiem bezpieczeństwa detektora anty-injection i porządków wokół niego. Najwięcej dało odsłonięcie tego, co detektor robił po cichu.

Problem: detektor, który działał w ciszy

Detektor anty-injection podejmował decyzje, ale nie zostawiał po sobie czytelnego śladu. Kiedy coś blokował, nie miałem jak odróżnić "zadziałał" od "w ogóle się nie uruchomił". Do tego był zepsuty token remind_once, więc część przypomnień nie wychodziła. Osobno bolała flota: synchronizacja stała zablokowana przez 6 dni, a hermes_state_watchdog nie logował nic sensownego. Panel potrafił pokazywać kafelki bez modelu i w złym miejscu. Na koniec gateway raportował błędy: nie mógł odczytać konfiguracji, a worker SQLite w trybie read-only nie stabilizował się po serii prób inspekcji, co kończyło się komunikatem "The CLI command failed".

Co zrobiłem: pięć poprawek i walidator

  • feat(sec): zbudowałem walidator F4 typu red-team dla detektora anty-injection. Sprawdza, czy detektor faktycznie łapie próby wstrzyknięcia instrukcji, a nie tylko deklaruje, że to potrafi.
  • fix(sec): odsłoniłem ciszę detektora, czyli dorobiłem sygnał widoczny wtedy, gdy detektor nic nie robi, i naprawiłem token remind_once.
  • fix(tmp): strażnik katalogów tymczasowych przestał kasować katalogi aktywnych sesji, a sam strażnik dostał wersjonowanie.
  • fix(sync): odblokowałem flotę po 6 dniach i przywróciłem log() w hermes_state_watchdog.
  • fix(panel): kafelki panelu obsługują teraz brak modelu i trzymają się swojego miejsca w układzie.

Nadzór w tle przeszedł czysto. dsml-guardian nie zgłosił żadnego sygnału, leaf-scanner potwierdził poprawny JSON w pliku fiszek i brak obcych markerów u liści (agent=aneta, agent=gym, agent=spanish), quiz-watchdog wykonał przebieg i wysłał materiał do hiszpańskiego. memory-verifier przeskanował 0 zapisów i naprawił 0. Jedno zadanie cron zakończyło się błędem i zostawiłem je do przejrzenia.

Dlaczego to ważne (Use Case):

Detektor anty-injection jest warstwą, która oddziela treść z zewnątrz od poleceń wykonywanych przez agenta. Jeśli działa po cichu, nie wiem, czy w ogóle chroni. Jeśli odzywa się tylko wtedy, gdy blokuje, to brak wpisu nie znaczy "bezpiecznie", tylko "nie wiem". Walidator F4 zamienia to w powtarzalny test: mogę sprawdzić, że próba wstrzyknięcia instrukcji jest wyłapywana. Odsłonięcie ciszy daje mi to samo na produkcji. Odblokowanie floty po 6 dniach przywróciło synchronizację do stanu używalności, a poprawka kafelków usunęła mylący widok bez modelu.

Czego się nauczyłem:

  1. Detektor, który nie raportuje, kiedy nic nie zrobił, jest niesprawdzalny. Cisza to brak dowodu, nie brak problemu.
  2. Awaria siedzi czasem w warstwie, o której zapominam. U mnie był to odczyt konfiguracji i worker SQLite w trybie read-only. Gateway pokazywał objaw, nie przyczynę.
  3. Strażnik kasujący katalogi tymczasowe sam może być zagrożeniem. Wersjonowanie takiego skryptu i pomijanie aktywnych sesji to minimum.
#daily#openclaw#security