The recent wave of high-profile software supply chain incidents has pushed a specific response to the top of the policy agenda in several countries: keep data within national borders, reduce dependence on foreign cloud providers, and assert greater sovereign control over digital infrastructure. The instinct behind this response is understandable. When major incidents like the AWS outage, the Marks and Spencer breach, and the Jaguar Land Rover attack demonstrate how dependent organizations have become on software they did not write and cannot fully inspect, the appeal of localization as a control mechanism is obvious. More than half of UK IT leaders are actively moving away from US cloud providers. Denmark has begun phasing out Microsoft and Windows entirely. These are significant decisions made by serious organizations, and they reflect genuine concern about the resilience and trustworthiness of the software environments they depend on. The problem is that data sovereignty does not address the actual vulnerability these incidents exposed. Software integrity, the assurance that the applications processing data remain unaltered, uncompromised, and functioning as intended throughout their lifecycle, is the root problem, and geographic boundaries do not protect against it.
What Software Integrity Actually Means and Why It Is Difficult to Maintain
Software integrity is not a single property that a piece of software either has or does not have at the point of installation. It is a condition that must be maintained continuously across the entire lifecycle of a product, from the initial development environment through every update, dependency change, and deployment configuration that follows. The assurance that software is doing what it is supposed to do and only what it is supposed to do requires active verification at multiple points, because the opportunities for unauthorized modification, malicious code insertion, or the introduction of exploitable vulnerabilities are distributed across that entire lifecycle.
The mechanisms that providers use to verify and communicate integrity are technical but worth understanding at a conceptual level. Cryptographic signatures allow recipients to verify that software comes from the claimed source and has not been modified in transit. Cryptographic hashes serve a similar function for detecting alteration, producing a value that changes if anything in the underlying code has changed. Strict controls and review processes throughout development reduce the likelihood that vulnerabilities are introduced before the product reaches users. Third-party code auditing addresses the reality that most software incorporates components written outside the primary development team, each of which represents a potential introduction point for vulnerabilities that the primary provider may not have identified.
The challenge is that these mechanisms are only as strong as their consistent application across every link in the chain. A single compromised dependency, a development environment that was accessed without authorization, or an update process that bypasses verification can introduce a vulnerability that all subsequent integrity checks fail to catch if the compromise occurred before those checks were applied.
The Incidents Driving Policy Responses Illustrate the Actual Problem
The software supply chain incidents that have generated the current policy response share a common characteristic: the damage did not come from attackers defeating perimeter defenses or accessing data through brute force. It came from compromises within the software itself, at points in the supply chain where the code organizations trusted to protect their operations had already been tampered with or contained exploitable flaws before it was deployed.
This is the problem that data sovereignty policy is responding to, but it is not the problem that data sovereignty solves. The location of data storage has no bearing on whether the software processing that data has been compromised. An organization that stores sensitive data exclusively on local servers, motivated by the reasonable desire to maintain tighter control over it, has not reduced its exposure to software integrity failures. The safety of that locally stored data still depends entirely on the quality of the code running on those servers, the integrity of the operating environment in which that code executes, and the security of every dependency that code relies on. If any of those components have been compromised, the geographic location of the data provides no protection.
The broader concern with data sovereignty as a primary response is that it shifts the locus of control without addressing the underlying technical problem. Local jurisdictions gain tighter regulatory authority over data, which may serve legitimate governance purposes, but that authority does not translate into better software security. The scrutiny that comes from operating in a competitive global market, where providers face consequences for security failures that damage their reputations across multiple jurisdictions, is replaced by a more contained accountability environment. Whether that exchange improves software integrity in practice is a question that the policy rationale does not clearly answer.
What Organizations Can Do to Verify and Maintain Software Integrity
The practical response to software integrity risk operates at the level of what organizations can actually verify and control, rather than at the level of where data is geographically located. Two approaches are accessible to most organizations and provide meaningful improvement in their ability to detect integrity problems before they produce incidents.
The most immediate is maintaining rigorous attention to software updates and security patches from providers. Most security patches address specific vulnerabilities that have been identified in the software, and the window between public disclosure of a vulnerability and active exploitation of it by attackers is frequently short. While most software is configured to apply security updates automatically, manual verification that updates have been applied correctly and completely is a practice that provides a check on the assumption that automatic processes are functioning as intended. This is not a technically complex procedure, but it is one that organizations often allow to become less rigorous as the routine nature of updates makes it feel like a lower-priority task.
Static code analysis tools represent a more sophisticated layer of integrity verification that is increasingly accessible to organizations outside large enterprise environments. These tools examine source code, bytecode, and binaries without executing the software, using a structured analytical process to identify vulnerabilities, unauthorized modifications, and risky patterns that would not be apparent from observing the software’s behavior alone.
The process operates in three stages. Parsing converts the code into an intermediate representation that accurately models its structure, providing the foundation for analysis. The analysis stage applies predefined rules alongside data flow and control flow analysis to identify violations or patterns associated with known vulnerability types. Reporting produces output that identifies the specific location of flagged issues, characterizes the type of problem found, and in most cases guides remediation. The practical value of this process is that it moves vulnerability identification earlier in the workflow, before deployment rather than after an incident has revealed that a problem existed.
Software Integrity Belongs in the Operational Workflow, Not the Incident Response Plan
The organizations that manage software integrity most effectively treat it as an ongoing operational practice rather than a response to specific incidents. The distinction matters because the threat is continuous. New vulnerabilities are discovered in widely deployed software regularly, dependencies that were secure when they were incorporated may become compromised, and the update processes that deliver security improvements are themselves potential vectors for introducing problems if the update pipeline is not adequately secured.
Building software integrity verification into normal workflows, through consistent patch verification, static analysis of code before deployment, and regular auditing of third-party components, creates a baseline of assurance that incident-driven responses cannot replicate. The investment required is real, but it is proportionate to the risk. The incidents that have driven governments and large organizations to consider dramatic responses like complete platform migration demonstrate the scale of damage that software integrity failures can produce. The operational practices that reduce the likelihood of those failures represent a more targeted and technically sound response than the geographic relocation of data that leaves the underlying vulnerability unaddressed.