Today's Cat Is Tomorrow's Dog: Accounting for Time-Based Changes in the Labels of ML Vulnerability Detection Approaches
Not on the map. Why?
Abstract (arXiv)
Vulnerability datasets used for ML testing implicitly contain retrospective information. When tested on the field, one can only use the labels available at the time of training and testing (e.g. seen and assumed negatives). As vulnerabilities are discovered across calendar time, labels change and past performance is not necessarily aligned with future performance. Past works only considered the slices of the whole history (e.g. DiverseVUl) or individual differences between releases (e.g. Jimenez et al. ESEC/FSE 2019). Such approaches are either too optimistic in training (e.g. the whole history) or too conservative (e.g. consecutive releases). We propose a method to restructure a dataset into a series of datasets in which both training and testing labels change to account for the knowledge available at the time. If the model is actually learning, it should improve its performance over time as more data becomes available and data becomes more stable, an effect that can be checked with the Mann-Kendall test. We validate our methodology for vulnerability detection with 4 time-based datasets (3 projects from BigVul dataset + Vuldeepecker's NVD) and 5 ML models (Code2Vec, CodeBERT, LineVul, ReGVD, and Vuldeepecker). In contrast to the intuitive expectation (more retrospective information, better performance), the trend results show that performance changes inconsistently across the years, showing that most models are not learning.
Key facts. No citing papers in the map yet (data through 7 Oct 2026). Builds on 24 of its 72 references that are in the map. First posted on arXiv 13 Jun 2025.
Builds on
24 of 72 references.
References · 24
- 2019RoBERTa: A Robustly Optimized BERT Pretraining Approachcited by 13,266
- 2020CodeBERT: A Pre-Trained Model for Programming and Natural Languagescited by 1,286
- 2021Unified Pre-training for Program Understanding and Generationcited by 361
- 2019Devign: Effective Vulnerability Identification by Learning Comprehensive Program Semantics via Graph Neural Networkscited by 266
- 2018code2vec: Learning Distributed Representations of Codecited by 249
- 2020Deep Learning based Vulnerability Detection: Are We There Yet?cited by 142
- 2018Automated Vulnerability Detection in Source Code Using Deep Representation Learningcited by 114
- 2020Dos and Don'ts of Machine Learning in Computer Securitycited by 98
- 2023DiverseVul: A New Vulnerable Source Code Dataset for Deep Learning Based Vulnerability Detectioncited by 98
- 2018SySeVR: A Framework for Using Deep Learning to Detect Software Vulnerabilitiescited by 91
- 2021CVEfixes: Automated Collection of Vulnerabilities and Their Fixes from Open-Source Softwarecited by 89
- 2022VulBERTa: Simplified Source Code Pre-Training for Vulnerability Detectioncited by 51
12 more
- 2023Data Quality for Software Vulnerability Datasetscited by 49
- 2021D2A: A Dataset Built for AI-Based Vulnerability Detection Methods Using Differential Analysiscited by 48
- 2022An Empirical Study of Deep Learning Models for Vulnerability Detectioncited by 44
- 2021ReGVD: Revisiting Graph Neural Networks for Vulnerability Detectioncited by 32
- 2023Uncovering the Limits of Machine Learning for Automatic Vulnerability Detectioncited by 30
- 2019A Manually-Curated Dataset of Fixes to Vulnerabilities of Open-Source Softwarecited by 28
- 2021DeepCVA: Automated Commit-level Vulnerability Assessment with Deep Multi-task Learningcited by 11
- 2023Distinguishing Look-Alike Innocent and Vulnerable Code by Subtle Semantic Representation Learning and Explanationcited by 11
- 2024On the Effectiveness of Function-Level Vulnerability Detectors for Inter-Procedural Vulnerabilitiescited by 10
- 2017Boosting Automatic Commit Classification Into Maintenance Activities By Utilizing Source Code Changescited by 8
- 2021JavaBERT: Training a transformer-based model for the Java programming languagecited by 5
- 2023Empirical Analysis of Vulnerabilities Life Cycle in Golang Ecosystemcited by 5
Built on by
Not cited yet.