5.5.4 Jelentés generálás

2025.10.06.
AI Biztonság Blog

Az automatizált Red Team folyamatok puszta lefuttatása önmagában csak félsiker. A pipeline végén keletkező nyers adathalmaz – logok, teszteredmények, sebezhetőségi listák – értelmezés és kontextus nélkül csupán digitális zaj. Az igazi érték akkor születik meg, amikor ezt a zajt strukturált, emészthető és cselekvésre ösztönző információvá alakítjuk. Itt lép a képbe az automatizált jelentés generálás, ami a CI/CD pipeline utolsó, de egyik legkritikusabb mérföldköve.

Kapcsolati űrlap

AI Biztonság kérdésed van? Itt elérsz minket:

Szemben a manuális, napokig vagy akár hetekig tartó riportkészítéssel, az automatizált megközelítés célja, hogy a tesztelési ciklus lezárultával szinte azonnal kézzelfogható eredményt produkáljon. Ez nem csupán egy PDF dokumentum legenerálását jelenti, hanem egy komplex folyamatot, ami az adatgyűjtéstől a priorizáláson át a célzott disztribúcióig terjed.

Az automatizált jelentéskészítés folyamata

A hatékony jelentésgenerátor nem egy monolitikus eszköz, hanem egy több lépésből álló láncolat, amely a nyers adatokból értékes betekintést nyer ki. Nézzük végig a tipikus fázisokat.

1. Adatforrások 2. Aggregáció és Normalizálás 3. Elemzés és Priorizálás 4. Sablon alapú Generálás HTML/PDF JSON/XML Jira Ticket

Az automatizált jelentésgenerálás folyamatának vizualizációja.

1. Adatgyűjtés és aggregáció

Az első lépés az összes releváns adatforrásból származó információk központi helyre gyűjtése. 

Ezek a források rendkívül változatosak lehetnek:

  • LLM tesztelési keretrendszerek: Prompt injection, jailbreak, adatvédelmi tesztek eredményei (pl. Garak, llm-test).
  • Statikus és dinamikus elemzők (SAST/DAST): A támogató infrastruktúra kódjának és futó szolgáltatásainak vizsgálatából származó leletek.
  • Logfájlok: Az alkalmazás, a WAF (Web Application Firewall) vagy a modell inferencia szerverének logjai, amelyek anomáliákat tartalmazhatnak.
  • Manuális tesztek eredményei: Strukturált formában (pl. JSON, CSV) rögzített manuális vizsgálatok leletei.

2. Normalizálás és kontextualizálás

A különböző eszközök eltérő formátumban és részletességgel szolgáltatják az eredményeiket. Egy SAST eszköz egy kódsort jelöl meg, míg egy LLM teszt egy prompt-válasz párt. A normalizálás során ezeket az eltérő adatstruktúrákat egy egységes, belső sémára hozzuk. Ez kulcsfontosságú a későbbi feldolgozhatóság szempontjából.


# Pszeudokód egy normalizáló függvényre Pythonban

def normalize_finding(raw_data, source_tool):
 """
 Különböző forrásokból származó leleteket egységes
 struktúrába konvertál.
 """
 finding = {
 "id": generate_unique_id(),
 "title": None,
 "description": None,
 "severity": "Info",
 "source": source_tool,
 "details": {}
 }

 if source_tool == "LLMGuard":
 finding["title"] = f"Lehetséges prompt injection: {raw_data['type']}"
 finding["description"] = "A bemenet rosszindulatú mintát tartalmazott."
 finding["severity"] = "High" if raw_data['score'] > 0.8 else "Medium"
 finding["details"]["prompt"] = raw_data['prompt']

 elif source_tool == "Semgrep":
 finding["title"] = f"SAST lelet: {raw_data['check_id']}"
 finding["description"] = raw_data['extra']['message']
 finding["severity"] = map_semgrep_severity(raw_data['extra']['severity'])
 finding["details"]["file"] = raw_data['path']
 finding["details"]["line"] = raw_data['start']['line']

 return finding

3. Elemzés és priorizálás

Az egységesített adathalmazon már végezhetünk automatizált elemzést. Ez magában foglalhatja a duplikációk kiszűrését, a leletek súlyosságának finomhangolását (pl. egy „kritikus” SAST lelet súlyát csökkenthetjük, ha az egy nem publikus, belső API-t érint), és ami a legfontosabb: a priorizálást. 

A cél, hogy a fejlesztők és a menedzsment a legfontosabb problémákra fókuszáljanak először.

Példa priorizált leletlistára
Prioritás Lelet címe Súlyosság Forrás Érintett komponens
1 Közvetett prompt injection a dokumentumfeldolgozóban Kritikus LLM-Test PDFParser API
2 PII (személyes adat) szivárgás a chatbot válaszában Magas Garak CustomerSupport-LLM
3 Hard-coded API kulcs a forráskódban Magas TruffleHog api_connector.py
4 Elavult „requests” library verzió Közepes pip-audit requirements.txt

4. Sablon alapú generálás

A végső jelentés egy előre definiált sablon alapján jön létre. Ez biztosítja a konzisztenciát és a testreszabhatóságot. Különböző sablonokat használhatunk a különböző célközönségek számára:

  • Technikai riport: Részletes, reprodukálható lépésekkel, kódrészletekkel, logokkal a fejlesztők számára.
  • Executive summary: Magas szintű, grafikonokkal és üzleti kockázati elemzéssel a menedzsmentnek.
  • Gépi feldolgozásra szánt kimenet: JSON vagy XML formátum, ami más rendszerek (pl. Jira, ServiceNow) bemeneteként szolgálhat.

Népszerű sablonkezelő motorok, mint a Jinja2 (Python) vagy a Handlebars (JavaScript), lehetővé teszik, hogy a priorizált adatokat dinamikusan illesszük be a sablonokba.


<!-- Egyszerűsített HTML sablonrészlet Jinja2 szintaxissal -->
<h2>Kritikus súlyosságú leletek</h2>
{% for finding in findings if finding.severity == 'Kritikus' %}
 <div class="finding-card critical">
 <h3>{{ finding.title }}</h3>
 <p><strong>Forrás:</strong> {{ finding.source }}</p>
 <p>{{ finding.description }}</p>
 </div>
{% endfor %}

Kimeneti formátumok és disztribúció

A legenerált riportot el kell juttatni a megfelelő emberekhez. A CI/CD pipeline ezt is automatizálhatja. A generált fájlokat feltöltheti egy központi tárhelyre (pl. S3 bucket, Confluence oldal), elküldheti e-mailben, vagy ami még hatékonyabb: integrálódhat a meglévő munkafolyamatokkal. 

Egy JSON kimenetből egy script automatikusan Jira ticketeket hozhat létre a megfelelő csapat számára, hozzárendelve a fejlesztőkhöz, és beállítva a határidőt a lelet súlyossága alapján. Ezzel a kör bezárul: az automatizált tesztelésből származó lelet közvetlenül, emberi beavatkozás nélkül cselekvési ponttá válik a fejlesztői csapat teendői között.

Ez a fajta szoros integráció az, ami az automatizált jelentésgenerálást a „nice-to-have” kategóriából a modern, agilis biztonsági programok megkerülhetetlen elemévé teszi.