cedricbonhomme commited on
Commit
a8a4c51
·
verified ·
1 Parent(s): 9db8c37

Rewrite model card: negative-result framing, usage, data, artifacts

Browse files
Files changed (1) hide show
  1. README.md +169 -21
README.md CHANGED
@@ -1,43 +1,161 @@
1
  ---
2
  library_name: transformers
3
- license: mit
4
  base_model: roberta-base
 
 
 
 
 
 
5
  tags:
 
 
 
 
 
 
 
6
  - generated_from_trainer
7
  model-index:
8
  - name: vulnerability-attack-technique-classification-roberta-base-llm-expanded
9
- results: []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  ---
11
 
12
- <!-- This model card has been generated automatically according to the information the Trainer had access to. You
13
- should probably proofread and complete it, then remove this comment. -->
14
-
15
  # vulnerability-attack-technique-classification-roberta-base-llm-expanded
16
 
17
- This model is a fine-tuned version of [roberta-base](https://huggingface.co/roberta-base) on an unknown dataset.
18
- It achieves the following results on the evaluation set:
19
- - Loss: 0.5859
20
- - F1 Micro: 0.3790
21
- - F1 Macro: 0.1480
22
- - Precision Micro: 0.2690
23
- - Recall Micro: 0.6415
24
- - Recall At 3: 0.5337
25
- - Recall At 5: 0.6156
26
-
27
- ## Model description
28
-
29
- More information needed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
  ## Intended uses & limitations
32
 
33
- More information needed
 
 
 
 
 
 
 
 
 
34
 
35
  ## Training and evaluation data
36
 
37
- More information needed
 
 
 
 
 
 
 
 
 
 
38
 
39
  ## Training procedure
40
 
 
 
 
 
 
41
  ### Training hyperparameters
42
 
43
  The following hyperparameters were used during training:
@@ -48,6 +166,9 @@ The following hyperparameters were used during training:
48
  - optimizer: Use OptimizerNames.ADAMW_TORCH_FUSED with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
49
  - lr_scheduler_type: linear
50
  - num_epochs: 40
 
 
 
51
 
52
  ### Training results
53
 
@@ -94,10 +215,37 @@ The following hyperparameters were used during training:
94
  | 0.2794 | 39.0 | 2418 | 0.6142 | 0.3975 | 0.1468 | 0.3176 | 0.5311 | 0.4984 | 0.6801 |
95
  | 0.2661 | 40.0 | 2480 | 0.6123 | 0.4025 | 0.1516 | 0.3195 | 0.5436 | 0.4972 | 0.6825 |
96
 
97
-
98
  ### Framework versions
99
 
100
  - Transformers 5.13.0
101
  - Pytorch 2.12.1+cu130
102
  - Datasets 4.8.5
103
  - Tokenizers 0.22.2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  library_name: transformers
3
+ license: cc-by-4.0
4
  base_model: roberta-base
5
+ pipeline_tag: text-classification
6
+ language:
7
+ - en
8
+ datasets:
9
+ - CIRCL/vulnerability-attack-techniques
10
+ - CIRCL/vulnerability-attack-techniques-llm-scaling
11
  tags:
12
+ - security
13
+ - vulnerability
14
+ - cve
15
+ - mitre-attack
16
+ - cti
17
+ - multi-label-classification
18
+ - negative-result
19
  - generated_from_trainer
20
  model-index:
21
  - name: vulnerability-attack-technique-classification-roberta-base-llm-expanded
22
+ results:
23
+ - task:
24
+ type: text-classification
25
+ name: Multi-label MITRE ATT&CK technique classification
26
+ dataset:
27
+ name: CIRCL/vulnerability-attack-techniques
28
+ type: CIRCL/vulnerability-attack-techniques
29
+ split: test
30
+ metrics:
31
+ - type: recall
32
+ name: Recall@5
33
+ value: 0.6156
34
+ - type: recall
35
+ name: Recall@3
36
+ value: 0.5337
37
+ - type: f1
38
+ name: F1 micro
39
+ value: 0.3790
40
+ - type: f1
41
+ name: F1 macro
42
+ value: 0.1480
43
  ---
44
 
 
 
 
45
  # vulnerability-attack-technique-classification-roberta-base-llm-expanded
46
 
47
+ **This is a negative-result comparison checkpoint, published for
48
+ reproducibility. For applications, use
49
+ [CIRCL/vulnerability-attack-technique-classification-roberta-base](https://huggingface.co/CIRCL/vulnerability-attack-technique-classification-roberta-base).**
50
+
51
+ A multi-label classifier that suggests [MITRE ATT&CK](https://attack.mitre.org/)
52
+ (Enterprise) techniques from a free-text vulnerability description. It is
53
+ identical to the released gold-only model same base model
54
+ ([roberta-base](https://huggingface.co/roberta-base)), same 53-technique
55
+ label vocabulary, same seed, same evaluation protocol — except for one
56
+ thing: its training set folds 984 additional LLM-labeled CVEs
57
+ ([CIRCL/vulnerability-attack-techniques-llm-scaling](https://huggingface.co/datasets/CIRCL/vulnerability-attack-techniques-llm-scaling),
58
+ labeled by qwen3.5:122b at ≈0.39 agreement with the expert gold labels)
59
+ into the 972 expert-labeled training rows.
60
+
61
+ The paper
62
+ [*Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and
63
+ the Limits of LLM-Assisted Label Expansion*](https://github.com/vulnerability-lookup/cve-attack-mapping-paper)
64
+ uses this pair of checkpoints to answer the question "can LLM-assisted
65
+ labeling extend a small expert gold set?" — and the answer is **no, not at
66
+ this agreement level**: no reliable ranking improvement at any expansion
67
+ size from 100 to 984 CVEs, and measurable degradation of rare-technique
68
+ coverage at scale.
69
+
70
+ DOI: [10.57967/hf/9624](https://doi.org/10.57967/hf/9624)
71
+
72
+ ## What this checkpoint shows
73
+
74
+ Five seeds, corrected protocol (checkpoint selection on the validation
75
+ split), identical test split — gold-only vs. this configuration
76
+ (gold + 984 LLM rows):
77
+
78
+ | Metric | Gold-only | Gold + 984 LLM |
79
+ |--------|-----------|----------------|
80
+ | Recall@5 | **0.673 ± 0.019** | 0.651 ± 0.022 |
81
+ | Recall@3 | 0.536 ± 0.032 | 0.534 ± 0.012 |
82
+ | F1 micro | 0.410 ± 0.006 | 0.427 ± 0.028 |
83
+ | F1 macro | **0.177 ± 0.014** | 0.151 ± 0.014 |
84
+
85
+ The pattern: the noisy labels concentrate mass on frequent, "obvious"
86
+ techniques (micro-F1 up a little) while deflating exactly the
87
+ rare-technique coverage the expert labels paid for (macro-F1 down ≈3 SEM,
88
+ no recall@5 gain). On CVE-2021-44077, for example, this checkpoint is more
89
+ confident than the gold model about T1190 (*Exploit Public-Facing
90
+ Application*) but drops the analyst-credited T1505 (*Server Software
91
+ Component*) below the prediction threshold and pushes tail techniques such
92
+ as T1136 (*Create Account*) from rank 18 to 32. Section 6 of the paper
93
+ gives the full account, including why an earlier apparent gain turned out
94
+ to be evaluation noise.
95
+
96
+ ## How to use
97
+
98
+ Same interface as the gold-only model:
99
+
100
+ ```python
101
+ import torch
102
+ from transformers import AutoModelForSequenceClassification, AutoTokenizer
103
+
104
+ model_id = "CIRCL/vulnerability-attack-technique-classification-roberta-base-llm-expanded"
105
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
106
+ model = AutoModelForSequenceClassification.from_pretrained(model_id)
107
+ model.eval()
108
+
109
+ description = "..." # free-text vulnerability description
110
+ inputs = tokenizer(description, truncation=True, max_length=512, return_tensors="pt")
111
+ with torch.no_grad():
112
+ probs = torch.sigmoid(model(**inputs).logits)[0]
113
+
114
+ for i in probs.argsort(descending=True)[:5]:
115
+ print(f"{model.config.id2label[int(i)]} {probs[i]:.4f}")
116
+ ```
117
+
118
+ Or side by side with the released model on a live CVE:
119
+
120
+ ```bash
121
+ vulntrain-infer-attack-classification --cve CVE-2021-44077 \
122
+ --model CIRCL/vulnerability-attack-technique-classification-roberta-base-llm-expanded
123
+ ```
124
 
125
  ## Intended uses & limitations
126
 
127
+ **Intended**: reproducing and extending the paper's expansion experiments —
128
+ e.g. contrasting its per-technique behaviour with the gold-only checkpoint,
129
+ or as a baseline for better silver-labeling strategies (higher-agreement
130
+ labelers, agreement-weighted losses, human-in-the-loop curation).
131
+
132
+ **Not intended**: production use. It is strictly dominated by the gold-only
133
+ model on ranking and rare-technique metrics, which is why Vulnerability-Lookup
134
+ deploys the gold-only checkpoint. All limitations of the gold-only model
135
+ (53-technique vocabulary, KEV-skewed data, English only, 512-token
136
+ truncation, uncalibrated scores, unverified suggestions) apply here too.
137
 
138
  ## Training and evaluation data
139
 
140
+ - **Expert rows**: the 972-row train split of
141
+ [CIRCL/vulnerability-attack-techniques](https://huggingface.co/datasets/CIRCL/vulnerability-attack-techniques)
142
+ (MITRE CTID gold mappings).
143
+ - **LLM rows (train only)**: 984 CVEs from
144
+ [CIRCL/vulnerability-attack-techniques-llm-scaling](https://huggingface.co/datasets/CIRCL/vulnerability-attack-techniques-llm-scaling),
145
+ labeled by qwen3.5:122b (Ollama, assertive single-call prompt following
146
+ the CTID methodology) — the best configuration of the paper's labeler
147
+ benchmark, at ≈0.39 F1 agreement with held-out expert labels.
148
+ - The label vocabulary stays frozen to the gold train split, and the
149
+ validation (106) and test (118) splits contain **only** expert-labeled
150
+ rows; checkpoint selection uses the validation split.
151
 
152
  ## Training procedure
153
 
154
+ Binary cross-entropy over 53 sigmoid outputs with balanced per-label
155
+ `pos_weight`, trained with `vulntrain-train-attack-classification`
156
+ (VulnTrain), like the gold-only model — only the training set differs
157
+ (1,956 rows instead of 972).
158
+
159
  ### Training hyperparameters
160
 
161
  The following hyperparameters were used during training:
 
166
  - optimizer: Use OptimizerNames.ADAMW_TORCH_FUSED with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments
167
  - lr_scheduler_type: linear
168
  - num_epochs: 40
169
+ - max_length: 512
170
+ - loss: BCEWithLogitsLoss, balanced pos_weight
171
+ - checkpoint selection: best macro-F1 on the validation split
172
 
173
  ### Training results
174
 
 
215
  | 0.2794 | 39.0 | 2418 | 0.6142 | 0.3975 | 0.1468 | 0.3176 | 0.5311 | 0.4984 | 0.6801 |
216
  | 0.2661 | 40.0 | 2480 | 0.6123 | 0.4025 | 0.1516 | 0.3195 | 0.5436 | 0.4972 | 0.6825 |
217
 
 
218
  ### Framework versions
219
 
220
  - Transformers 5.13.0
221
  - Pytorch 2.12.1+cu130
222
  - Datasets 4.8.5
223
  - Tokenizers 0.22.2
224
+
225
+ ## Related artifacts
226
+
227
+ | Artifact | Location | DOI |
228
+ |----------|----------|-----|
229
+ | **Released model (use this one)** | [CIRCL/vulnerability-attack-technique-classification-roberta-base](https://huggingface.co/CIRCL/vulnerability-attack-technique-classification-roberta-base) | [10.57967/hf/9623](https://doi.org/10.57967/hf/9623) |
230
+ | Gold dataset (1,207 CVEs, CTID-curated labels) | [CIRCL/vulnerability-attack-techniques](https://huggingface.co/datasets/CIRCL/vulnerability-attack-techniques) | [10.57967/hf/9621](https://doi.org/10.57967/hf/9621) |
231
+ | LLM expansion dataset (984 LLM-labeled CVEs) | [CIRCL/vulnerability-attack-techniques-llm-scaling](https://huggingface.co/datasets/CIRCL/vulnerability-attack-techniques-llm-scaling) | [10.57967/hf/9622](https://doi.org/10.57967/hf/9622) |
232
+ | Code | [vulnerability-lookup/VulnTrain](https://github.com/vulnerability-lookup/VulnTrain) | — |
233
+ | Paper + trainer logs | [vulnerability-lookup/cve-attack-mapping-paper](https://github.com/vulnerability-lookup/cve-attack-mapping-paper) | — |
234
+
235
+ ## Citation
236
+
237
+ ```bibtex
238
+ @misc{bonhomme2026cveattack,
239
+ title = {Mapping CVEs to MITRE ATT\&CK Techniques: A Curated Gold-Set
240
+ Classifier and the Limits of LLM-Assisted Label Expansion},
241
+ author = {Bonhomme, C{\'e}dric},
242
+ year = {2026},
243
+ note = {Preprint},
244
+ }
245
+ ```
246
+
247
+ ## Acknowledgements
248
+
249
+ Developed at [CIRCL](https://www.circl.lu) in the context of the
250
+ [AIPITCH](https://www.science.nask.pl/en/research-areas/projects/12456)
251
+ project, co-funded by the European Union.