CSIRT operations
Turn a scan archive into a searchable history for triage, prioritization and fix tracking.
Open source · Scanner-aware · Multi-LLM
Best Paper · 2nd place · WRSeg 2025MulitaMiner turns archived scanner PDF reports into consistent, queryable vulnerability records under a canonical schema that does not depend on the tool that produced them.
The finding
Across 450 independent runs with five LLMs and three successive versions of the pipeline, refining how the document reaches the model, and never touching the models themselves, moved every metric further than any model substitution observed in the study. Once the pipeline absorbs the variance between LLMs, choosing a model becomes a question of cost and latency rather than quality.
What it is
Scanners such as OpenVAS and Tenable WAS deliver their results as PDF, a format meant for human reading and with no queryable structure. Incident response teams accumulate years of these files, and answering an elementary question, such as which machines still expose a given CVE, means reopening and comparing dozens of documents by hand.
A second problem compounds the first: each scanner adopts its own fields, names and severity scales, so results from different tools cannot be consolidated into a single view of the infrastructure.
MulitaMiner addresses both with one open-source command-line tool. It reads the report, extracts every finding and normalizes the result into an 18-field canonical schema that is independent of the source scanner.
Institutional CSIRTs, usually small teams, have to triage, prioritize and communicate a volume of information that grows faster than their analytical capacity, and the metadata they need in order to prioritize is precisely what is missing. Figures from the National Vulnerability Database and from published analyses of its enrichment backlog.
Turn a scan archive into a searchable history for triage, prioritization and fix tracking.
Bring reports from different scanners, including corporate CAIS formats, under one schema.
Public references, preserved run artifacts and a field-by-field evaluation package.
How it works
Eight stages turn a raw PDF into standardized, multi-format output, with adaptive re-splitting whenever a chunk fails.
Scan Report · Host 192.168.1.10
Web App Scanning · target.example.com
{
"host": "192.168.1.10",
"name": "SSL/TLS Deprecated",
"severity": "High",
"cvss": 9.8,
"cve": "CVE-2011-3389",
"scanner": "openvas"
}
6 of the 18 canonical fields shown
Text and a layout reconstruction are read in two passes, recovering header context, rejoining lines broken across pages and normalizing ligatures and Unicode artifacts.
A start regex declared in the scanner profile materializes one block per finding, so no vulnerability is ever cut in half.
Each block is sliced inside the token budget of the target model, using its native tokenizer. The prompt carries an explicit output contract, the JSON schema and two complete examples.
Any configured model runs the extraction at temperature zero. Cloud providers and local runtimes are declared the same way.
Every response goes through progressive JSON repair, budget verification and truncation detection, with re-splitting proportional to the error before any retry.
A merge rule declared per scanner removes duplicates and keeps base findings joined to their instances, which matters for Tenable WAS pairs.
The same canonical records are written to JSON, CSV, TSV and XLSX, ready to query, diff or load into a database.
Optional. Scores the extraction against a reference on omission, hallucination, exact record match, text similarity and severity classification.
Capabilities
Around 12,500 lines of Python across 19 modules, with model and scanner behaviour declared in JSON and plain-text prompt templates. Adding a scanner or a model means creating a file, not touching the pipeline.
OpenVAS / Greenbone, Tenable WAS, Nessus, Qualys, Rapid7 and the corporate CAIS format, each with its own prompt template, start regex, chunking policy and consolidation field.
One fixed record shape, independent of the source scanner, so reports from different tools finally compare field by field.
Each model gets its own budget and its native tokenizer, instead of one set of parameters calibrated for all. Uniform settings disproportionately penalize models with reasoning overhead.
Malformed JSON is repaired progressively, truncation is detected, and the chunk is re-split in proportion to the error before spending another call.
The same canonical records in JSON, CSV, TSV and XLSX, ready for spreadsheets, databases or downstream analysis.
Batch execution with checkpoints, per-model cost reports, and an evaluation package covering omission, hallucination, exact record match and severity.
Evidence
Two independent evaluations, with references of very different natures, point in the same direction: a controlled multi-version comparison against manually curated references, and a scale validation against the scanner's own native export.
All confidence intervals are non-overlapping, and the convergence is asymmetric: the models that suffered most under v1 are precisely the ones that improve most. Not a single model substitution observed in the study comes close to this margin.
Under the final version the five models sit between 77.9% and 78.9% correctness, against a six-point spread under v1. The residual error concentrates in interpretive fields such as detection method, impact and insight, while the deterministic fields approach a perfect score.
Hallucination is the one metric that does not fall monotonically: 2.4%, then 6.8%, then 4.5%. The rise is an expected effect of enforcing strict block boundaries, which start demanding that the model fill fields it previously left empty, and it is partly reversed by the adaptive resizing and JSON repair introduced in the third version.
| Model | Cost per report | Notes |
|---|---|---|
| Llama 4 Scout | US$ 0.032 | The cheapest of the five. |
| DeepSeek recommended | US$ 0.035 | Best overall balance: 78.3% correctness, 2.7% omission, 4.1% hallucination. |
| GPT-5 mini | US$ 0.342 | Roughly ten times more, and about 60% of the whole batch cost, at comparable quality. |
Roughly 6,700 vulnerabilities extracted from the 129 OpenVAS reports, consolidated into the canonical schema and released alongside the 6,343-finding reference derived from the native export.
OpenVAS / Greenbone and Tenable WAS were validated functionally; profiles for Nessus, Qualys, Rapid7 and CAIS ship with the distribution but were not measured with the same rigour.
DeepSeek, GPT-4o mini, GPT-5 mini, Llama 3.3 70B and Llama 4 Scout, all through their official APIs. Local runtimes work end to end but were not yet run under the full protocol.
Practical guidance
The ordering matters more than any individual item. It is the main practical recommendation the research leaves behind.
Identify the semantic unit of the document, here the vulnerability, and guarantee that no record is ever cut in half. This produced more gain than any model swap observed.
A single set of parameters calibrated for every model disproportionately penalizes the ones with the largest reasoning overhead.
Give it an output contract and complete examples, and repair malformed output before falling back on retries.
Otherwise you will declare successful an extraction that simply ignored part of the document. Lexical metrics say nothing about what was never extracted.
With the pipeline stabilized, the dominant criteria become cost, latency and data residency policy.
Beyond security reports
The experiments ran on scanner reports, but the principle that emerges from them does not depend on any property exclusive to that domain. Whenever the task is to extract structured records from long, repetitive documents organized into recognizable sections, structure-aware segmentation, a per-model token budget, a schema-anchored prompt and the repair of malformed output tend to produce more gain than replacing the model.
Empirical validation in those domains remains future work. The claim here is about where the evidence points, not about a result already measured outside security.
Six directions the dissertation leaves open, in the order the research would take them.
Dissertation
MulitaMiner is the product of a master's dissertation organized as a compilation of three scientific papers.
Vulnerability management relies on scanners such as OpenVAS and Tenable WAS, whose reports are delivered as PDF, a format designed for human reading and without a queryable structure. This work investigates the use of large language models to convert these reports into structured, queryable records under a canonical schema that is independent of the source scanner. The papers establish the feasibility of LLM-based extraction and map its failure modes; quantify, across 450 independent runs with five LLMs and three pipeline versions, that engineering refinement raises exact record match from 37.5% to 90.4% and reduces vulnerability-level omission from 20.5% to 1.7% without changing the underlying models; and consolidate the method into MulitaMiner, evaluated on 129 reports and 6,343 findings. The results support the thesis that, in structured extraction from security reports, pipeline engineering is worth more than swapping models.
Keywords: vulnerability management; large language models; structured information extraction; vulnerability scanners; OpenVAS; CSIRT; reproducibility.
QP1
Is it feasible to use large language models to convert scanner PDF reports into structured records under a single schema, and which failure modes limit that conversion?
Answered by Paper 1, feasibility
QP2
What is the relative contribution of pipeline engineering and of swapping the language model to extraction quality, measured by vulnerability coverage, field accuracy and severity classification?
Answered by Paper 2, evidence
QP3
How can the method be consolidated into an open, configurable and reproducible tool, and how does it behave at scale, in extraction quality and in the financial cost of running it?
Answered by Paper 3, artifact
Publications
Feasibility, evidence and artifact. None of the three would be sufficient on its own.
Study 1
ERRC 2025
Is it possible at all?
Study 2
SBSeg 2026
How much of the gain comes from the pipeline?
Study 3
SBSeg 2026
At what scale, and at what cost?
Each stage answers a concrete limitation of the one before it.
Feasibility
WRSeg, proceedings of the XXII Escola Regional de Redes de Computadores (ERRC 2025), p. 144-150.
Inventories the fields of both scanners, defines the field-by-field mapping to a unified schema and demonstrates that LLM-based extraction is feasible. ROUGE-L above 0.7 for GPT-4.1 and DeepSeek, with four recurring failure modes characterized, all tied to segmentation and truncation.
Published Open in the SBC library
Evidence
Submitted to SBSeg 2026, under review.
Builds three successive pipeline versions and measures, over 450 independent runs on the same five models, how much each refinement contributes, isolating the effect of the pipeline from the effect of the model.
Under review
Artifact
Submitted to the open-source track of SBSeg 2026, under review.
Consolidates the method into the open-source tool and submits it to a real institutional archive: 129 reports and 6,343 findings, measured against the scanner's native export, with the financial cost of every run reported.
Under review See the repository
@inproceedings{machado2025structured,
title = {Structured Extraction of Vulnerabilities in OpenVAS
and Tenable WAS Reports Using LLMs},
author = {Machado, Beatriz and Lautert, Douglas and
Kapelinski, Cristhian and Kreutz, Diego},
booktitle = {Anais da XXII Escola Regional de Redes de Computadores (ERRC)},
publisher = {Sociedade Brasileira de Computa\c{c}\~{a}o (SBC)},
pages = {144--150},
year = {2025},
url = {https://sol.sbc.org.br/index.php/errc/article/view/39195}
}
@mastersthesis{lautert2026mulitaminer,
title = {MulitaMiner: engenharia de pipeline para extra\c{c}\~{a}o estruturada
de relat\'{o}rios de scanners de vulnerabilidades com modelos
de linguagem},
author = {Lautert, Douglas},
school = {Universidade Federal do Pampa},
type = {Disserta\c{c}\~{a}o de Mestrado},
note = {Programa de P\'{o}s-Gradua\c{c}\~{a}o em Engenharia de Software (PPGES)},
address = {Alegrete, RS, Brasil},
year = {2026},
url = {https://mulitaminer.github.io}
}
Quick start
Three steps to extract vulnerabilities from a sample OpenVAS report.
git clone https://github.com/AnonShield/MulitaMiner.git
cd MulitaMiner
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
API_KEY_DEEPSEEK = "your-deepseek-api-key"
API_KEY_GPT4 = "your-openai-api-key"
API_KEY_LLAMA3 = "your-groq-api-key"
python3 main.py \
--input test/openvas/OpenVAS_JuiceShop.pdf \
--llm deepseek --scanner openvas \
--allow-duplicates --output-file openvas_test
DeepSeek is the recommended default: it gave the best balance of correctness, omission and cost in the scale evaluation. Full installation, usage and configuration guides are in the repository. Read the full documentation