VulnTrain
VulnTrain turns the vulnerability data collected by Vulnerability-Lookup into AI datasets and trained models. It processes over one million advisory records (CVE, GitHub advisories, CSAF, PySecDB, CNVD, FSTEC) to answer questions such as:
- How severe is this vulnerability, given only its description?
- Which CWE does this patch fix?
- Which MITRE ATT&CK techniques does this CVE enable?
All resulting datasets and models are published on Hugging Face:
Installation
pipx install VulnTrain
For development:
git clone https://github.com/vulnerability-lookup/VulnTrain.git
cd VulnTrain/
poetry install
Documentation
Full documentation — configuration, dataset generation, training recipes and methodology — is available at https://vulnerability-lookup.github.io/VulnTrain
For more information about the use of AI in Vulnerability-Lookup, please refer to the user manual.
Usage
Every task follows the same three stages, each with its own command.
1. Build a dataset from the vulnerability sources and push it to the Hub:
vulntrain-dataset-generation --sources cvelistv5,github,csaf_redhat,pysec \
--repo-id CIRCL/vulnerability-scores
2. Train a model on that dataset (trainers push to the Hub by default; use
--no-push for a local run):
vulntrain-train-severity-classification --base-model roberta-base \
--dataset-id CIRCL/vulnerability-scores \
--repo-id CIRCL/vulnerability-severity-classification-roberta-base
3. Validate the trained model:
vulntrain-validate-severity-classification
Available tasks
| Task | Train with | Published model |
|---|---|---|
| Severity classification | vulntrain-train-severity-classification |
…severity-classification-roberta-base |
| Severity classification (Chinese, CNVD) | vulntrain-train-severity-cnvd-classification |
…severity-classification-chinese-macbert-base |
| CWE classification from patches | vulntrain-train-cwe-classification |
…cwe-classification-modernbert-base |
| CVE → ATT&CK techniques | vulntrain-train-attack-classification |
…attack-technique-classification-roberta-base |
| CVE → ATT&CK techniques (bi-encoder) | vulntrain-train-attack-biencoder |
…attack-technique-biencoder |
| Description generation | vulntrain-train-description-generation |
…description-generation-gpt2* |
Every command accepts --help. The exact command lines used to regenerate each
published artifact are in the
runbook.
How to cite
For the severity classification work:
Bonhomme, C., & Dulaunoy, A. (2025). VLAI: A RoBERTa-Based Model for Automated Vulnerability Severity Classification (Version 1.4.0) [Computer software]. https://doi.org/10.48550/arXiv.2507.03607
@misc{bonhomme2025vlai,
title={VLAI: A RoBERTa-Based Model for Automated Vulnerability Severity Classification},
author={Cédric Bonhomme and Alexandre Dulaunoy},
year={2025},
eprint={2507.03607},
archivePrefix={arXiv},
primaryClass={cs.CR}
}
For the ATT&CK technique mapping work:
Bonhomme, C., & Dulaunoy, A. (2026). Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion. https://doi.org/10.48550/arXiv.2607.25572
@misc{bonhomme2026mappingcvesmitreattck,
title={Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion},
author={Cédric Bonhomme and Alexandre Dulaunoy},
year={2026},
eprint={2607.25572},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2607.25572},
}
License
VulnTrain is licensed under GNU General Public License version 3
Copyright (c) 2025-2026 Computer Incident Response Center Luxembourg (CIRCL)
Copyright (C) 2025-2026 Cédric Bonhomme - https://github.com/cedricbonhomme
Copyright (C) 2025 Léa Ulusan - https://github.com/3LS3-1F
Funding
AIPITCH (AI-Powered Innovative Toolkit for Cybersecurity Hubs) is a co-funded EU project supported by the European Cybersecurity Competence Centre (ECCC) under the DIGITAL-ECCC-2024-DEPLOY-CYBER-06-ENABLINGTECH program and CIRCL.
The project brings together an international consortium to develop AI-based tools that enhance the capabilities of operational cybersecurity teams. These tools are designed to support critical services, with a focus on national security teams, while also being applicable to internal security teams in companies and institutions.
Metadata
Release files for VulnTrain 3.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vulntrain-3.3.0.tar.gz | 97.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vulntrain-3.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 215.9 kB
Release files / vulntrain-3.3.0.tar.gz
| Download URL | vulntrain-3.3.0.tar.gz |
|---|---|
| Size | 97.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cc6f23ad08c57281c2ab6349be38125b117d2836e521d9bb5b04f767574bbf9e
|
|
BLAKE2b-256 checksum How to use checksums |
ce27730588efec323b19fa54ad0f807c5ea0f8bed72db7564a835a795f34949b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / vulntrain-3.3.0-py3-none-any.whl
| Download URL | vulntrain-3.3.0-py3-none-any.whl |
|---|---|
| Size | 118.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ae356b803d4bc6b0d9566c339b947284f6ce5462f0b2c711296aac98bbb954ad
|
|
BLAKE2b-256 checksum How to use checksums |
eace108f5255f9e99545f7850250fc8f51afe0a16caf8fe3c8c72bf9367bc39a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency log