Papers for

software maintenance engineers

Papers whose findings have a practical use for this group, as judged from the abstract. Open a paper to read what it means in practice.

Code evolution tracing improves finding vulnerability commits

TraceVIC: Causal Reasoning over Code Evolution for Identifying Vulnerability-Inducing Commits

Abstract: Software vulnerabilities are often discovered long after they are introduced, making it difficult to identify the vulnerability-inducing commit (VIC) responsible for introducing the underlying vulnerable condition. Existing VIC identification techniques largely rely on git blame to trace vulnerable code through revision history and use positional heuristics, such as selecting its earliest or most recent modification. However, the true VIC may occur anywhere within this history, and vulnerable behavior may depend on code that evolves across multiple revisions. We therefore argue that VIC identification requires reasoning about how vulnerability-relevant code evolves, rather than simply where a candidate commit appears in the revision history. We present TraceVIC, a temporal graph-based approach for identifying and ranking VICs by reasoning over code evolution. TraceVIC first localizes likely root-cause lines and traces their histories across revisions, constructing graph representations that capture program structure within each revision and the evolution of vulnerability-relevant code across the history. It reasons over the resulting revision history, using temporal edges to preserve correspondences between program elements across consecutive revisions, and directly ranks candidate commits according to their contribution to the vulnerable condition. Ablation results show that modeling the full revision history improves F2 from 0.637 to 0.814. TraceVIC improves F2 by up to 28.7% over state-of-the-art methods and identifies a valid VIC for 78 of 79 vulnerabilities across four unseen C/C++ projects.

Tue 22 SeptSoftware EngineeringArtificial Intelligence
The gist
Software bugs that cause security problems often creep in during code changes but are discovered much later, making it hard to find the exact change that introduced them. The authors propose TraceVIC, a tool that looks at how code changes over time rather than just the earliest or latest related code. TraceVIC builds a detailed map of code evolution and uses this to better identify which change caused the vulnerability. Their method outperforms previous techniques and reliably finds the problematic changes in different C and C++ projects.
Open 2609.26711v1