Microsoft recently updated its security tools to address a critical gap: vulnerability scanners were identifying issues in code, but security teams couldn't determine which ones were significant in production. The integration between Microsoft Defender and GitHub Code Security aims to resolve this — but the need for such integration highlights a widespread control failure in the industry.
What Happened
Microsoft's security tools were not communicating effectively. GitHub Code Security flagged vulnerabilities in code repositories, while Microsoft Defender monitored production environments. However, they didn't share context. Your team might see a critical SQL injection vulnerability in a code repository but couldn't determine if the code was active, exposed to the internet, or accessing sensitive data.
MDASH, Microsoft's AI-driven vulnerability discovery system, was identifying issues at scale. Yet, without production context, teams struggled to prioritize effectively. A critical issue in a deprecated microservice handling test data received the same severity score as a vulnerability in your payment processing API.
Timeline
This issue is not a single incident but an ongoing architectural gap. The integration announcement signals Microsoft's recognition that this separation causes blind spots.
The problem unfolds as follows:
- A developer commits code with a vulnerability.
- GitHub Code Security flags it.
- The security team receives the alert.
- The team manually verifies: Is this deployed? Where? What does it access?
- By the time they assess its importance, the vulnerable code may have been in production for days or weeks.
Which Controls Failed or Were Missing
Vulnerability Context Tracking: The primary failure was the absence of a control linking static analysis findings to runtime deployment. You need to know if a vulnerability is reachable, what data it accesses, and its network exposure.
Cross-Platform Correlation: Security tools functioned independently. Code scanning tools didn't communicate with cloud workload protection platforms, violating the principle that security controls should share threat intelligence and context.
AI Agent Oversight: MDASH's AI agents discovered vulnerabilities, but there was no framework to validate AI findings against production reality. An AI agent might flag a theoretical race condition that can't occur with the current deployment.
Prioritization Based on Actual Risk: Severity scores were based on vulnerability type, not actual risk in the deployment context. A remote code execution vulnerability in a non-internet-facing service with minimal privileges isn't the same risk as one in your authentication service.
What the Relevant Standards Require
PCI DSS v4.0.1 Requirement 6.3.2 mandates that vulnerabilities are identified and addressed based on risk ranking. You can't rank a code vulnerability without knowing its deployment status and access level. Microsoft's integration provides the necessary context for accurate risk ranking.
NIST CSF v2.0 function ID.RA-1 requires vulnerabilities to be identified and documented with context about affected assets and their criticality. A scanner that doesn't know which assets are affected can't fulfill this requirement.
ISO/IEC 27001:2022 Control 8.8 requires timely information about technical vulnerabilities and evaluation of exposure. "Exposure" means production exposure — is the vulnerable code running and reachable?
OWASP ASVS v4.0.3 Section 14.2 requires that components with known vulnerabilities are identified and handled appropriately. This requires knowing which components are in use in production.
Lessons and Action Items for Your Team
Map your vulnerability data flows: Document tools that generate vulnerability findings. Identify if they know about production deployment state and can correlate findings with runtime context. If not, you have the same gap Microsoft is addressing.
Implement production context enrichment: When a code scanner flags a vulnerability, your workflow should automatically check if the code is deployed, its environment, data access, and network exposure. If your tools don't provide this, consider building or buying integration platforms.
Validate AI-generated findings: If using AI agents for discovery, establish a validation control. AI agents can generate false positives or miss deployment-specific mitigations. Validate findings against actual production configurations before escalation.
Define severity scoring that includes context: Rewrite severity definitions to incorporate production context. A "critical" vulnerability in non-deployed code isn't critical. Adjust CVSS scores or internal ratings based on deployment reality.
Audit your tool integration points: List every security tool you use. Verify that tools that should share data actually do. If not, this is a gap that attackers can exploit while you're manually correlating data.
Test your prioritization accuracy: Review the last 90 days of vulnerability findings. Check if they were in production-deployed code. Calculate the percentage of remediation time spent on non-deployed or non-reachable vulnerabilities. If it's over 10%, you have a prioritization problem.
The Microsoft integration exists because this gap is widespread. If your code security tools and runtime protection tools don't share context, you're making prioritization decisions with incomplete data — leading to wasted time or missed real exposures.



