>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
JavaScript

Jak sprawić, by AI znajdowało prawdziwe luki w kodzie bez masy fałszywych alarmów

Jeśli kiedykolwiek próbowaliście skierować LLM na kod źródłowy z promptem "znajdź luki", prawdopodobnie pamiętacie rezultat. Model zazwyczaj produkuje ścianę teoretycznych obserwacji: brakująca walidacja checklisty OWASP tutaj, kolejna warstwa sanityzacji mogłaby być dodana tam, a ta zmienna jest podejrzanie nazwana. W praktyce 90% takich wyników okazuje się szumem, który po prostu marnuje czas programistów.

Zespół Cloudflare udostępnił jako open-source security-audit-skill. To zestaw instrukcji i potok dla agentów programistycznych, których użyto do zbudowania wewnętrznego narzędzia do ciągłego audytu repozytoriów.

Na czym polega główny problem zwykłego audytu AI

Większość statycznych analizatorów i prostych promptów sieci neuronowych cierpi z powodu dwóch problemów: nie weryfikują wykorzystywalności i zmyślają kontekst. Sieć neuronowa widzi niebezpieczną funkcję, ale nie zauważa, że dane wejściowe są już filtrowane przez trzy warstwy powyżej.

Cloudflare poszło w odwrotnym kierunku i zbudowało skill na ścisłych zasadach:

  • Raporty są generowane tylko dla tego, co jest faktycznie wykorzystywalne. Fraz takie jak "teoretycznie atakujący mógłby" są natychmiast filtrowane.
  • Osoba, która znalazła błąd, nie ma prawa go walidować. Oddzielny niezależny agent działa w roli adwokata diabła do weryfikacji.
  • Brak drugiej warstwy ochronnej nie jest uważany za lukę, jeśli pierwsza warstwa niezawodnie blokuje wektor ataku.
  • Ocena krytyczności opiera się na realnym wpływie, nie na formalnych dopasowaniach checklisty.

Jak działa sześciofazowy potok

Zamiast jednego długiego prompta, narzędzie dzieli pracę na sześć sekwencyjnych etapów. Równolegle pracują w nich podagenty, każdy z ściśle określonym zadaniem.

+-------------------------------------------------------------+
| 1. Recon       -> Карта архитектуры и точек входа           |
| 2. Hunt        -> Параллельные атаки по разным векторам     |
| 3. Validate    -> Попытка опровергнуть каждую находку       |
| 4. Report      -> Формирование читаемых отчетов             |
| 5. Structured  -> Генерация findings.json со схемой         |
| 6. Verify      -> Сверка фактов со свежими агентами         |
+-------------------------------------------------------------+

1. Rozpoznanie

Agenci badają projekt, definiują granice zaufania, identyfikują punkty wejścia i mapują ogólną architekturę. Rezultatem jest plik architecture.md, który służy jako mapa dla agentów atakujących.

2. Polowanie

Wielu agentów testuje bazę kodu równolegle z różnych perspektyw. Projekt jest dzielony na osobne pliki z promptami dla różnych klas ataków:

  • Iniekcje, kontrola dostępu i logika biznesowa.
  • Specyfika protokołów webowych, cache'owanie i uwierzytelnianie (WEB-PROTOCOL-AND-AUTH.md).
  • Zagrożenia po stronie klienta, takie jak iniekcje DOM i zanieczyszczenie prototypu (CLIENT-SIDE.md).
  • Bezpieczeństwo pamięci i luki binarne w natywnym kodzie (MEMORY-SAFETY-AND-BINARY.md).
  • Problemy systemu LLM: iniekcja promptów, wycieki kontekstu i manipulacja wywołaniami narzędzi (AI-AND-LLM.md).

Każdy agent polujący może tworzyć dodatkowe procesy, aby kopać głębiej w podejrzanych łańcuchach wywołań.

3. Walidacja adversarialna

Najbardziej przydatny etap. Świeżo przydzieleni agenci otrzymują listę potencjalnych błędów i celowo próbują udowodnić, że atak nie zadziała. Jeśli ochrona istnieje lub wektor jest zablokowany przez sąsiedni moduł, wynik jest bezlitośnie skreślany.

4. Raport i dane strukturalne

Pliki REPORT.md i FINDINGS-DETAIL.md są generowane ze szczegółowymi śladami dla luk o poziomie Medium i wyższym, wraz z findings.json. Strukturalny JSON jest walidowany przez skrypt validate-findings.cjs oparty na Node.js bez zewnętrznych zależności.

5. Niezależna weryfikacja

Końcowa kontrola jakości. Agenci z czystym kontekstem linia po linii weryfikują twierdzenia w raporcie względem faktycznego kodu, aby wyeliminować halucynacje w numerach linii lub nazwach funkcji.

Instalacja i uruchomienie

Pakiet łączy się przez Skills CLI z dowolnym agentem programistycznym obsługującym wywołania narzędzi i równoległe podagenty.

Instalacja projektu:

npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit

Instalacja globalna dla całego systemu:

npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit --global

Po tym wystarczy otworzyć bazę kodu w swoim agencie i napisać zwykłym tekstem:

security audit this codebase

lub określić konkretny katalog i ścieżkę raportu:

do a security review, output to ~/audits/my-project

Interesujący szczegół: przebiegi mogą się kumulować. Autorzy odkryli podczas testów, że jeden przebieg znajduje około połowy prawdziwych problemów z powodu losowości w ścieżkach przechodzenia. Skill może czytać poprzednie findings.json, pomijać już znane błędy i eksplorować nietknięte gałęzie kodu.

Dla kogo to jest

Narzędzie wymaga zdolnego modelu z obsługą równoległych wywołań narzędzi, więc uruchomienie na słabych konfiguracjach lokalnych prawdopodobnie nie zadziała.

Ale jeśli już używasz agentów do refaktoryzacji lub pisania testów, dodanie roli skrupulatnego audytora bezpieczeństwa to świetny pomysł przed wydaniem lub głównym scaleniem. Podejście dzielenia ról między "atakującego" i "sceptyka" zauważalnie redukuje ręczny wysiłek związany z fałszywymi alarmami.

Powiązane projekty