Вы держите в руках устройство, в котором прямо сейчас исполняется код по меньшей мере восьми разных авторов. Ваш — один: операционная система и приложения. Он же самый бесправный. Мы выяснили это не из презентаций, а на практике: написали свою ОС на Rust, загрузили её на обычный планшет Samsung Galaxy Tab S6 и полгода разбирались, кто ещё живёт внутри чипа и чьи правила там действуют. Эта статья — про то, как современное устройство устроено на самом деле, почему «мой телефон» — неточное выражение, и что с этим можно сделать, а что — честно нельзя.
Компьютер принадлежит тому, кто держит ключи, владеет заборами и решает, что загрузится. В вашем телефоне это не вы — и не ваша операционная система.Проблема
Мы принесли на планшет картину из мира микроконтроллеров: «ты — единственный код, который исполняется». Понадобилось около десяти тихих перезагрузок всего чипа, чтобы понять, что это неправда.
Что сделали
Загрузили собственную ОС на Snapdragon 855, подняли Wi‑Fi с нуля — 32 000 строк вместо 950 на макетке — и составили карту всех, кто исполняется рядом с нами и что каждый из них может.
Что получилось
Восемь исполняющихся сущностей, семь — чужие; почти каждая может нас убить, мы — ни одну. Модель угроз, которая переносится на любой телефон, ноутбук и «умную» лампочку.
Восемь жильцов в одном чипе.
Кто исполняется в телефоне, кроме вашей ОС — и что каждый может сделать с вами.
Школьная модель — «процессор исполняет операционную систему, ОС управляет железом» — устарела лет пятнадцать назад. Современная система-на-кристалле — это многоквартирный дом, и операционная система в нём — не хозяин, а один из жильцов. Причём не на верхнем этаже. Вот кто живёт в типичном флагманском Android на Qualcomm (у других вендоров имена другие, роли те же).
| Кто | Что может с вами | Что можете вы |
|---|---|---|
| TrustZone (EL3, Qualcomm) | Проверяет подписи и запускает прошивки, ставит заборы в памяти, перезагружает чип без объяснений. Лог — зашифрован. | Просить: smc-вызовы по документированному списку. |
| Гипервизор (EL2, Samsung) | Владеет IOMMU — единственным забором между DMA чипов и вашей памятью. Наложил вето на наш запрет DMA для Wi‑Fi: мы записали bypass, прочитали обратно fault. | Ничего. Записи в его регистры молча переписываются. |
| Контроллер питания (AOP) | Держит все рельсы и такты. Наш неверный голос за один уровень напряжения обесточил цифровую логику всего SoC. | Голосовать. Не приказывать. |
| Загрузчик (S‑Boot) | Решает, что загрузится: ваша ОС, recovery или режим прошивки — по байту в микросхеме питания. | Ничего до момента, когда он передал вам управление. |
| Модем (80 МБ подписанной прошивки) | Сотовая связь, GNSS и вся логика Wi‑Fi. Требует четыре сервера от хоста; хранит свои файлы на вашем диске в разделах, которые переживают factory reset. Отказ на один запрос — смерть через 23 мс. | Обслуживать. Мы научились обслуживать так, чтобы он ничего не получал. |
| DMA‑каналы Wi‑Fi (12 штук) | Читают и пишут вашу RAM по физическим адресам — ядро, ключи, переписку. В стоковом Android — без трансляции (qcom,smmu-s1-bypass). | Отдать им ровно 4 МиБ и надеяться, что забор поставит кто-то другой. |
| Дисплейный контроллер | Свой DMA‑поток в память. Показывал логотип, пока мы не подменили содержимое. | Подменить кадр. |
| Микросхема питания (PMIC) | Единственная память, которая переживает сброс. Мы сделали её свидетелем: 72 байта «последних слов» перед каждым опасным шагом. | Читать и писать 1,5 КиБ. |
| Вы (EL1: ОС, приложения) | — | Просить, голосовать, обслуживать, валидировать, запирать то, до чего дотягиваетесь. Ни одного «запретить». Ни одного «проверить их код». |
Заметьте направление стрелок. Всё, что исходит от вас, — просьбы, голоса, ответы на запросы. Всё, что входит, — власть: право перезагрузить, право прочитать память, право не загрузить. Это нормально для современного SoC. Ненормально — не знать об этом.
Четыре факта, которые мы проверили руками.
Не из документации — из логов, регистров и десяти перезагрузок.
строк кода, чтобы Wi‑Fi‑чип заработал на планшете. На макетке с ESP32 та же задача — 950 строк. Разница — не сложность радио, а обслуживание привилегированного жильца: четыре сервера, загрузчик подписанных образов, семь рельс питания.
проходит между нашим честным «нет такого раздела» на запрос модема и его смертью. Прошивка проверяет ответы по форме, а не по содержанию: отказ она считает неисправностью хоста. Пустой ответ — принимает.
живут файлы модема на вашем диске: разделы `modemst1/2` не трогает ни factory reset, ни переустановка ОС. Linux и Android отдают их модему настоящими. Мы подсунули тень в RAM — и он не заметил.
заборов между Wi‑Fi‑прошивкой и памятью ядра в стоковом Android: «bypass» там оформлен как трансляция с выключенной трансляцией. Единственный, кто мог бы это изменить, — гипервизор. Он сказал «нет».
И одно наблюдение, которое стоит запомнить каждому: «авиарежим» — это запрос операционной системы к модему, а не рубильник. Единственный способ убедиться, что радио не излучает, — измерить снаружи. Модем имеет собственный uplink в сеть оператора, и он структурно идёт мимо VPN, файрвола и любых ваших настроек.

Это не Samsung и не Qualcomm.
Тот же принцип — в ноутбуке, в iPhone, в лампочке и в вашем браузере.
Соблазн — сказать «это про Android на Snapdragon». Нет. Протокол, который мы обслуживали, — Qualcomm’овский для любого хоста: он же на Windows‑ноутбуках с Snapdragon X Elite, он же на x86 с картами QCA (где трансляция DMA — opt‑in свойство драйвера), он же в iPhone с модемом Qualcomm (там перед модемом всегда стоит DART — Apple жильцу не доверяет). У Broadcom, MediaTek, Exynos — свои имена и та же архитектура: подписанная прошивка, DMA, свой uplink.
Спустимся ниже: ESP32 в «умной» лампочке — это блоб Wi‑Fi‑стека в вашем адресном пространстве, с вашими ключами, и три громких уязвимости в нём за пять лет. Поднимемся выше — и увидим то же самое в софте:
- Расширение браузера с правом «читать и изменять все ваши данные на всех сайтах» — жилец с ключами от всех ваших страниц. Именно так устроено большинство «бесплатных VPN для Chrome», и именно за это магазины их регулярно удаляют.
- Приложение с доступом к контактам, микрофону и фоновой сетью — процесс, чей код вы не читали, на устройстве, где ОС не может проверить, что он делает с данными после отправки.
- Облако и чужие API. Каждый запрос к чужой модели ИИ — ваш документ на чужом сервере. «Мы не обучаемся на ваших данных» — это политика, не архитектура. Политику меняют одной строкой в договоре.
- Умный дом от бренда — хаб, который перестаёт работать без чужого сервера, и панель, прошивку которой обновляет не владелец дома.
Общая формула: доверенная база, которую вы не выбирали и не можете проверить. Разница между устройствами — только в том, насколько щедро хост обслуживает жильца: даёт ли настоящий диск, транслирует ли DMA, проверяет ли сертификат сервера, к которому ходит сам.
Это не паранойя. Это модель угроз.
Что документировано, что продемонстрировано, что структурно возможно.
Честно разложим по тому, что нужно атакующему. Ничего, кроме сети: местоположение по соте, законный перехват, SS7, IMSI‑catcher — документировано десятилетиями, модем делает то, для чего создан. Уязвимость в прошивке по воздуху: Project Zero в 2023 нашёл 18 zero‑day в baseband Exynos, четыре из них — RCE, зная только номер телефона; Broadpwn в 2017 — RCE в Wi‑Fi‑прошивке Broadcom одним кадром и дальше в хост через DMA там, где нет IOMMU. Уязвимости Hexagon DSP (CVE‑2023‑33063, CVE‑2024‑43047) Qualcomm описал как «ограниченно, целенаправленно эксплуатируемые»; по отчёту Amnesty International последнюю использовала сербская полиция через Cellebrite.
Вывод не в том, что вас лично взломают через модем — скорее всего, нет. Вывод в том, что контроль, обновления и персистентность в вашем устройстве принадлежат не вам, и любая модель безопасности, которая делает вид, что это не так, — не модель безопасности. Особенно это касается тех, кто отвечает за чужие данные: врачей, юристов, журналистов, разработчиков с ключами от продакшена — и любого бизнеса, который хранит документы клиентов.
Модель угроз, в которой всё закрыто, — не модель угроз. Честный список «не можем» — часть результата.Три этажа ответа.
Понять, кто хозяин. Защититься там, где платформа чужая. Заменить платформу там, где это возможно.
Мы отвечаем на эту проблему на трёх уровнях — и ровно так устроено всё, что мы делаем. Уровни не исключают друг друга: первый нужен всем, второй — большинству, третий — тем, кто может себе позволить выбирать железо.
Этаж 1 — понять. Почти всё из этой статьи проверяется на своём устройстве без разборки. Кто обслуживает модем, транслируется ли DMA Wi‑Fi, какие разделы переживают сброс:
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 — транслируется; identity — физические адреса; нет файла — IOMMU нетНа Android (нужен adb shell или root):
# разделы модема, которые переживают factory reset
ls -l /dev/block/by-name/ | grep -E 'modemst|fsg|fsc'
# нашлось — Wi‑Fi‑прошивка пишет в RAM по физическим адресам
find /proc/device-tree -name 'qcom,smmu-s1-bypass' | grep -iE 'icnss|wifi|wlan'На Windows — Диспетчер устройств → Wi‑Fi‑адаптер → Сведения → «DMA Remapping Policy»: 2 — DMA транслируется, 0/1 или отсутствие свойства — физические адреса. На iPhone проверять нечего: DART перед модемом всегда, а какой модем внутри — по номеру модели и разборкам iFixit. Для бизнеса «понять» — это аудит: карта того, кто и до чего дотягивается в ваших устройствах, агентах и сервисах, с честным остаточным риском. Это работа, которую мы делаем на заказ — теми же инструментами, что и для себя.
Этаж 2 — защититься там, где платформа чужая. Если жильца нельзя выселить, конфиденциальность строится выше него. Три правила, которые мы вывели, ломая собственный код:
- Шифруйте выше канала. Ключ от вашего Wi‑Fi‑трафика лежит в модеме — так у всех: у Linux, Android и у нас. Значит, содержимое защищает только TLS с проверкой сертификата и сквозное шифрование. Мы нашли у себя HTTPS без проверки сертификата на всех трёх платах — «зачем ломать забор, если дверь не заперта». Проверьте свои IoT‑устройства: там это норма.
- VPN — замок на канал, не шапка‑невидимка. Он закрывает трафик от провайдера и чужого Wi‑Fi и больше ничего не обещает: отпечаток браузера, часовой пояс, аккаунты и собственный uplink модема остаются. Хороший VPN не требует персональных данных (утечь может только то, что собрано), работает на семействе WireGuard и честно пишет, чего не делает.
- Согласованность сигналов. Если адрес говорит «Амстердам», а часы браузера — «Москва», вас выдали не туннель, а
Intl.DateTimeFormat. Приватность — это не один инструмент, а непротиворечивая история всех сигналов устройства. Мы сделали для этого бесплатное расширение, которое подменяет таймзону вслед за IP.
Этаж 3 — заменить платформу. Там, где вы выбираете железо, можно выбрать и то, сколько жильцов в нём живёт. Мы пошли этим путём дважды:
Своя ОС: 0xd‑os
Написана с чистого листа на Rust. Одна и та же система загружается на флагманском планшете и на контроллере с 512 КБ памяти. Чужому жильцу — модему — отдаётся ровно столько, сколько нужно, чтобы он работал и ничего не получал: тень вместо диска, пустой список вместо отказа, 4 МиБ вместо всей RAM. На этой ОС мы строим умные дома под ключ — без облака и без панели, прошивку которой обновляет кто-то другой.
Свой ИИ: AGI Core + llamars
Собственный движок инференса на Rust (Vulkan и Metal, быстрее llama.cpp на его же тестах), собственный рантайм агентов с постоянной памятью и capability‑песочницей, ночной цикл дообучения с A/B‑гейтом. Документы, которые обрабатывает ИИ, не покидают ваш периметр — потому что модель стоит у вас, а не потому, что кто-то обещал.
Свои инструменты
Редактор с браузером внутри для аудита веба, агенты, которые не могут вызвать то, на что нет гранта, супликант WPA в safe Rust без `unsafe`. Не потому что «своё лучше», а потому что чужое нельзя проверить — а мы обязаны знать, что делает каждый слой, за который отвечаем.
Это дорогой этаж, и мы не будем притворяться, что он для всех. Но он единственный, на котором список «не можем» становится короче, а не длиннее.
Что мы не можем.
Список, который мы считаем частью результата.
- Прочитать код TrustZone, гипервизора, модема — он подписан и закрыт. Мы обслуживаем его, валидируем всё, что он присылает, и запираем то, до чего дотягиваемся.
- Запретить модему излучать. «Авиарежим» — просьба. Измерить можно только снаружи.
- Закрыть DMA Wi‑Fi‑прошивки на планшете полностью: stage‑1 трансляция возможна (mainline Linux делает её на том же чипе), у нас она в плане и честно помечена «не сделано».
- Сделать чужую платформу своей. На iPhone, в стоковом Android, в Windows остаётся этаж 2 — защита выше канала. Мы не продаём иллюзию, что VPN или расширение решают проблему, описанную выше.
Мы — жилец на EL1, который научился не наступать на заборы, обслуживать соседа с DMA так, чтобы он ничего не получал, и честно записывать, до чего не дотягивается. Это меньше, чем хотелось. Это больше, чем есть у любой ОС, которая об этом не знает.Если вы дочитали до этого места, вы уже на первом этаже: вы знаете, что в устройстве есть жильцы и кто из них главный. Дальше — по ситуации. Инженерные подробности — восемь статей серии «Чей это компьютер?» с адресами, регистрами и исходниками. Про то, как мы строим собственный ИИ‑стек, — отдельная статья. Про дома на собственной ОС — здесь. А если у вас есть устройство, агент или инфраструктура, про которые вы хотите знать, кто там хозяин, — напишите на hello@0xd.to.
Продукты из статьи
Узнать, кто хозяин в вашем устройстве
Аудит устройств, прошивок, агентов и инфраструктуры с письменным scope и честным списком «не можем». Или дом и ИИ на платформе, где хозяин — вы.
Чей это компьютер? Ваш, или…Мы написали ОС с нуля на Rust и запустили её на Samsung Galaxy Tab S6. В устройстве живёт по меньшей мере восемь исполняющихся сущностей — семь не наши, и почти каждая может нас убить. Карта жильцов — вводная статья серии о том, кому принадлежит современный SoC.
Паразит в планшетеНа макетке F4VE Wi‑Fi был 950 строками за UART‑ом. На планшете Snapdragon 855 стал 32 000: девять стадий, дюжина тихих сбросов SoC, четыре сервера, которые мы поднимаем для чипа. «Wi‑Fi‑чип» — половина модема с DMA, файловой системой и собственным радио: жилец с ключами арендодателя. Что он может, кого касается (каждый Android на Snapdragon, ноутбуки с Windows, iPhone с модемом Qualcomm) и как изолировать его прозрачно.
Свой ИИ целиком: движок, память, агент и ночь, в которую он учитсяЗа пять с половиной месяцев мы построили полный собственный стек ИИ на Rust: инференс-движок быстрее llama.cpp, агентный рантайм с памятью и вытеснением задач, бенчмарк и ночной цикл дообучения с доказательством. Цифры — из наших бенчмарков. И что из этого нужно вашему бизнесу.