☰Series Navigation (13 parts)
- 1. The Morris Worm
- 2. Stuxnet: The History
- 3. Stuxnet: Crossing the Air Gap (you’re here)
- 4. Stuxnet: The Aftermath
- 5. The Pager Attack
- 6. The Pager Supply Chain
- 7. Crypto AG
- 8. Agent.btz
- 9. NotPetya
- 10. SolarWinds
- 11. The Target Breach
- 12. The XZ Backdoor
- 13. The Line to AI
An air gap is the strongest security control there is, on paper.
You take the sensitive machine and you physically disconnect it from every network that touches the outside world. No cable, no wireless, no path. A stranger on the internet can’t reach a computer that has no connection to the internet, the same way a burglar can’t walk through a doorway that has been bricked over. For decades this was the gold standard for protecting the things that mattered most: military systems, power plants, and the industrial controllers running a uranium enrichment facility.
Natanz had that gap, and Stuxnet crossed it. The method was a series of ordinary trust relationships, each one reasonable on its own, that added up to a bridge across a gap everyone believed was uncrossable. I’ve never trusted the phrase air-gapped, because it gets said in meetings as if it settles the question, and it lets everyone in the room stop thinking about the laptops, the contractors and the USB sticks that cross the gap every day.
What is an air gap, and why did Natanz have one?
The computers that ran Iran’s centrifuges were never meant to touch the internet. There was no reason for them to. Their job was to talk to the machinery in the plant, spin the centrifuges, hold the pressures, keep the process running. A controller doing that work has nothing to gain from a network connection to the outside world and everything to lose, so the sensible design is to seal it off entirely.
That seal was the defense Iran was counting on. An enemy might try to break into a government email server or a company website, because those things are reachable. The plant floor was a different world, disconnected by design, and the assumption baked into that design was simple: if it isn’t connected, it can’t be attacked from outside.
The assumption was wrong, and it was wrong in a way I saw play out in smaller forms my entire career. An air gap is a rule that people have to follow every single day, and a rule that depends on people following it perfectly is a rule that will be broken on a Friday afternoon when somebody needs to get work done.
Watch: Stuxnet Explained: How It Crossed an Air Gap to Wreck Iran's Centrifuges, Failure Mode
How did Stuxnet cross the air gap?
It was carried across the gap by people who had no idea they were carrying it. The bridge was the USB drive.
Engineers, technicians, and outside contractors staff a plant like Natanz, and those people carry laptops and USB drives between the outside world and the plant floor as a normal part of the job. An engineer updates the control software on his laptop at his office, where the laptop touches the internet, then carries that laptop or a USB stick into the sealed environment to do the work. Every one of those trips is a moment when a human being doing something completely ordinary bridges the gap.
Stuxnet was built to ride those trips. It spread onto USB drives, and it was patient. It could sit on a drive doing nothing, waiting to be plugged into the right kind of machine. When an infected drive went into a computer inside Natanz, the worm went with it, across the gap that was supposed to stop it, carried in the pocket of somebody who trusted his own USB stick.
And it didn’t even need the person to open a file.
Stuxnet used a flaw in the way Windows displayed the icons for files on a drive, so simply viewing the contents of an infected USB stick was enough to trigger the worm. The victim did nothing wrong by any normal standard. He plugged in a drive and looked at it, and anyone who blames him for what followed has misunderstood the attack.
The four keys and the forged signatures
Getting onto one machine inside the plant was only the beginning. Stuxnet then had to spread through the internal network to find the controllers it wanted, and it had to do that without being caught. The resources behind it show in how it pulled that off.
It carried four zero-day exploits. A zero-day is a flaw the software’s own maker doesn’t know about yet, so there’s no patch and no defense, because the vulnerability is a secret. On the black market a single one sells for six figures, because it’s a key that opens a lock nobody knows is broken.
Criminals hoard them and spend them carefully. Stuxnet spent four at once, on one operation. That spending alone told researchers a government was behind it. One of those flaws let it spread through shared printers. Another let it gain the highest level of control on every machine it reached. No ordinary attacker burns that kind of arsenal on a single job.
Then there were the signatures. Modern Windows is cautious about the low-level software called drivers, the code that talks directly to hardware, and it wants that code to be signed with a digital certificate proving who made it. A signature is meant to answer the question, who published this. The attackers signed Stuxnet’s drivers with real, valid certificates stolen from two legitimate Taiwanese hardware companies, Realtek and JMicron. Windows checked the signatures, found them genuine, and let the drivers load without complaint.
I think any company holding a code-signing certificate is holding the keys to its customers’ machines, and it ought to guard that key like the combination to the vault. When one leaks, every system that trusts the signature ends up trusting the thief. It’s the deepest lesson in the whole attack. A valid signature tells you who published something. It doesn’t tell you whether the thing is safe. Stuxnet’s code carried signatures from companies that made real hardware, so every security check that trusted those signatures waved it through.
The trust was real. It had just been stolen.
I watched the same principle fail in smaller ways for twenty years: a valid badge on the wrong person, a real vendor account used by the wrong hands, a legitimate credential in an illegitimate place. The credential being genuine is exactly what makes the attack work.
How did Stuxnet take over the controllers?
Once Stuxnet found a machine running the Siemens software that programmed the centrifuge controllers, it made its move. It slipped its own instructions into the controllers, the programmable logic that told the centrifuges how to behave, and it did it by replacing a piece of the Siemens software with a tampered version that intercepted the communication between the operators and the machines.
That interception is what let it hide. When the control room asked the centrifuges how they were doing, Stuxnet answered with the normal readings it had recorded earlier, while its own instructions drove the machines to destruction underneath.
The operators’ software was reporting to them through a layer the attacker owned. I covered this in the history of Stuxnet. It’s the same failure at the heart of the modern AI incidents I’ve written about. The moment the record passes through something the attacker controls, the record is worthless, and everyone downstream is working from a lie.
Why isn’t an air gap a wall?
The lesson reaches far beyond nuclear plants, and I’d want every executive who has ever signed off on an isolated system to hear it.
An air gap is a promise that people will maintain, and it’s only as strong as the weakest moment in the daily routine of everyone who works near it. Natanz was air-gapped in the sense that no cable ran from the plant floor to the internet. It wasn’t air-gapped in the sense that mattered, because human beings crossed that gap dozens of times a day with drives and laptops, and every one of those crossings was a chance for the wall to leak.
The first thing any real audit of an isolated system does is stop believing the word and start testing it. Who has a laptop that touches both sides? Which vendor brings a drive in for maintenance? What gets carried in and out, and by whom, and is any of it checked? The answers were never as clean as the diagram on the wall, because the diagram showed the design and the answers showed the reality, and the gap between design and reality is where every one of these attacks lives.
The people who ran Natanz weren’t fools. They built the strongest defense known at the time, and it failed because an air gap depends entirely on enforcement, and enforcement depends on people, and people carry USB drives. The contractors were part of the attack surface, and nobody had drawn them on the diagram.
This is the thread that runs straight through the rest of this series. In the articles ahead, a militant group throws away its smartphones for simple pagers, and the pagers are compromised before they arrive.
Thousands of companies install a routine software update from a trusted vendor, and the update is poisoned. A retailer’s network is breached through the account of a heating and cooling contractor.
Every one of them is the Natanz air gap again: a wall that was real on paper, crossed through a trust relationship nobody thought to question. Organizations that still treat isolation as a finished job are kidding themselves. If nobody in your company has checked this year who carries what across your own gap, put somebody on it this month.
The next article follows Stuxnet out of Natanz and into the world it changed, the wave of weapons it inspired once every government on earth studied its code. For the wider view, the cybersecurity hub collects the rest of my work on security.
Frequently Asked Questions
☰Continue the Series (13 parts)
- 1. The Morris Worm
- 2. Stuxnet: The History
- 3. Stuxnet: Crossing the Air Gap (you’re here)
- 4. Stuxnet: The Aftermath
- 5. The Pager Attack
- 6. The Pager Supply Chain
- 7. Crypto AG
- 8. Agent.btz
- 9. NotPetya
- 10. SolarWinds
- 11. The Target Breach
- 12. The XZ Backdoor
- 13. The Line to AI
