Someone else's computer: why your phone isn't yours — and what to do about it

Published 2026-09-20
Someone else's computer: why your phone isn't yours — and what to do about it

You are holding a device in which code by at least eight different authors is executing right now. Yours is one of them: the operating system and the apps. It is also the least privileged. We learned this not from slides but in practice: we wrote our own OS in Rust, booted it on an ordinary Samsung Galaxy Tab S6 and spent half a year finding out who else lives inside the chip and whose rules apply there. This article is about how a modern device is really put together, why “my phone” is an imprecise phrase, and what can be done about it — and what honestly cannot.

The thesis
A computer belongs to whoever holds the keys, owns the fences and decides what boots. In your phone that is not you — and not your operating system.
Zero Day Labs
01

The problem

We brought a microcontroller-world picture to the tablet: “you are the only code that runs”. It took about ten silent reboots of the whole chip to learn that this is false.

02

What we did

Booted our own OS on a Snapdragon 855, brought up Wi‑Fi from scratch — 32,000 lines instead of 950 on a dev board — and mapped everyone executing next to us and what each of them can do.

03

What came out

Eight executing entities, seven of them foreign; almost every one can kill us, we can kill none. A threat model that carries over to any phone, laptop and “smart” light bulb.

How it works

Eight tenants in one chip.

Who executes in a phone besides your OS — and what each can do to you.

The textbook model — “the processor runs the operating system, the OS controls the hardware” — went stale about fifteen years ago. A modern system-on-chip is an apartment building, and the operating system in it is not the owner but one of the tenants. Not on the top floor, either. Here is who lives in a typical flagship Android on Qualcomm (other vendors use other names; the roles are the same).

Galaxy Tab S6, Snapdragon 855. The detailed map with addresses and registers is in the series “Whose computer is this?”.
WhoWhat it can do to youWhat you can do
TrustZone (EL3, Qualcomm)Verifies signatures and launches firmware, puts fences in memory, reboots the chip without explanation. Its log is encrypted.Ask: smc calls from a documented list.
Hypervisor (EL2, Samsung)Owns the IOMMU — the only fence between the chips' DMA and your memory. Vetoed our attempt to forbid Wi‑Fi DMA: we wrote bypass, read back fault.Nothing. Writes to its registers are silently rewritten.
Power controller (AOP)Holds every rail and clock. One wrong vote of ours for a voltage level powered down the digital logic of the whole SoC.Vote. Not command.
Bootloader (S‑Boot)Decides what boots: your OS, recovery or download mode — by one byte in the power chip.Nothing until it hands control to you.
Modem (80 MB of signed firmware)Cellular, GNSS and all of the Wi‑Fi logic. Demands four servers from the host; keeps its files on your disk in partitions that survive a factory reset. One refusal — death in 23 ms.Serve. We learned to serve so that it gets nothing.
Wi‑Fi DMA channels (12 of them)Read and write your RAM by physical address — kernel, keys, messages. In stock Android, untranslated (qcom,smmu-s1-bypass).Hand them exactly 4 MiB and hope someone else puts up the fence.
Display controllerIts own DMA stream into memory. Showed the logo until we replaced the contents.Replace the frame.
Power management IC (PMIC)The only memory that survives a reset. We made it a witness: 72 bytes of “last words” before every dangerous step.Read and write 1.5 KiB.
You (EL1: OS, apps)Ask, vote, serve, validate, lock what you can reach. Not a single “forbid”. Not a single “inspect their code”.
Map of power in a device: key holders, tenants with DMA, you, the outside world
Every arrow leaving your box is a request or a service. Every arrow entering it is power.

Note the direction of the arrows. Everything that comes from you is a request, a vote, a reply. Everything that comes in is power: the right to reboot, the right to read memory, the right not to boot you at all. That is normal for a modern SoC. What is abnormal is not knowing it.

In practice

Four facts we verified by hand.

Not from documentation — from logs, registers and ten reboots.

32,000

lines of code for the Wi‑Fi chip to work on the tablet. On an ESP32 dev board the same job is 950 lines. The difference is not radio complexity but serving a privileged tenant: four servers, a signed-image loader, seven power rails.

23 ms

pass between our honest “no such partition” to the modem's request and its death. The firmware checks answers by form, not content: a refusal is a broken host. An empty answer it accepts.

is how long the modem's files live on your disk: the `modemst1/2` partitions are untouched by factory reset and OS reinstall. Linux and Android hand them to the modem for real. We slipped in a shadow in RAM — it never noticed.

0

fences between the Wi‑Fi firmware and kernel memory in stock Android: “bypass” there is translation with translation switched off. The only one who could change that is the hypervisor. It said no.

And one observation everyone should remember: “airplane mode” is a request from the operating system to the modem, not a switch. The only way to be sure the radio is silent is to measure from outside. The modem has its own uplink to the carrier network, and it structurally goes past your VPN, your firewall and any setting of yours.

The Parasite in the Tablet — cover of the article on Wi‑Fi firmware as a tenant with the landlord's keys
A “Wi‑Fi chip” on a modern SoC is half a modem with DMA, a file server and its own radio. Details in “The Parasite in the Tablet”.
Not just a phone

This is not Samsung and not Qualcomm.

The same principle in a laptop, an iPhone, a light bulb — and your browser.

The temptation is to say “this is about Android on Snapdragon”. No. The protocol we served is Qualcomm's for any host: the same on Windows laptops with Snapdragon X Elite, the same on x86 with QCA cards (where DMA translation is an opt‑in driver property), the same in iPhones with a Qualcomm modem (there a DART always stands in front of the modem — Apple does not trust the tenant). Broadcom, MediaTek, Exynos have their own names and the same architecture: signed firmware, DMA, an uplink of its own.

Go lower: the ESP32 in a “smart” bulb is a Wi‑Fi stack blob in your address space, with your keys, and three loud vulnerabilities in five years. Go higher — and you find the same thing in software:

The general formula: a trusted base you did not choose and cannot inspect. Devices differ only in how generously the host serves the tenant: whether it hands over a real disk, translates DMA, verifies the certificate of the server it talks to.

Why it matters

Not paranoia. A threat model.

What is documented, what has been demonstrated, what is structurally possible.

Let's lay it out honestly by what the attacker needs. Nothing but the network: cell-tower location, lawful intercept, SS7, IMSI catchers — documented for decades; the modem does what it was made for. A firmware vulnerability over the air: Project Zero found 18 zero‑days in the Exynos baseband in 2023, four of them RCE knowing only the phone number; Broadpwn in 2017 was RCE in Broadcom Wi‑Fi firmware with one frame, then into the host via DMA where there is no IOMMU. Hexagon DSP vulnerabilities (CVE‑2023‑33063, CVE‑2024‑43047) Qualcomm described as “limited, targeted exploitation”; per Amnesty International the latter was used by Serbian police via Cellebrite.

The conclusion is not that you personally will be hacked through the modem — most likely not. The conclusion is that control, updates and persistence in your device do not belong to you, and any security model that pretends otherwise is not a security model. This matters most to those responsible for other people's data: doctors, lawyers, journalists, developers with production keys — and any business that stores client documents.

From the series “Whose computer is this?”
A threat model in which everything is closed is not a threat model. An honest “cannot” list is part of the result.
What to do

Three floors of an answer.

Understand who the owner is. Protect yourself where the platform is foreign. Replace the platform where you can.

We answer this problem on three levels — and that is exactly how everything we do is organised. The levels don't exclude each other: the first is for everyone, the second for most, the third for those who can afford to choose their hardware.

Floor 1 — understand. Almost everything in this article can be checked on your own device without taking it apart. Who serves the modem, whether Wi‑Fi DMA is translated, which partitions survive a reset:

for d in /sys/class/net/*/device; do
  echo "$(basename $(dirname $d)): $(cat $d/iommu_group/type 2>/dev/null || echo 'no IOMMU')"
done
# DMA / DMA-FQ — translated; identity — physical addresses; no file — no IOMMU

On Android (needs adb shell or root):

# modem partitions that survive a factory reset
ls -l /dev/block/by-name/ | grep -E 'modemst|fsg|fsc'
# found — the Wi‑Fi firmware writes to RAM by physical address
find /proc/device-tree -name 'qcom,smmu-s1-bypass' | grep -iE 'icnss|wifi|wlan'

On Windows — Device Manager → Wi‑Fi adapter → Details → “DMA Remapping Policy”: 2 — DMA is translated, 0/1 or no property — physical addresses. On an iPhone there is nothing to check: a DART always sits in front of the modem, and which modem is inside you learn from the model number and iFixit teardowns. For a business, “understand” means an audit: a map of who reaches what in your devices, agents and services, with honest residual risk. That is work we do on request — with the same tools we use for ourselves.

Floor 2 — protect yourself where the platform is foreign. If the tenant cannot be evicted, confidentiality is built above it. Three rules we derived by breaking our own code:

  1. Encrypt above the channel. The key to your Wi‑Fi traffic lives in the modem — for everyone: Linux, Android, us. So content is protected only by TLS with certificate verification and end‑to‑end encryption. We found HTTPS without certificate verification on all three of our boards — “why break the fence if the door isn't locked”. Check your IoT devices: there it is the norm.
  2. A VPN is a lock on the channel, not an invisibility cloak. It closes traffic from the ISP and a stranger's Wi‑Fi and promises nothing else: browser fingerprint, timezone, accounts and the modem's own uplink remain. A good VPN asks for no personal data (only what is collected can leak), runs on the WireGuard family and states honestly what it does not do.
  3. Consistency of signals. If the address says “Amsterdam” and the browser clock says “Moscow”, it wasn't the tunnel that gave you away but Intl.DateTimeFormat. Privacy is not one tool but a non-contradictory story told by every signal of the device. We built a free extension that moves the timezone along with the IP for exactly this.

Floor 3 — replace the platform. Where you choose the hardware, you can also choose how many tenants live in it. We went this way twice:

🏠

Our own OS: 0xd‑os

Written from a blank page in Rust. The very same system boots on a flagship tablet and on a controller with 512 KB of memory. The foreign tenant — the modem — gets exactly as much as it needs to work and receive nothing: a shadow instead of a disk, an empty list instead of a refusal, 4 MiB instead of all of RAM. On this OS we build turnkey smart homes — without a cloud and without a panel whose firmware someone else updates.

🧠

Our own AI: AGI Core + llamars

Our own Rust inference engine (Vulkan and Metal, faster than llama.cpp on its own benchmarks), our own agent runtime with persistent memory and a capability sandbox, a nightly training loop behind an A/B gate. Documents the AI processes never leave your perimeter — because the model sits with you, not because someone promised.

🛠

Our own tools

An editor with a browser inside for web audits, agents that cannot call what they have no grant for, a WPA supplicant in safe Rust with no `unsafe`. Not because “ours is better”, but because foreign code cannot be inspected — and we must know what every layer we answer for is doing.

This is an expensive floor, and we won't pretend it is for everyone. But it is the only one on which the “cannot” list gets shorter rather than longer.

Honestly

What we cannot do.

A list we consider part of the result.

What it means for you
We are a tenant at EL1 who learned not to step on the fences, to serve the neighbour with DMA so that it gets nothing, and to write down honestly what we cannot reach. It is less than we wanted. It is more than any OS that doesn't know about it has.
Zero Day Labs

If you have read this far, you are already on the first floor: you know there are tenants in the device and which of them is in charge. What comes next depends on your situation. Engineering detail — the eight articles of the series “Whose computer is this?” with addresses, registers and source code. How we build our own AI stack — a separate article. Homes on our own OS — here. And if you have a device, an agent or an infrastructure you want to know the owner of — write to [email protected].

Find out who owns your device

Audits of devices, firmware, agents and infrastructure with a written scope and an honest “cannot” list. Or a home and an AI on a platform where you are the owner.

security0xd-osprivacyhardwarethreat-model