mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md',
This commit is contained in:
parent
11bef5e598
commit
4bb0d7d654
147
src/AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md
Normal file
147
src/AI/AI-Assisted-Fuzzing-and-Vulnerability-Discovery.md
Normal file
@ -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 (<process/thread/container/prisoner>), 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}}
|
||||
@ -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}}
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user