Context Matters: Qualitative Insights into Developers' Approaches and Challenges with Software Composition Analysis

Elizabeth Lin

34th USENIX Security Symposium (USENIX Security '25) · Day 2 · Usable Privacy and Security 2: Software and Experts

Watch on YouTube · Slides

Visual summary for Context Matters: Qualitative Insights into Developers' Approaches and Challenges with Software Composition Analysis by Elizabeth Lin
Visual summary for Context Matters: Qualitative Insights into Developers' Approaches and Challenges with Software Composition Analysis by Elizabeth Lin

Key moments

  1. 0:00 Introduction to software composition analysis (SCA) challenges
  2. 2:00 User study methodology and research questions
  3. 3:00 Finding 1: Lack of context in vulnerability alerts
  4. 4:10 Finding 2: SCA tool configuration and pipeline integration issues
  5. 6:00 SCA tools causing CI/CD halts and developer annoyance
  6. 8:00 Finding 3: Overhead and scaling challenges for SCA

Context Matters: Qualitative Insights into Developers' Approaches and Challenges with Software Composition Analysis

Speakers: Elizabeth Lin

Conference: USENIX Security

YouTube: https://www.youtube.com/watch?v=iMAynUS_9bU

Overview

This talk, presented by Elizabeth Lin at USENIX Security, delves into the pervasive challenges developers face when utilizing Software Composition Analysis (SCA) tools for managing vulnerabilities within open-source components. Given that an estimated 90% of modern software relies on open-source libraries, effectively identifying and remediating their associated security flaws has become a critical concern in software supply chain security. The infamous Log4Shell vulnerability serves as a stark reminder of the widespread impact a single open-source flaw can have, underscoring the vital role SCA tools are intended to play.

However, despite their promise, SCA tools frequently fall short of developer expectations, often generating an overwhelming volume of alerts with insufficient context and unclear remediation guidance. Lin's presentation details a comprehensive user study designed to unpack these frustrations, exploring how developers interact with SCA tools, the difficulties encountered during deployment and integration, and the complexities of acting on vulnerability results. The insights gleaned from this qualitative research highlight a significant disconnect between the perceived utility of SCA tools and the practical realities of development workflows, ultimately advocating for a more context-aware and developer-centric approach to software composition analysis.

Background

▶ Watch: Introduction to software composition analysis (SCA) challenges (0:00)

The modern software development landscape is fundamentally shaped by the ubiquitous adoption of open-source components. This reliance, while accelerating development and fostering innovation, introduces a complex security challenge: managing vulnerabilities within a vast and ever-evolving dependency graph. Software Composition Analysis (SCA) tools emerged as a primary solution to this problem, designed to identify all open-source components within an application, generate Software Bills of Materials (SBOMs), and, crucially, flag known vulnerabilities associated with those components. The ideal SCA tool, as envisioned by security practitioners, would be easy to deploy, accurately identify components, alert only on relevant vulnerabilities, and provide actionable remediation advice.

However, the reality often diverges significantly from this ideal. Prior discussions and anecdotal evidence from the developer community have consistently highlighted several pain points. Developers frequently report being overwhelmed by a sheer volume of alerts, many of which are false positives or pertain to non-exploitable code paths. Furthermore, the remediation suggestions provided by SCA tools are often generic or lack the specific context needed to implement effective fixes without introducing new issues. This leads to alert fatigue, where critical alerts may be overlooked amidst the noise, and significant manual effort is expended triaging findings that should ideally be automated or more intelligently presented.

To systematically understand these challenges, the research outlined in this talk was structured around four core questions: how users interact with SCA tools, the difficulties encountered during tool deployment, the hurdles in acting on SCA results, and potential avenues for process improvement. By conducting 20 semi-structured interviews with industry professionals, the study aimed to gather qualitative insights into the real-world experiences that underpin these long-standing frustrations, providing a granular view of why the promise of SCA often clashes with its practical application in diverse development environments.

Key Findings

▶ Watch: Finding 1: Lack of context in vulnerability alerts (3:00)

The qualitative study, based on 20 semi-structured interviews with industry professionals, uncovered three overarching themes that encapsulate the primary challenges developers face with SCA tools. These themes collectively point to a significant lack of context throughout the entire SCA process, from initial integration to final vulnerability remediation.

The first major theme highlighted a pervasive lack of crucial information within vulnerability alerts, necessitating extensive manual effort from developers. Participants frequently reported receiving a high volume of alerts, forcing them to triage and prioritize based on metrics like CVSS scores or vendor-assigned severity. However, a more critical prioritization factor was often the impact a vulnerability had on the application, which proved exceptionally difficult to determine. Developers lacked sufficient context from the alerts themselves, requiring them to manually investigate CVE details, understand how the vulnerable library was being used, and, most critically, ascertain whether the vulnerable function was actually reachable and exploitable within their specific application context. This manual deep dive into codebases and vulnerability databases consumed significant time and resources, often leading to frustration and delays.

The second theme focused on the critical importance of when and how SCA tools are integrated into development pipelines. Incorrect configuration or poor tool design could introduce significant friction. Participants noted that SCA tools often struggle with unsupported scripts or legacy languages, forcing developers to create workarounds or pre-process their code. Discrepancies in performance were also observed across different language ecosystems, primarily because package managers resolve dependencies in varied ways, which some SCA tools fail to fully accommodate. This often led organizations to employ multiple SCA tools simultaneously, each specializing in different ecosystems, but then facing the new challenge of stitching these disparate outputs together using custom wrappers – a significant maintenance burden. When integrated into CI/CD pipelines as security gates, SCA tools frequently blocked code commits or pull requests due to a high volume of alerts. If these halts occurred too often, development teams would become annoyed, sometimes reverting to manual, weekly SCA runs, undermining the very goal of continuous security integration. The key takeaway here was the need to configure tools to block only on truly critical, high-impact vulnerabilities.

The third theme synthesized the challenges from the first two, demonstrating how the lack of context amplified overhead, particularly when scaling SCA across multiple projects and teams. Fixing vulnerabilities often involved updating libraries, but this frequently led to version compatibility issues or breaking changes if a major version update was required. In such cases, developers were forced into manual patching or, in extreme instances, forking entire libraries to remove vulnerable code, an extremely resource-intensive endeavor. Beyond technical fixes, overhead also manifested in organizational friction, with extensive back-and-forth between security and engineering teams debating the actual risk posed by an alert. Furthermore, business decisions sometimes dictated accepting a known vulnerability risk if the cost or time to fix outweighed the immediate business necessity (e.g., product shipment deadlines). In other scenarios, no non-vulnerable alternative component was available, especially with niche or single-source suppliers. When risks were accepted, mitigation strategies included isolating vulnerable components, for example, by removing network access to prevent untrusted data from exploiting the flaw. Larger organizations sometimes developed custom tooling to automate aspects of triage and learning from past evaluations, but this required dedicated teams, a luxury often unavailable to smaller organizations where individual engineers bore the full burden of the entire Software Development Life Cycle (SDLC) and SCA process.

Technical Deep Dive

▶ Watch: Finding 2: SCA tool configuration and pipeline integration issues (4:10)

The core technical challenges highlighted by the study revolve around the inherent limitations of current SCA tools in providing deep, contextual understanding of identified vulnerabilities. While SCA tools excel at generating Software Bills of Materials (SBOMs) and mapping known CVEs to identified components, their effectiveness diminishes when assessing the actual risk within a specific application.

A critical technical gap identified is the lack of reachability context. An SCA tool might flag log4j-core as vulnerable to Log4Shell (CVE-2021-44228), but without knowing if the vulnerable JNDI lookup function is actually invoked by the application's code path, the alert generates noise. Developers spend significant time manually tracing code execution to determine if the vulnerable function is indeed reachable, a task that ideally should be automated or at least informed by the SCA tool. This necessitates a deeper level of static or dynamic analysis integrated into the SCA process, moving beyond simple version-based matching.

Further technical context required includes infrastructure context and network configurations. Understanding how a vulnerable library interacts with the broader application architecture, its runtime environment, and the network it operates within is crucial for accurate risk assessment. For instance, a component might be vulnerable, but if it's deployed behind multiple layers of firewalls, isolated from external network access, or only processes trusted internal data, its exploitability might be significantly reduced. SCA tools currently lack the capability to ingest and correlate this environmental metadata directly with vulnerability alerts. This implies a need for SCA solutions to integrate with infrastructure-as-code definitions, cloud configuration data, and network topology maps to provide a holistic view of risk.

The technical hurdles extend to remediation. When a vulnerability requires a library update, developers frequently encounter version compatibility issues. Updating to a new major version of a library often introduces breaking changes to APIs or functionality, requiring substantial code refactoring. This is a non-trivial engineering task, often outweighing the perceived security benefit for non-critical vulnerabilities. In extreme cases, participants described forking open-source libraries, manually removing or patching vulnerable code, and then maintaining their custom fork as an upstream dependency. This is a highly technical and resource-intensive workaround, essentially creating a custom, internal version of an open-source project, which incurs significant long-term maintenance debt.

Finally, the discussion of custom tooling in larger organizations hints at advanced technical solutions to address SCA limitations. While not fully elaborated, the concept of custom tools that "learn from previous evaluations and bring that forward to newer findings" suggests an application of machine learning or sophisticated rule-based systems. These systems would likely analyze developer decisions on past alerts (e.g., marking as false positive, accepted risk, or fixed) and apply these learnings to new, similar alerts, thereby automating aspects of triage and reducing manual burden. Such tooling represents a significant investment in internal security engineering, indicating the current state of SCA tools is often insufficient for enterprise-scale needs without substantial augmentation.

Demo / Proof of Concept

▶ Watch: SCA tools causing CI/CD halts and developer annoyance (6:00)

This talk presented the comprehensive findings of a qualitative user study focused on the challenges developers face with Software Composition Analysis (SCA) tools. As such, the presentation did not include a live demonstration or proof of concept of a specific security tool, exploit, or remediation technique. The objective was to gather and analyze real-world experiences and perceptions from industry professionals rather than showcasing a technical implementation.

Defensive Implications

▶ Watch: Finding 3: Overhead and scaling challenges for SCA (8:00)

The findings from this study offer critical insights for both developers leveraging SCA tools and the vendors who create them, outlining clear paths for improving software supply chain security.

For SCA tool vendors, the primary implication is the urgent need to embed more context directly into vulnerability alerts. This includes developing capabilities to provide reachability context, indicating whether a vulnerable function is actually invoked by the application's code. Integrating infrastructure context (e.g., how the component interacts with other parts of the application or the underlying tech stack) and network configuration awareness (e.g., firewall rules, network isolation) would enable tools to assess true exploitability more accurately. By correlating these data points, SCA tools can drastically reduce false positives and prioritize alerts that genuinely pose a risk, moving beyond simple version matching to intelligent risk assessment. Vendors should also strive for better support across diverse language ecosystems and package managers, potentially through more modular or extensible tool architectures.

For organizations and security teams, several defensive strategies emerge. First, it is crucial to recognize that no single SCA tool is perfect; each has its strengths and weaknesses. Teams should carefully evaluate tools based on their specific technology stack, development pipeline, and desired level of automation. Integrating SCA tools effectively into CI/CD pipelines requires careful configuration to avoid excessive build failures. Organizations should prioritize blocking code commits only on critical vulnerabilities that are demonstrably exploitable and pose a significant risk to the application, rather than blocking on every detected flaw.

Furthermore, fostering robust collaboration between security and engineering teams is paramount. Establishing clear communication channels and processes for discussing vulnerability findings, assessing risk, and agreeing on remediation strategies can prevent the "back-and-forth" overhead described by participants. Security teams need to understand development constraints, such as version compatibility issues or business deadlines, while engineering teams must appreciate the security implications of their dependencies.

When direct remediation (e.g., updating a library) is not feasible due to technical constraints or business decisions, defenders should implement compensating controls. The study highlighted isolating vulnerable components, such as removing network access, as an effective strategy to mitigate risk by limiting the attack surface. For larger organizations, investing in custom tooling to automate vulnerability triage and leverage past remediation decisions can significantly reduce manual overhead, though this requires dedicated resources. Ultimately, defenders must adopt a pragmatic approach, balancing security ideals with operational realities, and continuously adapt their SCA processes to be more context-aware and developer-friendly.

Key Takeaways

  • Context is King: Current SCA tools lack sufficient context (reachability, infrastructure, network configuration) to accurately assess vulnerability exploitability, leading to high false positive rates and significant manual developer effort.
  • Integration Friction: Poorly configured SCA tools, especially in CI/CD pipelines, can halt development processes, causing frustration and sometimes leading teams to abandon automated scanning for manual, less frequent runs.
  • Scaling Amplifies Overhead: The challenges of triaging, fixing, and coordinating vulnerability remediation are greatly magnified when SCA is scaled across multiple projects and larger organizational structures.
  • Complex Remediation: Fixing vulnerabilities often involves difficult version compatibility issues, breaking changes, or even the extreme measure of forking and manually patching open-source libraries.
  • Business vs. Security Risk: Business decisions, such as product shipment deadlines or the lack of non-vulnerable component alternatives, can sometimes override immediate security fixes, necessitating alternative mitigation strategies like component isolation.
  • Collaboration and Customization: Effective SCA requires strong collaboration between security and engineering teams, and larger organizations often resort to developing custom tooling to automate triage and manage the scale of alerts.

About the Speaker(s)

Elizabeth Lin is a researcher whose work focuses on understanding the human element in software security, particularly the challenges faced by developers. Her presentation at USENIX Security on Software Composition Analysis tools highlights her expertise in qualitative research methodologies, including user studies and semi-structured interviews, to gather deep insights into developer experiences. Her research aims to identify pain points and propose improvements for security tools and processes, ultimately contributing to more effective software supply chain security.

Reviews

Dr. Zero (Offensive Security Researcher) — SOLID

Competent usability research on SCA tool friction that confirms what most practitioners already know anecdotally — alert fatigue is real, reachability context is missing, CI/CD integration is painful. The work is methodologically sound and the qualitative findings are organized coherently, but 20 interviews at USENIX Security is a modest sample for a venue that expects you to move the field.

Heather Calloway (CISO) — SOLID

Lin's user study produces credible qualitative evidence for what many security leaders already suspect: SCA tools generate noise faster than developers can process signal, and the gap between alert volume and remediation capacity is an organizational problem as much as a tooling problem. The research is sound and the findings are real, but the talk stops where the governance conversation should begin.

→ Top-rated talks at 34th USENIX Security Symposium (USENIX Security '25)

All talks from 34th USENIX Security Symposium (USENIX Security '25)