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
c195001912
commit
6194a54845
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}}
|
||||
|
||||
## Oorsig
|
||||
Groot-taalmodelle (LLMs) kan tradisionele kwesbaarheid-navorsingspype superlaai deur semanties ryk insette te genereer, grammatika's te ontwikkel, oor crash-data te redeneer, en selfs multi-fout patches voor te stel. Hierdie bladsy versamel die mees effektiewe patrone wat waargeneem is tydens DARPA se AI Cyber Challenge (AIxCC) eindronde en ander openbare navorsing.
|
||||
|
||||
Wat volg is nie 'n beskrywing van een spesifieke kompetisiestelsel nie, maar 'n abstraksie van die tegnieke sodat jy dit in jou eie werksvloei kan herproduseer.
|
||||
|
||||
---
|
||||
|
||||
## 1. LLM-gegenereerde Saad Insette
|
||||
|
||||
Tradisionele dekking-geleide fuzzers (AFL++, libFuzzer, Honggfuzz…) begin met 'n klein korpus van sade en muteer bytes blindelings. Wanneer die teikeninsetformaat kompleks is (SQL, URL's, persoonlike binêre protokolle) breek ewekansige mutasies gewoonlik die sintaksis voordat interessante takke bereik word.
|
||||
|
||||
LLMs kan hierdie bootstrap-probleem oplos deur *saadgenerators* uit te saai – kort skrifte wat **sintaksis-korrekte maar sekuriteits-relevante insette** lewer. Byvoorbeeld:
|
||||
```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)
|
||||
```
|
||||
Voer een keer uit en voer die uitvoer direk in die fuzzer se aanvanklike korpus in:
|
||||
```bash
|
||||
python3 gen_sqli_seeds.py > seeds.txt
|
||||
afl-fuzz -i seeds.txt -o findings/ -- ./target @@
|
||||
```
|
||||
Voordele:
|
||||
1. Semantiese geldigheid → dieper dekking vroeg.
|
||||
2. Her-genererbaar: pas die prompt aan om op XSS, pad traversering, binêre blobs, ens. te fokus.
|
||||
3. Goedkoop (< 1 ¢ met GPT-3.5).
|
||||
|
||||
### Wenke
|
||||
* Instrueer die model om *te diversifiseer* payload lengte en kodering (UTF-8, URL-gecodeer, UTF-16-LE) om oppervlakkige filters te omseil.
|
||||
* Vra vir 'n *enkele self-onderhoudende skrip* – vermy JSON-formatering probleme.
|
||||
|
||||
---
|
||||
|
||||
## 2. Grammatika-Evolusie Fuzzing
|
||||
|
||||
'n Meer kragtige variasie is om die LLM **'n grammatika te laat evolueer** in plaas van konkrete sade. Die werksvloei (“Grammatika Ou” patroon) is:
|
||||
|
||||
1. Genereer 'n aanvanklike ANTLR/Peach/LibFuzzer grammatika via prompt.
|
||||
2. Fuzz vir N minute en versamel dekking metrieke (kante / blokke getref).
|
||||
3. Som onbedekte programareas op en voer die opsomming terug in die model:
|
||||
```prompt
|
||||
Die vorige grammatika het 12 % van die programkante geaktiveer. Funksies wat nie bereik is nie: parse_auth, handle_upload. Voeg / wysig reëls om hierdie te dek.
|
||||
```
|
||||
4. Voeg die nuwe reëls saam, her-fuzz, herhaal.
|
||||
|
||||
Pseudo-kode skelet:
|
||||
```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)
|
||||
```
|
||||
Key points:
|
||||
* Hou 'n *begroting* – elke verfyning gebruik tokens.
|
||||
* Gebruik `diff` + `patch` instruksies sodat die model redigeer eerder as om te herskryf.
|
||||
* Stop wanneer Δcoverage < ε.
|
||||
|
||||
---
|
||||
|
||||
## 3. Agent-gebaseerde PoV (Exploit) Generasie
|
||||
|
||||
Nadat 'n crash gevind is, benodig jy steeds 'n **bewys van kwesbaarheid (PoV)** wat dit deterministies aktiveer.
|
||||
|
||||
'n Skaalbare benadering is om *duisende* liggewig agente (<process/thread/container/prisoner>) te genereer, elk wat 'n ander LLM (GPT-4, Claude, Mixtral) of temperatuurinstelling uitvoer.
|
||||
|
||||
Pyplyn:
|
||||
1. Statiese/dinamiese analise produseer *foutkandidatte* (struktuur met crash PC, invoerskyf, sanitiser boodskap).
|
||||
2. Orkestrator versprei kandidatte na agente.
|
||||
3. Agent redeneerstappe:
|
||||
a. Reproduseer fout plaaslik met `gdb` + invoer.
|
||||
b. Stel minimale exploit payload voor.
|
||||
c. Valideer exploit in sandbox. As sukses → dien in.
|
||||
4. Mislukte pogings word **her-gekwoteer as nuwe sade** vir dekking fuzzing (terugvoer lus).
|
||||
|
||||
Voordele:
|
||||
* Parallelisering verberg enkel-agent onbetroubaarheid.
|
||||
* Outomatiese afstemming van temperatuur / modelgrootte gebaseer op waargenome sukseskoers.
|
||||
|
||||
---
|
||||
|
||||
## 4. Gereguleerde Fuzzing met Fyn-afgestemde Kode Modelle
|
||||
|
||||
Fyn-afstem 'n oop-gewig model (bv. Llama-7B) op C/C++ bron gemerk met kwesbaarheidspatrone (heelgetal oorgang, buffer kopie, formaat string). Dan:
|
||||
|
||||
1. Voer statiese analise uit om funksielys + AST te verkry.
|
||||
2. Stimuleer model: *“Gee mutasiediktionêre inskrywings wat waarskynlik geheueveiligheid in funksie X sal breek”*.
|
||||
3. Voeg daardie tokens in 'n pasgemaakte `AFL_CUSTOM_MUTATOR` in.
|
||||
|
||||
Voorbeelduitset vir 'n `sprintf` wrapper:
|
||||
```
|
||||
{"pattern":"%99999999s"}
|
||||
{"pattern":"AAAAAAAA....<1024>....%n"}
|
||||
```
|
||||
Empiries verkort dit die tyd tot 'n ineenstorting met >2× op werklike teikens.
|
||||
|
||||
---
|
||||
|
||||
## 5. AI-Geleide Patching Strategieë
|
||||
|
||||
### 5.1 Super Patches
|
||||
Vra die model om *te groepeer* ineenstorting handtekeninge en 'n **enkele patch** voor te stel wat die algemene oorsaak verwyder. Dien een keer in, herstel verskeie foute → minder akkuraatheidstraffies in omgewings waar elke verkeerde patch punte kos.
|
||||
|
||||
Prompt skets:
|
||||
```
|
||||
Here are 10 stack traces + file snippets. Identify the shared mistake and generate a unified diff fixing all occurrences.
|
||||
```
|
||||
### 5.2 Spekulatiewe Patchesverhouding
|
||||
Implementeer 'n wagwoord waar bevestigde PoV-gesertifiseerde patches en *spekulatiewe* patches (geen PoV) op 'n 1:N verhouding tussenin geplaas word wat aangepas is volgens punte reëls (bv. 2 spekulatiewe : 1 bevestig). 'n Koste-model monitor straf teenoor punte en pas N self aan.
|
||||
|
||||
---
|
||||
|
||||
## Om Dit Alles Saam Te Sit
|
||||
'n Eind-tot-eind CRS (Cyber Reasoning System) kan die komponente soos volg verbind:
|
||||
```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]
|
||||
```
|
||||
---
|
||||
|
||||
## Verwysings
|
||||
* [Trail of Bits – AIxCC eindronde: Verhaal van die band](https://blog.trailofbits.com/2025/08/07/aixcc-finals-tale-of-the-tape/)
|
||||
* [CTF Radiooo AIxCC eindronde onderhoude](https://www.youtube.com/@ctfradiooo)
|
||||
{{#include ../banners/hacktricks-training.md}}
|
@ -1,10 +1,10 @@
|
||||
# AI in Cybersecurity
|
||||
# KI in Cybersécuriteit
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Hoof Masjien Leer Algoritmes
|
||||
## Hoof Masjienleer Algoritmes
|
||||
|
||||
Die beste beginpunt om oor AI te leer, is om te verstaan hoe die hoof masjien leer algoritmes werk. Dit sal jou help om te verstaan hoe AI werk, hoe om dit te gebruik en hoe om dit aan te val:
|
||||
Die beste beginpunt om oor KI te leer, is om te verstaan hoe die hoof masjienleer algoritmes werk. Dit sal jou help om te verstaan hoe KI werk, hoe om dit te gebruik en hoe om dit aan te val:
|
||||
|
||||
{{#ref}}
|
||||
./AI-Supervised-Learning-Algorithms.md
|
||||
@ -24,44 +24,50 @@ Die beste beginpunt om oor AI te leer, is om te verstaan hoe die hoof masjien le
|
||||
|
||||
### LLMs Argitektuur
|
||||
|
||||
Op die volgende bladsy sal jy die basiese beginsels van elke komponent vind om 'n basiese LLM te bou met behulp van transformers:
|
||||
Op die volgende bladsy sal jy die basiese beginsels van elke komponent vind om 'n basiese LLM met transformers te bou:
|
||||
|
||||
{{#ref}}
|
||||
AI-llm-architecture/README.md
|
||||
{{#endref}}
|
||||
|
||||
## AI Sekuriteit
|
||||
## KI Sekuriteit
|
||||
|
||||
### AI Risiko Raamwerke
|
||||
### KI Risiko Raamwerke
|
||||
|
||||
Op hierdie oomblik is die hoof 2 raamwerke om die risiko's van AI stelsels te evalueer die OWASP ML Top 10 en die Google SAIF:
|
||||
Op hierdie oomblik is die hoof 2 raamwerke om die risiko's van KI stelsels te evalueer die OWASP ML Top 10 en die Google SAIF:
|
||||
|
||||
{{#ref}}
|
||||
AI-Risk-Frameworks.md
|
||||
{{#endref}}
|
||||
|
||||
### AI Prompts Sekuriteit
|
||||
### KI Prompts Sekuriteit
|
||||
|
||||
LLMs het die gebruik van AI in die laaste jare laat ontplof, maar hulle is nie perfek nie en kan mislei word deur vyandige prompts. Dit is 'n baie belangrike onderwerp om te verstaan hoe om AI veilig te gebruik en hoe om dit aan te val:
|
||||
LLMs het die gebruik van KI in die laaste jare laat ontplof, maar hulle is nie perfek nie en kan mislei word deur vyandige prompts. Dit is 'n baie belangrike onderwerp om te verstaan hoe om KI veilig te gebruik en hoe om dit aan te val:
|
||||
|
||||
{{#ref}}
|
||||
AI-Prompts.md
|
||||
{{#endref}}
|
||||
|
||||
### AI Modelle RCE
|
||||
### KI Modelle RCE
|
||||
|
||||
Dit is baie algemeen vir ontwikkelaars en maatskappye om modelle wat van die Internet afgelaai is, te gebruik, maar net om 'n model te laai mag genoeg wees om arbitrêre kode op die stelsel uit te voer. Dit is 'n baie belangrike onderwerp om te verstaan hoe om AI veilig te gebruik en hoe om dit aan te val:
|
||||
Dit is baie algemeen vir ontwikkelaars en maatskappye om modelle wat van die Internet afgelaai is, te gebruik, maar net om 'n model te laai mag genoeg wees om arbitrêre kode op die stelsel uit te voer. Dit is 'n baie belangrike onderwerp om te verstaan hoe om KI veilig te gebruik en hoe om dit aan te val:
|
||||
|
||||
{{#ref}}
|
||||
AI-Models-RCE.md
|
||||
{{#endref}}
|
||||
|
||||
### AI Model Konteks Protokol
|
||||
### KI Model Konteks Protokol
|
||||
|
||||
MCP (Model Context Protocol) is 'n protokol wat AI agent kliënte toelaat om met eksterne gereedskap en databasisse in 'n plug-and-play styl te verbind. Dit stel komplekse werksvloei en interaksies tussen AI modelle en eksterne stelsels in staat:
|
||||
MCP (Model Context Protocol) is 'n protokol wat KI agent kliënte toelaat om met eksterne gereedskap en databronne in 'n plug-and-play styl te verbind. Dit stel komplekse werksvloei en interaksies tussen KI modelle en eksterne stelsels in staat:
|
||||
|
||||
{{#ref}}
|
||||
AI-MCP-Servers.md
|
||||
{{#endref}}
|
||||
|
||||
### KI-Gesteunde Fuzzing & Geoutomatiseerde Kwetsbaarheid Ontdekking
|
||||
|
||||
{{#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