Skip to content

Shifting Knowledge Left: Keeping up with Modern Application Security

Engineers explore architecture and security mechanisms for Shifting Knowledge Left: Keeping up with Modern Application Security.

Summary

## Overview

Mark and Fletcher (Duo security team) presented analysis of developer security knowledge gaps and proposed shift-left education strategy. Problem statement: 70% of developers expected to write secure code but <50% receive security feedback. OWASP Top 10 insufficient as education foundation—only 1 in 5 developers familiar with it, published once every several years, not language/framework-specific, contains 40% overlap with real-world vulnerabilities (Hacker One data vs. OWASP). Root cause: formal CS education rarely includes security courses (survey of top 10 CS programs: zero require security), bootcamps skip application security entirely. Entry into workforce: new developers face incentives to ship fast; Stack Overflow-driven development (copy-paste queries) leads to obvious vulnerabilities (tested: first Google result for Rails + database = SQL injection). Evidence: SQL injection remains #1 vulnerability class in applications and highest bounties despite being well-known for 10+ years; parsing vulnerabilities spiked 300% in recent years; developers learn password hashing via outdated tutorials (MD5 client-side, SHA1 with salt in 2011, tutorials still recommending SHA1 in 2019 despite proper algorithms since 1999).

## Security Training Failures and Abstraction Gaps

**Insufficient Curriculum Design**: Current approaches "dumb down" topics, removing critical nuance developers need to apply security correctly. Example oversimplifications: "just use the ORM" (ORM prevents SQL injection in most cases but not all; developers don't know when exceptions occur); "just use this header" (XSS Auditor deprecated after introducing more vulnerabilities than it solved; HPKP caused widespread site breakage with no rollback option—users couldn't access sites for months). False security: developers given incomplete information gain unwarranted confidence. Impractical rules: developers tell to avoid approaches (e.g., don't use SHA1) without understanding why proper algorithms work differently or alternatives available. Missing context: Security best practices evolve; training lagging 2-3 years behind threats. Real-world example: XML canonicalization vulnerability (SAML attacks, 2014 research) invisible to vulnerability management systems; organizations checked against "affected libraries" list, found no matches, concluded safety—but underlying vulnerability still present because root cause misunderstood.

**Fragmented Information Ecosystem**: Engineers learn from tutorials, blog posts, Stack Overflow—often outdated information. Popular resources vote up old answers; search results favor well-established (but wrong) answers over correct newer approaches. Vulnerability management tools increase visibility without matching education—developers see CVE with 9.8 score, panic to patch immediately, but CVE may be narrow (single method, specific boolean flag) not applicable to their code. Blind patching introduces more regressions than vulnerabilities prevented (especially in node.js with hundreds of transitive dependencies). Developers lack root-cause understanding; can't distinguish when ORM actually prevents SQL injection vs. when manual query construction is present; can't determine if dependency vulnerability affects their actual code paths.

## Organizational Investment Misalignment and Solutions

**Left vs. Right Investment**: Organizations invest heavily at far-right of development lifecycle (penetration testing, red teams) while neglecting far-left (developer education, code review at design stage). IBM data: fixing vulnerability in design is 100x cheaper than fixing in production/maintenance, yet organizations hire annual pen testers testing post-release code while making zero investment in developer training at start of project. Population mismatch: thousands of engineers, handful of app-sec specialists—can never scale 1:1 ratio; solution is enabling engineers as security practitioners, not hiring more specialists.

**Vulnerability Knowledge Gaps**: Hacker One bounty data shows highest payouts for server-side request forgery (SSRF) and insecure direct object reference (IDOR), yet survey of hired engineers shows minimal knowledge of these vulnerabilities compared to well-known classics (XSS, SQL injection). Gap exists between curriculum (emphasizing old, known threats) and real-world impact (SSRF/IDOR exploitation highly rewarded). No feedback loop: vulnerability scanning tools identify issues but don't educate developers who wrote the code; security analysts pick through signal-vs-noise instead of building developer feedback mechanisms.

**Team Dynamics and Cultural Barriers**: Application security teams often positioned antagonistically toward developers—dogmatic, condescending approach blaming developers for vulnerabilities without understanding development context. Many app-sec engineers lack software development background, compsci degree, or coding experience yet positioned to "enforce" security; creates friction, dismisses developer engineering context. Result: developers view security as compliance burden rather than engineering improvement, resist security practices. Solution: treat security as customer-service role serving engineers; hire app-sec professionals with development background who understand engineering trade-offs; position as enabling team, not enforcement.

## Proposed Shift-Left Approach and Community Resources

**Framework-Specific Real-Time Education**: Replace static, infrequent OWASP Top 10 training with real-time, context-aware learning integrated into development workflow. Curriculum keyed to actual threat landscape (Hacker One data), not historical snapshots. Language/framework-specific guidance (Rails ORM behavior differs from Node ORMs, Python asyncio patterns introduce different concurrency risks). Root-cause focus: teach why defense-in-depth works, when assumptions break, how to threat-model for your specific product. Cost-benefit analysis: explain trade-offs (HPKP was theoretically sound but broke production sites) rather than dogmatic rules.

**Open Platform and Community-Driven Curriculum**: Building free training platform to distribute resources, enable community contribution of new vulnerability types (SSRF, IDOR patterns), expand beyond traditional top 10. Crowdsourced curriculum: security researchers can submit real-world case studies, developers can feedback on what training actually changed their practice, platform becomes living document reflecting current threat landscape. Accessibility: remove paywalls on security education; lower barrier to entry for developers in under-resourced regions or small companies without dedicated security teams.

Related talks