Blog / Threat Analysis

SPECTER Is Mostly Not a Physical Attack

One transmitter, three receivers, two clusters. A USB covert channel out of an air-gapped host, and why the property the attacker listens to decides the cause.

BK
Bernhard Kreinz
• • ~9 min read • TLCTC v2.7

SPECTER leaks data from an air-gapped computer by switching its USB devices on and off. A phone on the charging cable sees its charging state flicker, a mouse LED blinks, a loop antenna on the cable picks up the switching. It is a neat piece of research, and it arrives with a name one letter away from Spectre — the vulnerability our own CWE mapping once filed under #8 Physical Attack, and then had to take back out.

My first reading of SPECTER made the same move: malware runs, physics carries the bits, so #7 → #8. That reading is right for one of the three receivers the paper demonstrates. For the other two it is the Spectre error again, in a new costume. The test that caught it last time catches it here too, and it says something about covert channels that is easy to miss: the transmitter does not decide the cluster. The receiver does.

What SPECTER does

The paper — SPECTER: Covert Data Exfiltration from Air-Gapped Systems via USB Power Modulation, by Hyeongjun Choi, Ji Hyuk Jung and Ji Won Yoon (Korea University and 78ResearchLab) — went up on arXiv on 20 October 2026, with a revised version on 28 October.[1] Its threat model starts late. The adversary already has code running with root or administrator rights on an isolated host; how it got there, and how it got those rights, is explicitly out of scope.

From there the transmitter does nothing exotic. On Ubuntu it writes the kernel’s USB power-control and autosuspend settings; on Windows it disables and re-enables devices through the standard device-management tooling. No payload travels in USB data transfers, and no peripheral hardware or firmware is modified.[1] (One news write-up says the opposite on that last point; the paper is clear.[3]) A device in its active state is a 1, an inactive one a 0. Three receivers read the result:

Receiver What carries the bit Measured
Smartphone on the charging cable Charging starts and stops. Android needs an attacker-controlled app (no root); on iOS a person read the charging indicator. 0.2 bit/s (Ubuntu), 0.25 bit/s (Windows)
A visible USB peripheral The device’s own designed states: a mouse LED goes dark and the mouse stops responding; a webcam drops out. Mouse 1 bit/s, webcam and hub 0.25 bit/s — Windows only; no usable peripheral channel on Ubuntu
Radio receiver at the cable Electromagnetic activity on the USB cable around 5 MHz, picked up with an SDR and a loop antenna in direct contact with the cable No rate reported; a 6-bit and a 48-bit payload decoded

These are laboratory demonstrations. The paper reports no systematic error rate and no effective throughput after framing, and the RF channel was never shown to work at a distance.[1][2] At these speeds nobody exfiltrates a database. What fits through is a short secret: a key, a token, a password.

The tempting reading

The obvious classification has two steps, and the first one is not in dispute. Foreign executable content runs on the host, so R-EXEC requires a #7 Malware step at the moment of execution.[4] Everything before it — the initial compromise, the privilege escalation — the paper leaves open, and so does the path: an unresolved gap, ….

The second step is where it goes wrong. The bits leave as charge, light and radio, and #8’s definition covers “exploitation of physical phenomena/emanations.”[4] Add R-SPECIFIC — a specific generic vulnerability beats the residual #1 — and the verdict seems to write itself: … → #7 → #8 + [DRE: C], for all three receivers.

That is the reasoning of a mapper who asks “is something physical involved?” instead of “what does the attacker exploit?” We have seen where it leads.

The test Spectre left behind

When we took Spectre out of #8, the correction came with a discriminator, and it is now the substrate clause of R-SPECIFIC in the v2.7 core.[5][4] A physical-layer property of the substrate — charge, voltage, electromagnetic emission, temperature, emission-borne timing, wear, material state — makes a step #8 when it is itself the exploited generic vulnerability. Where the physical layer only carries the readout, the step is classified by whatever was actually exploited.

The removal test

Let every physical property behave ideally — perfect shielding, no stray emission, no leakage. Does the channel survive? If it vanishes, the physics was the vulnerability: #8. If it survives, the physics was only the medium, and the cause lies elsewhere.

The test never asks whether the attacker is near the machine. Rowhammer is mounted from software and stays #8; Spectre is mounted from software and is #2. And it never asks whether the signal is physical — every signal is. It asks whether the physical property is the thing being abused.

Three receivers, two clusters

Run SPECTER’s three receivers through that test and they come apart.

The radio receiver. A USB cable is not designed to broadcast its device states at 5 MHz. It does so because switching currents radiate. With ideal shielding the antenna hears nothing; the channel is gone. The emission is the exploited property, which is exactly what #8’s signal vector — energy through the medium — describes. #8, and as a bridge cluster it carries a boundary.

The mouse LED, the webcam. An LED is designed to be seen. A mouse that stops responding when its port is disabled is doing what it was built to do. Make the physics ideal and nothing changes: the LED still goes dark on command, and anyone with line of sight still sees it. No physical property is being abused. What is being abused is a designed function — software-controlled device state — carrying data it was never meant to carry. That is #1 Abuse of Functions, the same verdict our CWE mapping gives covert timing and storage channels: a path that exists by design, used as a channel.[5][6]

The charging state. Same answer. A phone is designed to detect whether its port delivers power and to show it. Ideal physics leaves that intact; the phone still reports charging on, charging off. #1.

Receiver Ideal physics — channel survives? Exploited generic vulnerability Path
RF at the cable No Unintended electromagnetic emission of the cable … → #7 → #8 + [DRE: C]
Peripheral state (LED, webcam) Yes Designed, observable device state used as a channel … → #7 → #1 + [DRE: C]
Charging state (phone) Yes Designed power delivery and charge detection used as a channel … → #7 → #1 + [DRE: C]

Written out in full:

… → #7 → #8 ||[physical][@External→@Org]|| + [DRE: C]      // RF receiver
… → #7 → #1 + [DRE: C]                                   // LED, webcam, charging state

The … is an open analytical task, not a cluster. It stands for the compromise and privilege escalation the paper assumes; in a real incident it would be replaced by classified steps as the evidence comes in.

The receiver decides the cluster

Here is the part that looks odd at first. The transmitter is the same code in every case: it toggles the same USB devices through the same operating-system interfaces. Yet one run is #8 and another is #1.

That is not an inconsistency. TLCTC classifies a step by the generic vulnerability that makes it succeed, and a covert channel succeeds only when the bits reach someone. Which property carries them across is set by where the attacker listens. An antenna at the cable exploits emission. A camera pointed at an LED exploits a designed indicator. The code that modulates is the same; what is exploited is not.

It also settles why the RF path has no #1 in it. Toggling device states is designed functionality in both cases — but on the RF path it is only how the foreign code induces the physical effect, and the core says so directly: where foreign code executes in order to induce a physical effect, the path is #7 → #8.[4] Rowhammer has the same shape: the hammering loop is ordinary memory access, and nobody writes #7 → #1 → #8 for it. On the LED path, by contrast, there is no physical vulnerability left to induce. The designed state is the channel, so the designed function is the thing exploited.

Two wrong shortcuts

“Air-gap attack, therefore physical” classifies by setting. “The transmitter uses legitimate USB controls, therefore #1” classifies by mechanism on the sender’s side. Both skip the question R-SPECIFIC asks: which generic vulnerability, if removed, would close this channel?

What the split does not change

The #7 step is the same on every path. Each classified step asserts its own System Risk Event: the foreign code running is a loss of control on the host, and the channel step is a second one. The Data Risk Event is [DRE: C], and it happens at reception — when the bits reach an unauthorised party — not when the LED first blinks.

No Business Risk Event follows from the paper. SPECTER demonstrates a channel. It does not describe an organisation losing anything, and a path drawn from it should stop at the DRE. What an organisation would lose depends on which secret leaks — and that points to the realistic continuation. Nobody spends twenty minutes trickling out 256 bits for their own sake. A leaked key or token gets used, and credential use is always #4 (R-CRED):[4]

… → #7 → #1 + [DRE: C] → #4

The interval is minutes, not seconds. At 0.25 bit/s a 256-bit key needs about seventeen minutes on the wire; at the mouse channel’s 1 bit/s, a little over four — before any framing or error correction, which the paper does not measure. For a defender that is a long causal interval, and an unusual one: a detection window that sits inside the leak rather than after it.

Why the split matters to a defender

The point of putting a step in the right cluster is that each cluster has its own control lever and its own owner. SPECTER’s three receivers do not answer to the same one.

Step Lever Typical owner Examples
#7 What may execute on the isolated host Platform / endpoint Application allowlisting, controlled media intake. The only gate common to all three paths.
#1 (LED, charging) Which designed functions may be used, and by whom System configuration Restrict software-controlled USB state changes, device allowlists, unused ports disabled, no personal phones on or near sensitive hosts, no line of sight to indicators from outside the zone
#8 (RF) Emissions and physical proximity Facility / physical security Shielded or ferrite-choked cables, zoning, control of who and what gets near the cabling

The paper’s own recommendations — treat USB power and device-state events as security telemetry, audit repeated enable/disable/suspend cycles, restrict software-controlled state changes — are mostly #1 controls, which fits: two of its three channels are #1. It does not test whether they work.[1] And they share a weakness worth stating plainly: telemetry collected on the host the attacker already controls with root rights is evidence the attacker can shape. Collection off the host is worth more than any detection rule on it.

None of the shielding helps against the LED, and none of the USB policy helps against an antenna on a cable the policy never sees. An “air-gap exfiltration” line in a risk register would hide exactly that.

One more lever sits outside the cluster table altogether. Controls that act on the data rather than on the step — a key held in a hardware security module, never present in host memory — belong to the Data Risk Event, row C. A secret that is not on the host cannot leak at any bit rate.

The same lesson, one letter later

Spectre taught us that where a flaw lives does not tell you what the attacker abuses. SPECTER adds the matching lesson for channels: how the bits travel does not tell you either. Charge, light and radio are all physical. Only one of them is a physical vulnerability.

A covert channel is classified at the receiver: the property the attacker listens to is the property being exploited.

Sources

  1. [1] H. Choi, J. H. Jung, J. W. Yoon, SPECTER: Covert Data Exfiltration from Air-Gapped Systems via USB Power Modulation, arXiv:2610.28401, v1 20 October 2026, v2 28 October 2026. Threat model §3.2; RF setup §5.3.
  2. [2] RTL-SDR.com, SPECTER: Leaking Data from Air-Gapped Computers by Toggling USB Power States, October 2026.
  3. [3] D. Ahmed, Hackread, SPECTER Attack Uses USB Power Signals to Leak Data From Air-Gapped PCs, 24 October 2026. States that the technique involves peripheral hardware or firmware modification; the paper says it requires none.
  4. [4] TLCTC v2.7 core paper: §4 (#1 and #8 definitions and boundary tests), §6 (R-SPECIFIC, R-EXEC, R-CRED), §7.3 (domain boundary operator). The classifications and paths above are this article’s application of TLCTC to the paper’s mechanisms, not classifications made by its authors.
  5. [5] Spectre Is Not a Physical Attack, tlctc.net, 6 August 2026 — the removal test and the CWE re-audit.
  6. [6] TLCTC CWE mapping: CWE-385 Covert Timing Channel and CWE-515 Covert Storage Channel → #1; CWE-1300 Improper Protection of Physical Side Channels → #8.

TLCTC Framework · v2.7 · CC BY 4.0