Back to News

Hijacked Azure Identities Destroyed 100+ Storage Accounts in Just 7 Minutes

Hijacked Azure Identities Destroyed 100+ Storage Accounts in Just 7 Minutes

Microsoft has published details of an attack that should change how UK businesses think about cloud backup. Over an 18–hour period in early June 2026, the group Microsoft tracks as Storm–3168 compromised two Azure service principals — machine identities — belonging to a single cloud tenant, and used them for what Microsoft describes as “extensive Azure–focused resource destruction” and credential collection. The destructive phase lasted roughly seven minutes. In that window the attacker attempted to delete more than 100 Azure Storage accounts, most of them successfully, along with an Azure Key Vault, a Function App and an App Service plan.

Two details elevate this from an incident report to something worth a board conversation. The first is where the attacker went deliberately: straight at the recovery infrastructure. Microsoft observed more than 30 successful “ListKeys” requests against Azure Site Recovery–related storage accounts, and multiple attempts — unsuccessful — to delete Azure Site Recovery locks and Azure Backup protection locks. This was not opportunistic vandalism. Somebody knew that the backups were the thing that mattered and tried to remove the mechanism protecting them. The second is what stopped part of it: resource locks. Some of those 100–plus storage account deletions failed because a lock was in place. A configuration setting that most organisations have never enabled is the reason this incident has survivors.

7 min
Length of the destructive phase, in which more than 100 Azure Storage accounts were targeted for deletion along with a Key Vault, Function App and App Service plan
100+
Azure Storage accounts the attacker attempted to delete. Most succeeded — some were blocked because a resource lock was in place
18 hrs
Total duration of the operation across two compromised service principals in the same tenant, in early June 2026
5 sec
Time the second compromised identity took to read Azure VMs and resource groups across two subscriptions — the speed of machine–driven enumeration

What Microsoft observed

The operation used two compromised service principals belonging to the same tenant, working in sequence rather than in parallel. The first spent approximately 15 hours and 30 minutes on reconnaissance, completing more than 300 successful read operations across Azure virtual machines, subscriptions, resource groups and other resources. That is a long time to be inside a tenant doing nothing but looking, and it is the most important number in the report for anyone thinking about detection.

The second service principal began roughly 90 minutes after the first and behaved quite differently. It read Azure VMs and resource groups across two subscriptions in five seconds, then spent time hunting for exposed credentials in Azure App Service configuration stores — which is to say, looking for the next set of keys inside the environment it had just mapped. Credential collection of this kind is how a single compromised identity becomes several.

The destruction, when it came, was compressed into about seven minutes. More than 100 storage accounts targeted, most deletions succeeding, some blocked by resource locks, plus a Key Vault, a Function App and an App Service plan from the same resource group. Alongside that ran the attack on recoverability: over 30 successful ListKeys requests against Site Recovery–related storage accounts, and repeated failed attempts to remove Site Recovery locks and Backup protection locks.

On how the identities were taken in the first place, Microsoft is candid: it does not know exactly how Storm–3168 hijacked the service principals. It did note that an employee at the affected organisation had previously exposed client IDs, client secrets and tenant IDs in plaintext in a public GitHub issue. That is a striking fact and an obvious candidate, but Microsoft has not stated it was the vector and neither should anyone else. It is worth reporting precisely because the general lesson holds either way: a client secret in a public repository is a standing invitation, whether or not it was the one used here.

Attribution and intent both need care. Microsoft tracks this attacker as Storm–3168, the same group Sysdig threat hunters identified in July 2026 as running the first–ever documented agentic ransomware infection, in which an LLM drove the entire extortion operation autonomously. That is a genuinely significant piece of context about the actor. It is not a claim that this Azure intrusion was itself LLM–driven, and the report does not say so. Equally, on intent: no ransom note was ever sent and no confirmed data exfiltration was observed in this specific incident. Microsoft’s assessment is that the combination of resource destruction, interference with recovery mechanisms and credential collection is “consistent with tactics that can support ransomware and extortion operations” — which is a statement about pattern, carefully phrased, rather than a conclusion about motive.

Your backups are only as safe as the identity that can reach them

This is the finding that should prompt action in every UK business running anything in Azure, AWS or Google Cloud. The attacker did not attempt to break your encryption or defeat your firewall; it used a legitimate machine identity and then went looking for the controls protecting recovery. If the credentials that run your workloads can also enumerate, read keys from, or delete your backup and replication infrastructure, then your backup is not a backup — it is a second copy inside the same blast radius, reachable by the same compromise. The test is uncomfortable and specific: take each service principal, managed identity and automation account in your tenant, and ask what it could destroy if someone else held it for eighteen hours. If the honest answer includes your recovery capability, you have discovered the problem this incident illustrates, and you have discovered it in the only way that is cheap — before somebody else does.

Eighteen hours, reconstructed

Microsoft’s reconstruction is unusually granular, and the shape of it is the lesson. Each stage below is drawn from the observed activity.

Before the intrusion — secrets in a public place
An employee at the affected organisation had previously exposed client IDs, client secrets and tenant IDs in plaintext in a public GitHub issue. Microsoft has not said this was the entry vector and does not know exactly how the service principals were hijacked. It is recorded here because the underlying exposure is one of the most common and most quietly catastrophic mistakes in cloud operations.
July 2026 — the actor’s track record
Sysdig threat hunters identify the group behind JadePuffer as running the first–ever documented agentic ransomware infection, with an LLM driving the entire extortion operation autonomously. Microsoft tracks the same actor as Storm–3168. This establishes capability and sophistication; it is not a statement that the Azure activity described below was itself agent–driven.
Early June 2026, hour 0 — the first identity begins
The first compromised service principal starts work. There is no destruction, no obvious noise and nothing a user would notice — just authenticated API activity from a machine identity that is entitled to be there, doing the kind of thing machine identities do.
Hours 0 – 15.5 — reconnaissance at length
More than 300 successful read operations across Azure virtual machines, subscriptions, resource groups and other resources, spanning about 15 hours and 30 minutes. The attacker is building a map: what exists, where it lives, which subscriptions hold what, and crucially where the backups are. Every one of those operations succeeded, because a legitimate identity was making them.
Hour 1.5 onwards — a second identity joins
A second compromised service principal begins about 90 minutes after the first, and reads Azure VMs and resource groups across two subscriptions in five seconds. Two independent machine identities in the same tenant under the same attacker’s control is a significant escalation: it suggests either a shared exposure source or successful credential collection early on.
Then — hunting for the next set of keys
The second identity spends time searching for exposed credentials in Azure App Service configuration stores. This is the step that turns one compromise into many, and it is why connection strings and API keys sitting in application configuration are a lateral–movement problem rather than merely untidy practice.
The recovery attack — locks and keys
More than 30 successful ListKeys requests against Azure Site Recovery–related storage accounts, and multiple unsuccessful attempts to delete Azure Site Recovery locks and Azure Backup protection locks. The attacker went for recoverability specifically and deliberately — and on the evidence of those failures, the protective locks did their job.
The final 7 minutes — destruction
More than 100 Azure Storage accounts targeted for deletion, most successfully, some blocked by resource locks. An Azure Key Vault, a Function App and an App Service plan from the same resource group also deleted. Fifteen and a half hours of patience, then seven minutes of damage. No ransom note was sent, and no confirmed data exfiltration was observed.

The asymmetry in that timeline is the entire operational lesson. Detection had roughly 15 hours of opportunity and destruction took seven minutes. No realistic incident response process interrupts a seven–minute deletion spree; by the time a human reads an alert the storage accounts are gone. But a service principal performing 300 read operations across subscriptions it does not normally touch, over the better part of a day, is an anomaly that a monitoring rule can catch — and that is where the achievable win sits. You are not going to outrun the destruction. You can notice the reconnaissance.

Which controls would actually have helped

The chart below is an indicative planning model — not measured data — ranking controls by how much they would have blunted this specific attack chain. It is ordered to make a point that the incident demonstrates directly.

Immutable backup, separate credentials and tenant
95%
Workload identity federation instead of long–lived client secrets
88%
Least–privilege scoping of every service principal
82%
Resource locks on storage, vaults and recovery services
78%
Automated secret scanning of public and private repositories
71%
Alerting on abnormal read volume from a machine identity
64%
Network perimeter controls — firewalls, VPN, IP allow lists
9%

The last bar is the one worth dwelling on, and it is not a criticism of firewalls. Perimeter controls remain essential for plenty of other threats. They are close to irrelevant here, because nothing about this attack crossed a network boundary in a way a perimeter device could evaluate. The attacker authenticated to the Azure management plane as a legitimate identity and issued legitimate API calls. There was no exploit, no malware and no lateral movement across a network in the traditional sense. The security boundary that failed was an identity, and identity is not a place you can put a firewall in front of.

The fourth bar is the only one with direct evidence behind it in this incident. Resource locks are cited by Microsoft as the reason some of the 100–plus storage account deletions failed, and as the reason the attempts to remove Site Recovery and Backup protection locks were unsuccessful. That is a rare thing in security reporting: a named, cheap, widely available control observed to have worked against a capable adversary in a real intrusion. Most organisations have not enabled it, usually because locks are mildly inconvenient during legitimate change work.

Eighty–six per cent of the attack was someone looking around

Divide the reconnaissance by the total duration and the operation’s real character becomes clear. Fifteen and a half hours out of eighteen was observation.

86%
Approximately 15 hours 30 minutes of reconnaissance out of an 18–hour operation — derived from Microsoft’s reported figures. More than 300 read operations across VMs, subscriptions and resource groups, all successful, before roughly seven minutes of destruction

Framed that way, the incident stops being a story about how fast cloud resources can be destroyed and becomes a story about a detection window that was left open for most of a day. Three hundred read operations from a machine identity is not subtle in retrospect. Service principals normally have narrow, repetitive behaviour — a deployment pipeline touches the same resource group, a monitoring agent queries the same metrics, a backup job writes to the same account. An identity that suddenly enumerates virtual machines across multiple subscriptions is doing something it has never done before, and that is a detectable signature rather than a subtle one.

Why it went unnoticed is not mysterious, and it is the same reason it would go unnoticed in most UK organisations. Machine identities are excluded from almost everything that protects human accounts. They do not get multi–factor authentication, because there is nobody to prompt. They do not trigger impossible–travel or unfamiliar–location alerts, because they have no normal location. They rarely appear in access reviews, because access reviews are built around leavers and joiners. They are created during a project, granted whatever permissions made the deployment work that afternoon, and then never looked at again — frequently outliving the project, the developer and sometimes the supplier who set them up.

The five–second enumeration by the second identity deserves a note of caution alongside the reading above. It is consistent with automation, and this actor is known for automation — Sysdig documented the group running an LLM–driven extortion operation two months earlier. But a shell script also completes API calls in five seconds, and Microsoft has not characterised this activity as agent–driven. The reason the distinction matters practically is that it changes nothing about the defence: whether a human, a script or a model is issuing the calls, the control that helps is the same one, and it is limiting what the identity is permitted to do.

Where UK businesses carry this exposure

The rows below reflect where identity and recovery exposure typically sits in a UK organisation running cloud workloads, with badges indicating how much attention each usually needs.

Machine identity and cloud recovery exposure in a typical UK business
Backups reachable by the same credentials that run production workloads High
No inventory of service principals, managed identities and automation accounts High
Long–lived client secrets in use, with no rotation and no expiry anyone tracks High
No resource locks on storage accounts, key vaults or recovery services High
Service principals holding broad subscription–level roles granted during a long–finished project Mid
Connection strings and API keys sitting in application configuration rather than a vault Mid
No alerting on unusual read or enumeration activity from a machine identity Mid
No secret scanning across repositories, issues and commit history Low

The first row is the one to fix first, and it is a design question rather than a product purchase. The principle is that the identity which can write a backup must not be the identity which can delete it, and ideally the backup should sit outside the tenant that the workload identity can reach at all. Azure’s immutability and soft–delete features, Backup protection locks and Site Recovery locks all serve this end, and this incident shows an attacker attempting to strip exactly those protections — and failing. Separation of the credential is what makes that failure reliable rather than lucky.

The eighth row is marked low only because it is genuinely easy to resolve, not because it is unimportant. Secret scanning is a solved problem with free and built–in options, and the specific exposure Microsoft recorded here — client IDs, client secrets and tenant IDs in plaintext in a public GitHub issue — is worth noting carefully. Many organisations scan code and forget that issues, pull request comments, wiki pages, commit messages and build logs are all published surfaces too. A secret pasted into an issue while debugging is exactly as exposed as one committed to a file, and considerably less likely to be found by a scanner that only reads source.

What closing this gap costs

The bands below are indicative planning figures for UK businesses hardening cloud identity and recovery — not quotes. The variable that moves them most is the number of subscriptions and identities, not headcount.

Business profile Typical scope Indicative cost What you get for it
Small Azure estate, one subscription Inventory of every service principal and managed identity, resource locks applied to storage, vaults and recovery services, secret scanning enabled, secrets rotated £900 – £3,500 The one control observed to have worked in this incident, plus a list of which identities could destroy what
SME with multiple subscriptions or environments Least–privilege review and re–scoping of identities, client secrets replaced with workload identity federation where supported, backup credentials separated from workload credentials £3,500 – £15,000 An estate where holding one identity for eighteen hours does not hand an attacker the whole tenant
Business dependent on cloud for trading Immutable backup in a separate security boundary, tested restore, alerting on anomalous machine–identity behaviour, documented response for mass–deletion events £12,000 – £45,000 Recovery that survives an attacker who has full control of your production identities — which is the scenario this incident describes
Regulated firm or multi–tenant provider All of the above plus identity governance with periodic recertification, privileged access separation, audit evidence, tabletop exercise against destructive attack £40,000 – £140,000 A demonstrable position for an auditor, insurer or client, and a rehearsed response rather than an improvised one
Any business, ongoing Quarterly review of machine identities and their permissions, secret expiry tracking, and a named owner for each identity £0 – £3,000 a year Identities that get retired when their projects do, instead of outliving the developer who created them

The first row is deliberately cheap because the highest–value action in this entire story is nearly free. Applying resource locks to storage accounts, key vaults and recovery services is a configuration change, and it is the control Microsoft reports as having blocked deletions during an active intrusion. The reason most organisations have not done it is that locks create friction when somebody legitimately wants to delete something — which is, when stated plainly, precisely the property you are trying to buy.

Two ways to hold a cloud tenant

Reactive posture

What most UK cloud estates look like today

  • Backups sit in the same tenant, reachable by the same credentials that run production
  • No inventory of machine identities, so nobody can say how many exist or what they can do
  • Long–lived client secrets created during a project, never rotated, expiry tracked by nobody
  • Service principals holding broad subscription roles because that is what made the deployment work
  • No resource locks, because locks are inconvenient during legitimate change work
  • Machine identities excluded from every control that protects human accounts, by design and unexamined
  • Detection tuned for malware and logins, blind to a legitimate identity reading 300 resources in a day

Proactive posture

Where Cloudswitched Azure and backup work takes you

  • Immutable backup in a separate security boundary, with credentials production identities cannot reach
  • A maintained inventory of every service principal and managed identity, each with a named owner
  • Workload identity federation replacing long–lived secrets wherever the platform supports it
  • Permissions scoped to the resource group and action actually required, reviewed when projects end
  • Resource locks on storage, key vaults and recovery services — the control observed blocking deletions here
  • Secret scanning across code, issues, pull requests, wikis and build logs, not just source files
  • Alerting on enumeration behaviour that is abnormal for a given identity, which is where the 15–hour window was

The honest summary of the difference is that the right–hand column accepts friction. Locks make deletion harder for your own engineers. Least privilege means a deployment occasionally fails with a permissions error. Separated backup credentials mean an extra step in a restore. Every one of those costs something in daily convenience, and every one of them is what stood between this organisation and losing its recovery capability along with its storage. The seven–minute destruction phase is not survivable through response speed; it is survivable through decisions taken months earlier that made the destruction incomplete.

27
Indicative resilience, out of 100, against the attack pattern described here — for a typical UK SME cloud estate with no machine–identity inventory, long–lived secrets, no resource locks and backups reachable by production credentials
The eighteen–hour question, applied to your own tenant

There is one exercise worth doing this week and it needs no tooling. List every non–human identity in your cloud environment — service principals, app registrations, managed identities, automation accounts, deployment credentials, third–party integrations. For each one, answer four things. What is it for, and does that thing still exist? What can it read across which subscriptions? What can it delete — and specifically, can it reach your backups, your recovery vaults or the locks protecting them? And who owns it, meaning who would notice if it started behaving differently? Then ask the question this incident poses: if an attacker held this identity for eighteen hours, what would be gone at the end? Most organisations doing this for the first time find two things. Several identities nobody can explain, left behind by finished projects or departed suppliers. And at least one identity with enough reach to delete both production and the backups of production, which is the single finding that justifies the whole exercise.

Why this changes the backup conversation

The received wisdom on ransomware resilience has been the 3–2–1 rule and its descendants: multiple copies, multiple media, one off–site. Cloud migration made that feel easier, because geo–redundant storage and cross–region replication deliver copies and locations almost for free. This incident exposes the flaw in that comfort. Geographic redundancy protects against a data centre problem. It does nothing whatsoever against an identity that is authorised to delete the resource, because the replica is deleted along with the primary by the same authenticated API call. Redundancy is not the same property as immutability, and the cloud made the first one cheap while leaving the second one an opt–in.

That is why the relevant modern test is not how many copies you hold but how many distinct credentials would have to be compromised to destroy all of them. If the answer is one, the number of copies is irrelevant. This reframing also explains why the attacker’s behaviour was so purposeful: more than 30 ListKeys requests against Site Recovery storage and repeated attempts on Backup protection locks is an adversary working through exactly this logic from the other side, looking for the copy that cannot be reached and trying to make it reachable.

For organisations pursuing Cyber Essentials, there is a scoping point worth raising with an assessor rather than discovering at assessment. Machine identities are user accounts in every meaningful sense — they authenticate, they hold privileges, they can destroy data — and the scheme’s user access control requirements are built around the principle of least privilege and the removal of unnecessary accounts. Service principals routinely escape that discipline because they are created by developers, live in a cloud portal rather than a directory anybody reviews, and have no leaver process attached. An estate with forty unowned service principals holding subscription–level roles is carrying an access control problem, whatever the certificate says about the laptops.

Finally, the forward–looking concern. This actor is the one Sysdig documented running an LLM–driven extortion operation in July 2026. Whether or not automation of that kind drove the Azure activity, the direction is not in doubt: reconnaissance that took a human fifteen hours is the kind of task automation compresses dramatically. The defensive implication is that the detection window this incident left open — the fifteen quiet hours — should not be assumed to exist next time. Controls that limit what an identity can do hold their value regardless of how fast the attacker moves. Controls that depend on somebody noticing in time do not.

The story at a glance

Item Detail
Who Microsoft tracks the attacker as Storm–3168 — the group behind JadePuffer
Prior notoriety Sysdig identified the same group in July 2026 as running the first documented agentic ransomware infection, with an LLM driving the extortion operation autonomously
When An 18–hour period in early June 2026
What was compromised Two Azure service principals — machine identities — belonging to the same cloud tenant
How they were hijacked Microsoft does not know. It noted an employee had previously exposed client IDs, client secrets and tenant IDs in plaintext in a public GitHub issue
Reconnaissance The first identity spent about 15 hours 30 minutes making more than 300 successful read operations across VMs, subscriptions and resource groups
Second identity Began about 90 minutes later; read VMs and resource groups across two subscriptions in five seconds
Credential collection Hunted for exposed credentials in Azure App Service configuration stores
Destructive phase About 7 minutes: more than 100 Azure Storage accounts targeted for deletion, most succeeding
Also destroyed An Azure Key Vault, a Function App and an App Service plan from the same resource group
What blocked some deletions Resource locks — a configuration control observed working during a live intrusion
Attack on recovery More than 30 successful ListKeys requests against Azure Site Recovery–related storage, plus multiple unsuccessful attempts to delete Site Recovery and Azure Backup protection locks
Microsoft’s assessment The combination of destruction, recovery interference and credential collection is “consistent with tactics that can support ransomware and extortion operations”
What was not observed No ransom note was sent and no confirmed data exfiltration occurred in this incident
The security boundary that failed Identity — not the network perimeter. No exploit, no malware, no boundary crossing a firewall could evaluate
The modern backup test Not how many copies you hold, but how many distinct credentials would have to be compromised to destroy all of them
Cheapest effective action Apply resource locks to storage accounts, key vaults and recovery services, and separate backup credentials from workload credentials

This story connects to several we have covered recently, and the thread is that the things protecting you are increasingly identities and configurations rather than boundaries. The Gemini autonomous hacking research and the NCSC’s adversary simulation work is the essential companion — the same question of what changes when attack activity is machine–driven, and this is the group Sysdig documented running an LLM–led extortion operation. The Kiteworks shutdown warning made the case for knowing what your systems hold and who can reach them; here the answer to “who can reach them” was an unowned machine identity. The ICO’s £12.7m TikTok fine turns on the same distinction between a stated protection and a working one. Ofcom’s investigations into VoIP number misuse apply “know your customer” discipline to a supply chain, which is the external version of knowing your own identities. And Ofcom’s AI ground rules for telecoms show a regulator trying to set expectations for a technology moving faster than its governance.

If someone held one of your cloud identities for eighteen hours, what would be left?

Cloudswitched designs and manages Azure environments for UK businesses, including the parts that decide how an incident like this ends: an inventory of every machine identity and what it can destroy, resource locks on the things you cannot afford to lose, backups held behind credentials your production workloads cannot reach, and immutability rather than mere redundancy. The destructive phase here lasted seven minutes. Everything that limited the damage was configured long before it started.

Talk to us about Azure Cloud Services

Frequently asked questions

What is an Azure service principal, and why is it dangerous?
It is a machine identity — an account used by an application, script, pipeline or third–party integration rather than a person. They are essential and entirely legitimate; the danger is that they are excluded from nearly every control that protects human accounts. A service principal does not get multi–factor authentication because there is nobody to prompt, does not trigger unfamiliar–location alerts because it has no normal location, and rarely appears in access reviews because reviews are built around joiners and leavers. They tend to be created during a project with whatever permissions made the deployment work that afternoon, and then outlive the project, the developer and sometimes the supplier. That combination is what this attack exploited.
Was this attack driven by AI?
Microsoft has not said so, and it would be wrong to assume it. What is established is that Microsoft tracks this attacker as Storm–3168, the same group Sysdig identified in July 2026 as running the first documented agentic ransomware infection, in which an LLM drove the entire extortion operation autonomously. That tells you about the actor’s capability, not about this particular intrusion. The second identity enumerating two subscriptions in five seconds is consistent with automation, but a shell script does that too. The distinction matters less than it appears for defensive purposes: whether a human, a script or a model issues the API calls, the control that helps is the same one — limiting what the identity is permitted to do.
Was this a ransomware attack?
Not on the evidence of this incident, and the reporting is careful about it. No ransom note was ever sent and no confirmed data exfiltration was observed. Microsoft’s assessment is that the combination of resource destruction, interference with recovery mechanisms and credential collection is “consistent with tactics that can support ransomware and extortion operations” — a statement about pattern rather than a conclusion about motive. That leaves genuine ambiguity about what the operation was for: preparation that was interrupted, a destructive attack in its own right, or something else. For planning purposes the distinction is not important, because the damage profile and the controls that limit it are identical either way.
What are resource locks and should we turn them on?
They are an Azure setting that prevents a resource from being deleted or modified, independently of the permissions an identity holds. This incident is an unusually clear argument for them: Microsoft reports that some of the 100–plus storage account deletions failed because a lock was in place, and that attempts to remove Site Recovery and Azure Backup protection locks were unsuccessful. That is a cheap, widely available control observed working against a capable adversary in a live intrusion, which is rare in security reporting. The reason most organisations have not enabled them is friction — locks make legitimate deletion harder for your own engineers, which is precisely the property you are buying. Apply them to storage accounts, key vaults and recovery services first.
We have geo–redundant backups. Are we protected?
Against a data centre failure, yes. Against this, no — and the distinction is the most important technical point in the story. Geographic redundancy gives you copies in more than one place, but if an identity is authorised to delete the resource then the replica is deleted along with the primary by the same authenticated API call. Redundancy and immutability are different properties, and cloud platforms made the first one nearly free while leaving the second one an opt–in. The useful modern test is not how many copies you hold but how many distinct credentials an attacker would need to compromise to destroy all of them. If the answer is one, the copy count does not matter.
What is the single most important change to make?
Separate the identity that writes your backups from the identity that can delete them, and ideally put the backup outside the reach of your production tenant altogether. The attacker in this case went straight at recoverability — over 30 ListKeys requests against Site Recovery storage, repeated attempts on Backup and Site Recovery protection locks — because whoever was driving it understood that destroying production only works if the victim cannot restore. If the credentials running your workloads can also reach your recovery infrastructure, you do not have a backup in any meaningful sense; you have a second copy inside the same blast radius. Everything else on the list is worth doing, but this is the one that changes the outcome.
How did the secrets end up in a public GitHub issue?
Microsoft records that an employee had previously exposed client IDs, client secrets and tenant IDs in plaintext in a public GitHub issue, but has not said this was the entry vector and does not know exactly how the service principals were hijacked. Mechanically it is entirely ordinary: somebody pastes a configuration block or an error message into an issue while asking for help debugging, and the secret goes with it. The wider lesson is about scanning coverage. Many organisations scan source code and overlook that issues, pull request comments, wiki pages, commit messages and build logs are published surfaces too. A secret pasted into an issue is exactly as exposed as one committed to a file and far less likely to be caught.
Could we realistically have detected this?
The reconnaissance, yes; the destruction, no. Roughly 86% of the operation — about 15 hours 30 minutes of 18 — was reading, with more than 300 successful read operations across VMs, subscriptions and resource groups. No response process interrupts a seven–minute deletion spree, but a machine identity enumerating resources it has never touched, across multiple subscriptions, over the better part of a day, is a detectable anomaly rather than a subtle one. Service principals normally have narrow, repetitive behaviour, which makes deviation easier to spot than it is for humans. The practical goal is not to outrun destruction. It is to notice the fifteen quiet hours that preceded it.
Do long–lived client secrets have to go?
Where the platform supports an alternative, yes, and workload identity federation is that alternative for a growing number of scenarios. A long–lived client secret is a bearer credential: anyone holding the string is the identity, from anywhere, until the secret expires or someone revokes it. Federation replaces that with short–lived tokens issued on the basis of where the workload is actually running, which removes the thing an attacker can copy out of a repository or a configuration file. Where secrets remain unavoidable, the fallback controls are rotation on a tracked schedule, storage in a key vault rather than in application configuration, and an owner recorded against each one so expiry does not come as a surprise.
Does any of this touch Cyber Essentials?
It touches user access control directly, and it is worth raising with your assessor rather than discovering during an assessment. Machine identities are user accounts in every meaningful sense — they authenticate, they hold privileges and they can destroy data — and the scheme is built around least privilege and the removal of unnecessary accounts. Service principals routinely escape that discipline because they are created by developers, live in a cloud portal rather than a directory anyone reviews, and have no leaver process attached to them. An estate with dozens of unowned service principals holding subscription–level roles is carrying a genuine access control problem, whatever the certification says about the laptops and the firewalls.

Seven minutes of damage, fifteen hours of warning, months of preparation

The organisations that survive this pattern are not the ones with the fastest incident response. They are the ones where an attacker holding a valid identity still could not reach the backups, still could not remove the locks, and still could not delete everything. Cloudswitched works with UK businesses on exactly that: machine identity inventory and least–privilege scoping, resource locks where they matter, immutable backup behind separate credentials, and alerting tuned to what a service principal does rather than only to what people do.

Talk to us about Azure Cloud Services
Tags:AzureCloud BackupNetwork AdminCyber Essentials
CloudSwitched

London-based managed IT services provider offering support, cloud solutions and cybersecurity for SMEs.

CloudSwitched Service

Azure Cloud Services

Cloud servers, migration and ongoing Azure management for UK businesses

Learn More

Technology Stack

Powered by industry-leading technologies including SolarWinds, Cloudflare, BitDefender, AWS, Microsoft Azure, and Cisco Meraki to deliver secure, scalable, and reliable IT solutions.

SolarWinds
Cloudflare
BitDefender
AWS
Hono
Opus
Office 365
Microsoft
Cisco Meraki
Microsoft Azure

Latest Articles

14
  • Network Admin

Network Change Management: A UK Business Guide to Making Infrastructure Changes Without Causing Outages in 2026

14 Oct, 2026

Network change management is the discipline of planning, approving, carrying out and checking changes to network infrastructure so that routine work does not...

Read more
13
  • IT Office Moves

Choosing an Office Location: A UK Business Guide to Evaluating Internet, Power and Building Infrastructure Before You Sign the Lease in 2026

13 Oct, 2026

Evaluating office location IT infrastructure is the step most UK businesses skip when choosing new premises, and the one most likely to cost them after the...

Read more
12
  • IT Support

IT Support for Remote and Hybrid Teams: A UK Business Guide to Supporting Staff Who Aren't in the Office in 2026

12 Oct, 2026

Remote IT support exposes an assumption most support models never had to state: that a technician can walk over. Look at a traditional support arrangement and...

Read more

Enquiry Received!

Thank you for getting in touch. A member of our team will review your enquiry and get back to you within 24 hours.