BLOG
BLOG
81% of development teams knowingly ship code with vulnerabilities. That number gets quoted a lot. Usually to make a point about how developers don't take security seriously.
Here's a different reading: most of those developers knew the vulnerability was there. They just couldn't do anything about it in time.
That's not apathy. That's a system failure.
Feature deadlines are usually less flexible than security work. Even when developers know an issue is real, fixing it is rarely as simple as acknowledging an alert. It means investigating the impact, validating the exploitability, testing the remediation, and ensuring the fix doesn't break anything else.
That takes time, most delivery schedules don't leave room for. So when release dates are fixed, and feature commitments are already in motion, security work often gets pushed to later—not because developers ignore it, but because there is no practical way to do both at once.
Most security tools don't fail at detection. They fail at adoption. And the reason developers stop using them has nothing to do with a lack of concern for security. It has everything to do with what those tools ask developers to do, when, and how.
When 81% of developers ship vulnerable code, the instinct is to call it a culture problem.
It isn't.
Developers are rational actors. They make prioritization decisions based on the information and incentives in front of them.
When a security tool generates 847 alerts with no indication of which ones are real, and the sprint deadline is in two days, closing the tab is the only logical move. The tool made inaction the path of least resistance.
Here's how the incentive structure actually works:
Before pointing at the developer, examine the tool.
In most cases, the tool is doing exactly what it was designed to do, but for a security team, not a development team.
Security tools fail developer adoption in six specific, repeatable ways. They are not bugs. They are design decisions made without developers in mind.
You open your security dashboard. There are 847 critical alerts. You have a PR review in 20 minutes.
OX Security's 2025 benchmark — analyzing 101 million findings across 178 organizations — found that 95–98% of AppSec alerts don't require action. Out of roughly 570,000 average alerts per organization, just 202 were genuinely critical.
The result is what researchers call "alert blindness." Constant exposure to low-fidelity alarms causes desensitization. It's a documented psychological response, and it's entirely rational.
SAST tools are the biggest offenders. A library may contain a vulnerable method that the application never calls. The tool flags it anyway. There's no reachability analysis. There's no context. Just a red badge and a CVSS score.
"At some point, your developers stop seeing 'critical' as a severity level and start seeing it as the default label everything gets. When your scanner cries wolf on 900 findings, and two of them are real, you haven't built a security culture. You've built alert fatigue."
— Siddharth Konar, Senior Software Development Engineer, Appknox
When 9 out of 10 alerts are noise, ignoring them all becomes the rational strategy. The developer isn't wrong. The tool is.
Key takeaway: When everything is critical, nothing is.
Context switching between tools is the #3 productivity killer for developers in 2025, according to Atlassian's survey of 3,500 engineers.
The cumulative cost is significant: 50% of developers report losing 10 or more hours per week to organizational inefficiencies — context switching, finding information, and adapting to tools that don't fit their workflow.
The "swivel chair" workflow is the culprit. A developer gets a security alert. They leave their IDE. They log into a separate portal. They interpret a jargon-heavy finding. They return to their IDE. Twenty-three minutes later, they've half-rebuilt their mental context.
61% of developers say it's critical that security doesn't block or decelerate their work (Checkmarx Future of AppSec Report, 2024).
63% say leaders don't understand this pain, up sharply from 44% the year before (Atlassian Developer Experience Report 2025).
The tool doesn't live where developers live. That alone is enough to kill adoption.
When a security scan takes minutes or hours to complete, it becomes a pipeline bottleneck. Developers don't wait for it. They find ways around it, such as commenting out the scan stage, skipping the check on hotfix branches, or simply shipping before results arrive.
This isn't dramatic. It's quiet. An unwritten agreement forms: skip the security stage on this branch. Comment out the check before the Friday release. Nearly three in four developers say software supply chain security tools are debilitating to their productivity (Harris Poll, GitHub Resources, April 2025).
SCA tools create their own version of this — "dependency hell." A tool flags every library with a known CVE, regardless of whether the vulnerable function is actually called in the codebase.
Developers stop reading the results. The tool runs. Nobody looks.
Most security tools are built to find vulnerabilities, but not fix them.
They deliver findings with CVE links, severity scores, and CWE identifiers. What they don't deliver is a developer-ready fix path — code-level guidance, matched to the framework, the language, and the specific context of that application.
A "critical CVSS 9.8" alert in a Java library means very little to a mobile developer who doesn't know if the vulnerable code path is ever reached in their app.
GitHub Resources (April 2025) put it plainly: "Most developers aren't security experts, so fixing vulnerabilities takes far longer than it should. Developer productivity gets drained, and security debt continues to rise."
Security debt compounds sprint over sprint. Not because developers don't want to fix things, but because they were handed a problem list rather than a solution.
Security tools generate findings. They rarely assign them.
The question "who fixes this?" gets left unanswered. And in that silence, between security teams and development teams, the finding dies.
The security team reports the vulnerability. The developer says it's a platform issue. The platform team says it's an application issue. No ticket gets created. The vulnerability ships.
This is particularly damaging in mobile environments. An API security finding may belong to the mobile team, the backend team, or a third-party SDK vendor. Nobody can tell. Nobody claims it.
91% of organizations experience delays in vulnerability remediation, driven by fragmented processes, inefficient collaboration, and a lack of actionable insights (Seemplicity 2025 Remediation Operations Report)
Key takeaway: A vulnerability with no named owner has no deadline. And a vulnerability with no deadline never gets fixed.
Security tools speak in CVE identifiers, CVSS scores, and OWASP Top 10 categories. Developers write authentication flows and API integrations. These are different languages.
As Josh Lemos, CISO at GitLab, put it: "It is common for the security team to run tools adjacent to developer tools and suffer from long feedback cycles." (Help Net Security, June 2025)
When findings arrive without a business context, without explaining what the vulnerability means for this application, this user, this real-world attack scenario, they get deprioritized by default.
|
Failure mode |
What the tool does |
Developer reaction |
|
Alert volume without context |
Flags 847 issues equally |
Ignores all of them |
|
Context switching |
Forces exit from the IDE to the security portal |
Closes the tab, loses flow |
|
Pipeline bottlenecks |
Blocks or delays builds |
Bypasses or disables the scan |
|
No remediation guidance |
Delivers CVE links and severity scores |
Can't act, so leaves finding open |
|
Ownership gap |
Assigns findings to nobody |
Finding dies between teams |
|
Language barrier |
Reports in security jargon |
Doesn't understand, so deprioritizes |
Security posture is not defined by the tools you have. It's defined by the issues you actually fix.
Ignored findings don't represent low risk. They represent unresolved risk, which compounds silently, sprint over sprint, into security debt that nobody is tracking. The security team thinks coverage exists. Leadership thinks the tools are working. Developers think someone else is handling it.
Nobody is handling it.
This is the real cost: not the vulnerabilities the tools found, but the ones nobody acted on. And nowhere is this gap wider, or more dangerous, than in mobile application security.
Most security tools were built for web applications and network infrastructure. Mobile apps live in a different environment. They call APIs through native flows. They store tokens on-device. They authenticate through stateful sessions across app restarts. They run behind certificate pinning layers that attackers know how to bypass.
72% of organizations reported a mobile app security incident in 2025 (Guardsquare 2026). 86% of the 135 most popular business apps contain known security flaws (Jamf Security 360: Annual Trends Report 2025).
These numbers don't come from a lack of scanning. They come from scanning the wrong things in the wrong way.
Mobile developers work in Xcode and Android Studio. Most security tools don't integrate natively with either. When a mobile security scan runs, it typically produces a PDF or a dashboard in a separate web portal that the developer has to manually translate into something actionable in their environment.
Mobile APIs are often out of scope entirely. The SAST runs on web code. The WAF protects web traffic. The mobile API gets tested manually once a quarter, if someone remembers.
Mobile developers also move fast by relying heavily on third-party SDKs, libraries, and packages. Many of these dependencies can carry known vulnerabilities, outdated permissions, or risky data collection behavior.
In practice, those issues often stay invisible during day-to-day development and only surface much later, sometimes during store submission, security review, or after release, when fixing them is far more disruptive.
Certificate pinning bypass. On-device token abuse. Deep link exploitation. Stateful session manipulation.
These attack vectors don't appear in static code analysis. They don't surface in pre-release scanning. They appear when an attacker runs the app under adversarial conditions — on a real device, with certificate pinning stripped, replaying a session token from a previous interaction.
A mobile developer who has never been shown what a runtime API exploit looks like cannot be expected to write code that prevents it. Especially when their security tooling has never shown it to them.
Key takeaway: Mobile app security isn't just an adoption problem. It's a visibility problem. Developers can't secure what their tools can't see.
Security tools were built for detection. Developers need tools built for decision-making. That's the gap "shift left" was supposed to close. However, a decade in, most teams still haven't closed it.
The idea behind shift left is sound. Catch vulnerabilities earlier. Fix them at the code level, where it's cheaper and faster. Involve developers before the damage is done.
The execution has largely failed.
Shift left tools were added to the developer workflow without changing the underlying experience.
Same alert volumes. Same jargon. Same lack of exploitability context. The same broken pattern that only just surfaced earlier, at the PR stage, where developers now dismiss it faster.
"From a DevOps perspective, the problem isn’t lack of tools; it’s lack of signal. When every scan generates hundreds of findings, developers disengage, and security teams spend more time sorting than fixing. At that point, ‘coverage’ becomes a metric, not a measure of security. "
— Mayuresh Mudrale, DevOps Engineer, Appknox
Shift left only works when the findings that surface are trusted, actionable, and integrated into the workflow developers already use. Remove any one of those three, and adoption collapses.
Developer adoption of security tools is not a training problem. It's not a culture problem.
It's a design-and-integration problem, and it has a known set of solutions.
|
Old approach |
What it produces |
New approach |
What it produces |
|
Detect everything |
Innumerable alerts, only a few are real |
Validate exploitability first |
Actionable signal only |
|
Separate security portals |
Context switching, ignored findings |
Integrate into the developer workflow |
Findings that get fixed |
|
Static findings only |
Misses runtime behavior |
Runtime context included |
Complete picture of exploitability |
|
The security team owns it |
Findings die in handoff |
Shared ownership model |
Clear accountability per finding |
|
Annual or quarterly scans |
Environment drifts between tests |
Continuous CI/CD integration |
Feedback in the same sprint |
|
Severity score only |
Developers can't prioritize |
Exploitability + fix guidance |
Developers can then act immediately |
Here's what changes adoption in practice:
Developers adopt tools they trust. They abandon tools that cry wolf. Tools that validate exploitability before surfacing findings, filtering the countless alerts down to the ones that actually matter, earn developer trust, sprint over sprint.
Reachability analysis is the minimum bar.
Integrate security into IDE plugins, PR comments, CI/CD gates, not separate portals.
When a finding appears inline in a pull request at the exact line of code that caused it, it gets fixed. When it appears in a dashboard behind a login screen, it gets ignored.
A vulnerability report without remediation guidance isn't a security tool. It's a problem list.
Developers who receive code-level fix suggestions, matched to their framework and application context, act on them. Developers who receive a CVE number and a CVSS score do not.
Every security finding should have a named owner the moment it surfaces.
Not "the security team" or "whoever owns this service." A specific team, mapped to a specific repository, with a specific SLA. Without that, the finding dies in the gap between teams.
Mobile developers need tooling that understands how mobile apps actually behave:
Generic AppSec tools don't provide this.
When mobile security testing is designed for the mobile development workflow, it gets used.
For a practical starting point, check out the [API Security Testing Checklist for Developers]
Most security tools were built for web application security teams. Appknox was built for the specific environment where developer adoption is the hardest, and the stakes are highest: mobile applications and the APIs they depend on.
Here's what makes the developer experience different.
Appknox’s DAST runs on real devices, not emulators.
The vulnerabilities it surfaces are vulnerabilities that exist in the app as users run it —
Not theoretical findings from a clean test environment.
With Appknox, you get a less than 1% false positive rate.
So, the findings that reach a developer's workflow have been validated for real-world exploitability. No more sprint-ending rabbit holes chasing ghost alerts, so your team works on the alerts that matter, not the several thousands that don't.
Get reports at the speed of a CI/CD pipeline, not a quarterly pentest.
Security feedback that arrives in the same sprint as the code was written is feedback that actually gets acted on.
With Appknox, you don’t require a separate portal login. No manual scan trigger. No PDF report sitting in a shared drive.
Security testing runs automatically on every build, and findings surface in the workflow where developers already operate.
KnoxIQ validates exploitability, generates proof-of-concept evidence, and delivers contextual remediation guidance.
A developer who receives a finding with a clear fix path acts on it. A developer who receives a severity score does not.
Your pipeline generates findings. KnoxIQ tells you which ones can actually be exploited, and exactly how to fix them.
If your team is managing security tool adoption right now, here's where to start. No theory. No philosophy. Five things you can act on this sprint.
Ask:
If you can't answer these, you don't have a security program. You have security software.
Can you name every API endpoint your mobile app calls? Can you confirm those endpoints are tested by your existing tooling? If not, you have a visibility problem, and no amount of additional scanning will fix it.
If your team is drowning in alerts, the answer isn't better triage. It's better signal. Prioritize tools that validate exploitability before surfacing findings. Developers will act on what they trust.
Pick one place where findings should surface, IDE, PR comment, or CI/CD gate, and make it the default. Every additional portal a developer navigates to see a finding reduces the probability of it being acted on.
Mobile API findings go to the mobile team. Third-party SDK findings go to whoever manages dependencies. Backend exposure findings go to the platform team. Write it down. Make it policy. A finding with a named owner gets fixed. A finding with no owner doesn't.
For audit-ready compliance evidence alongside your security program, see Ensuring API Testing Meets Compliance: Policies, Performance, and Proof
The tools ran. The scans completed. The dashboards filled up with findings.
And yet, nothing got fixed. Not because developers stopped caring. Because the tools stopped earning their attention.
If your mobile team is running security scans that nobody reads, getting alerts nobody can act upon, and shipping releases that have never had their runtime API behavior tested, the problem isn't your team's attitude toward security.
It's that they've never had a tool that worked for the way they actually work.
See how Appknox approaches mobile security from the developer's side.
Shelfware is a security tool that an organization has purchased and deployed, but that developers have stopped actively using. It runs in the background, generates alerts nobody reads, and creates the appearance of security coverage without the reality.
It typically results from tools that weren't designed for developer workflows: too many false positives, too much context switching, and findings that don't connect to how developers actually work. The average enterprise now runs close to 50 security tools (Cycode, 2025), and DevSecOps professionals lose 7 hours per week to the inefficiencies caused by fragmented toolchains (GitLab Global DevSecOps Report, November 2025). Shelfware is what happens when those 50 tools stop earning developer attention one sprint at a time.
Severity scoring (typically CVSS) measures how dangerous a vulnerability looks in isolation — theoretical impact, attack complexity, and privileges required. It doesn't tell you whether that vulnerability can actually be triggered in your specific environment, by a realistic attacker, through an accessible path.
Exploitability-based prioritization answers that second question. A critical CVSS score in a library your application never calls has zero real-world exploitability. A medium CVSS score in an authentication flow that's directly accessible from the internet is a live attack vector.
OX Security's 2025 benchmark found that only 202 out of 570,000 average alerts per organization were genuinely critical. The gap between severity and exploitability is where most security noise originates, and where most developers' trust breaks down.
Tool install rate and tool adoption rate are distinct metrics, and most teams track only the former. To measure actual adoption, ask four questions:
If you can't answer all four, your security program is measuring activity, not outcomes. That's where the adoption gap actually lives.
Hackers never rest. Neither should your security!
Stay ahead of emerging threats, vulnerabilities, and best practices in mobile app security—delivered straight to your inbox.
Exclusive insights. Zero fluff. Absolute security.
Join the Appknox Security Insider Newsletter!