From 4bb0d7d65476f511342aab39345d2ddbde57bea4 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 13 Aug 2025 14:40:35 +0000 Subject: [PATCH] Translated ['src/AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md', --- ...ted-Fuzzing-and-Vulnerability-Discovery.md | 147 ++++++++++++++++++ src/AI/README.md | 12 +- src/SUMMARY.md | 1 + 3 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 src/AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md diff --git a/src/AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md b/src/AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md new file mode 100644 index 000000000..6e3c79702 --- /dev/null +++ b/src/AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md @@ -0,0 +1,147 @@ +# AI-Assisted Fuzzing & Automated Vulnerability Discovery + +{{#include ../banners/hacktricks-training.md}} + +## Overview +Modele językowe (LLM) mogą znacznie zwiększyć efektywność tradycyjnych procesów badania podatności, generując semantycznie bogate dane wejściowe, rozwijając gramatyki, analizując dane o awariach, a nawet proponując poprawki wielobugowe. Ta strona zbiera najskuteczniejsze wzorce zaobserwowane podczas finałów AI Cyber Challenge (AIxCC) organizowanych przez DARPA oraz innych publicznych badań. + +To, co następuje, nie jest opisem jednego konkretnego systemu konkursowego, lecz abstrakcją technik, abyś mógł je odtworzyć w swoich własnych procesach. + +--- + +## 1. LLM-Generated Seed Inputs + +Tradycyjne fuzzery oparte na pokryciu (AFL++, libFuzzer, Honggfuzz…) zaczynają od małego zbioru nasion i mutują bajty w sposób losowy. Gdy format danych wejściowych jest złożony (SQL, URL, niestandardowe protokoły binarne), losowe mutacje zazwyczaj łamią składnię, zanim zostaną osiągnięte interesujące gałęzie. + +LLM mogą rozwiązać ten problem początkowy, emitując *generatory nasion* – krótkie skrypty, które generują **poprawne składniowo, ale istotne z punktu widzenia bezpieczeństwa dane wejściowe**. Na przykład: +```prompt +SYSTEM: You are a helpful security engineer. +USER: +Write a Python3 program that prints 200 unique SQL injection strings targeting common anti-pattern mistakes (missing quotes, numeric context, stacked queries). Ensure length ≤ 256 bytes / string so they survive common length limits. +``` + +```python +# gen_sqli_seeds.py (truncated) +PAYLOADS = [ +"1 OR 1=1 -- ", +"' UNION SELECT NULL,NULL--", +"0; DROP TABLE users;--", +... +] +for p in PAYLOADS: +print(p) +``` +Uruchom raz i wprowadź wynik bezpośrednio do początkowego korpusu fuzzera: +```bash +python3 gen_sqli_seeds.py > seeds.txt +afl-fuzz -i seeds.txt -o findings/ -- ./target @@ +``` +Korzyści: +1. Ważność semantyczna → głębsze pokrycie na wczesnym etapie. +2. Możliwość regeneracji: dostosuj prompt, aby skupić się na XSS, przejściu ścieżek, binarnych blobach itp. +3. Tanie (< 1 ¢ z GPT-3.5). + +### Wskazówki +* Poleć modelowi, aby *dywersyfikował* długość i kodowanie ładunków (UTF-8, URL-encoded, UTF-16-LE), aby obejść powierzchowne filtry. +* Poproś o *pojedynczy samodzielny skrypt* – unika problemów z formatowaniem JSON. + +--- + +## 2. Fuzzing z ewolucją gramatyki + +Bardziej zaawansowaną odmianą jest pozwolenie LLM na **ewolucję gramatyki** zamiast konkretnych nasion. Przepływ pracy (wzorzec „Grammar Guy”) to: + +1. Wygeneruj początkową gramatykę ANTLR/Peach/LibFuzzer za pomocą promptu. +2. Fuzzuj przez N minut i zbierz metryki pokrycia (krawędzie / bloki trafione). +3. Podsumuj nieodkryte obszary programu i przekaż podsumowanie z powrotem do modelu: +```prompt +Poprzednia gramatyka wyzwoliła 12 % krawędzi programu. Funkcje, które nie zostały osiągnięte: parse_auth, handle_upload. Dodaj / zmodyfikuj zasady, aby pokryć te. +``` +4. Scal nowe zasady, ponownie fuzzuj, powtarzaj. + +Szkielet pseudo-kodu: +```python +for epoch in range(MAX_EPOCHS): +grammar = llm.refine(grammar, feedback=coverage_stats) +save(grammar, f"grammar_{epoch}.txt") +coverage_stats = run_fuzzer(grammar) +``` +Kluczowe punkty: +* Utrzymuj *budżet* – każde udoskonalenie wykorzystuje tokeny. +* Użyj instrukcji `diff` + `patch`, aby model edytował, a nie przepisywał. +* Zatrzymaj się, gdy Δcoverage < ε. + +--- + +## 3. Generowanie PoV (Eksploatacja) oparte na agentach + +Po znalezieniu awarii nadal potrzebujesz **dowodu na podatność (PoV)**, który deterministycznie ją wyzwala. + +Skalowalne podejście polega na uruchomieniu *tysięcy* lekkich agentów (), z których każdy działa na innym LLM (GPT-4, Claude, Mixtral) lub ustawieniu temperatury. + +Pipeline: +1. Analiza statyczna/dynamiczna produkuje *kandydatów na błędy* (struktura z PC awarii, fragmentem wejściowym, komunikatem sanitarno). +2. Orkiestrator rozdziela kandydatów do agentów. +3. Kroki rozumowania agenta: +a. Powtórz błąd lokalnie za pomocą `gdb` + wejście. +b. Sugeruj minimalny ładunek eksploatacyjny. +c. Waliduj eksploatację w piaskownicy. Jeśli sukces → zgłoś. +4. Nieudane próby są **ponownie kolejkowane jako nowe ziarna** do fuzzingu pokrycia (pętla sprzężenia zwrotnego). + +Zalety: +* Równoległość ukrywa niestabilność pojedynczego agenta. +* Automatyczne dostosowywanie temperatury / rozmiaru modelu na podstawie zaobserwowanej stopy sukcesu. + +--- + +## 4. Ukierunkowany Fuzzing z Dostosowanymi Modelami Kodów + +Dostosuj model o otwartych wagach (np. Llama-7B) na źródłach C/C++ oznaczonych wzorcami podatności (przepełnienie całkowite, kopiowanie bufora, formatowanie ciągu). Następnie: + +1. Uruchom analizę statyczną, aby uzyskać listę funkcji + AST. +2. Zadaj modelowi pytanie: *„Podaj wpisy słownika mutacji, które prawdopodobnie złamią bezpieczeństwo pamięci w funkcji X”*. +3. Wstaw te tokeny do niestandardowego `AFL_CUSTOM_MUTATOR`. + +Przykładowy wynik dla opakowania `sprintf`: +``` +{"pattern":"%99999999s"} +{"pattern":"AAAAAAAA....<1024>....%n"} +``` +Empirycznie skraca to czas do awarii o >2× na rzeczywistych celach. + +--- + +## 5. AI-Guided Patching Strategies + +### 5.1 Super Patches +Poproś model o *grupowanie* sygnatur awarii i zaproponowanie **jednej łatki**, która usuwa wspólną przyczynę. Zgłoś raz, napraw kilka błędów → mniej kar za dokładność w środowiskach, gdzie każda błędna łatka kosztuje punkty. + +Zarys podpowiedzi: +``` +Here are 10 stack traces + file snippets. Identify the shared mistake and generate a unified diff fixing all occurrences. +``` +### 5.2 Współczynnik spekulacyjnych poprawek +Zaimplementuj kolejkę, w której potwierdzone poprawki zweryfikowane przez PoV i *spekulacyjne* poprawki (bez PoV) są przeplatane w stosunku 1:​N dostosowanym do zasad punktacji (np. 2 spekulacyjne : 1 potwierdzona). Model kosztów monitoruje kary w porównaniu do punktów i samodzielnie dostosowuje N. + +--- + +## Złożenie wszystkiego w całość +System CRS (Cyber Reasoning System) end-to-end może połączyć komponenty w ten sposób: +```mermaid +graph TD +subgraph Discovery +A[LLM Seed/Grammar Gen] --> B[Fuzzer] +C[Fine-Tuned Model Dicts] --> B +end +B --> D[Crash DB] +D --> E[Agent PoV Gen] +E -->|valid PoV| PatchQueue +D -->|cluster| F[LLM Super-Patch] +PatchQueue --> G[Patch Submitter] +``` +--- + +## Odniesienia +* [Trail of Bits – AIxCC finały: Historia taśmy](https://blog.trailofbits.com/2025/08/07/aixcc-finals-tale-of-the-tape/) +* [CTF Radiooo wywiady z finalistami AIxCC](https://www.youtube.com/@ctfradiooo) +{{#include ../banners/hacktricks-training.md}} diff --git a/src/AI/README.md b/src/AI/README.md index 2e77bfc44..0efc2e73c 100644 --- a/src/AI/README.md +++ b/src/AI/README.md @@ -4,7 +4,7 @@ ## Główne Algorytmy Uczenia Maszynowego -Najlepszym punktem wyjścia do nauki o AI jest zrozumienie, jak działają główne algorytmy uczenia maszynowego. Pomoże to zrozumieć, jak działa AI, jak go używać i jak je atakować: +Najlepszym punktem wyjścia do nauki o AI jest zrozumienie, jak działają główne algorytmy uczenia maszynowego. Pomoże to zrozumieć, jak działa AI, jak go używać i jak go atakować: {{#ref}} ./AI-Supervised-Learning-Algorithms.md @@ -42,7 +42,7 @@ AI-Risk-Frameworks.md ### Bezpieczeństwo Podpowiedzi AI -LLM sprawiły, że użycie AI eksplodowało w ostatnich latach, ale nie są one doskonałe i mogą być oszukiwane przez wrogie podpowiedzi. To bardzo ważny temat, aby zrozumieć, jak używać AI bezpiecznie i jak je atakować: +LLM-y spowodowały eksplozję użycia AI w ostatnich latach, ale nie są doskonałe i mogą być oszukiwane przez wrogie podpowiedzi. To bardzo ważny temat, aby zrozumieć, jak używać AI bezpiecznie i jak go atakować: {{#ref}} AI-Prompts.md @@ -50,7 +50,7 @@ AI-Prompts.md ### RCE Modeli AI -Bardzo powszechne jest, że deweloperzy i firmy uruchamiają modele pobrane z Internetu, jednak samo załadowanie modelu może być wystarczające do wykonania dowolnego kodu w systemie. To bardzo ważny temat, aby zrozumieć, jak używać AI bezpiecznie i jak je atakować: +Bardzo powszechne jest, że deweloperzy i firmy uruchamiają modele pobrane z Internetu, jednak samo załadowanie modelu może być wystarczające do wykonania dowolnego kodu w systemie. To bardzo ważny temat, aby zrozumieć, jak używać AI bezpiecznie i jak go atakować: {{#ref}} AI-Models-RCE.md @@ -64,4 +64,10 @@ MCP (Model Context Protocol) to protokół, który pozwala klientom agentów AI AI-MCP-Servers.md {{#endref}} +### Fuzzing Wspomagany AI i Zautomatyzowane Odkrywanie Wrażliwości + +{{#ref}} +AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md +{{#endref}} + {{#include ../banners/hacktricks-training.md}} diff --git a/src/SUMMARY.md b/src/SUMMARY.md index adb5b37c0..68cf84961 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -825,6 +825,7 @@ # 🤖 AI - [AI Security](AI/README.md) + - [Ai Assisted Fuzzing And Vulnerability Discovery](AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md) - [AI Security Methodology](AI/AI-Deep-Learning.md) - [AI MCP Security](AI/AI-MCP-Servers.md) - [AI Model Data Preparation](AI/AI-Model-Data-Preparation-and-Evaluation.md)