Чужой компьютер: почему ваш телефон вам не принадлежит — и что с этим делать

Опубликовано 2026-09-20
Чужой компьютер: почему ваш телефон вам не принадлежит — и что с этим делать

Вы держите в руках устройство, в котором прямо сейчас исполняется код по меньшей мере восьми разных авторов. Ваш — один: операционная система и приложения. Он же самый бесправный. Мы выяснили это не из презентаций, а на практике: написали свою ОС на Rust, загрузили её на обычный планшет Samsung Galaxy Tab S6 и полгода разбирались, кто ещё живёт внутри чипа и чьи правила там действуют. Эта статья — про то, как современное устройство устроено на самом деле, почему «мой телефон» — неточное выражение, и что с этим можно сделать, а что — честно нельзя.

Тезис
Компьютер принадлежит тому, кто держит ключи, владеет заборами и решает, что загрузится. В вашем телефоне это не вы — и не ваша операционная система.
Zero Day Labs
01

Проблема

Мы принесли на планшет картину из мира микроконтроллеров: «ты — единственный код, который исполняется». Понадобилось около десяти тихих перезагрузок всего чипа, чтобы понять, что это неправда.

02

Что сделали

Загрузили собственную ОС на Snapdragon 855, подняли Wi‑Fi с нуля — 32 000 строк вместо 950 на макетке — и составили карту всех, кто исполняется рядом с нами и что каждый из них может.

03

Что получилось

Восемь исполняющихся сущностей, семь — чужие; почти каждая может нас убить, мы — ни одну. Модель угроз, которая переносится на любой телефон, ноутбук и «умную» лампочку.

Как это устроено

Восемь жильцов в одном чипе.

Кто исполняется в телефоне, кроме вашей ОС — и что каждый может сделать с вами.

Школьная модель — «процессор исполняет операционную систему, ОС управляет железом» — устарела лет пятнадцать назад. Современная система-на-кристалле — это многоквартирный дом, и операционная система в нём — не хозяин, а один из жильцов. Причём не на верхнем этаже. Вот кто живёт в типичном флагманском Android на Qualcomm (у других вендоров имена другие, роли те же).

Планшет Galaxy Tab S6, Snapdragon 855. Подробная карта с адресами и регистрами — в серии «Чей это компьютер?».
КтоЧто может с вамиЧто можете вы
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: ОС, приложения)Просить, голосовать, обслуживать, валидировать, запирать то, до чего дотягиваетесь. Ни одного «запретить». Ни одного «проверить их код».
Карта власти в устройстве: держатели ключей, жильцы с DMA, вы, внешний мир
Все стрелки из вашего блока — просьбы и обслуживание. Все стрелки в него — власть.

Заметьте направление стрелок. Всё, что исходит от вас, — просьбы, голоса, ответы на запросы. Всё, что входит, — власть: право перезагрузить, право прочитать память, право не загрузить. Это нормально для современного SoC. Ненормально — не знать об этом.

На практике

Четыре факта, которые мы проверили руками.

Не из документации — из логов, регистров и десяти перезагрузок.

32 000

строк кода, чтобы Wi‑Fi‑чип заработал на планшете. На макетке с ESP32 та же задача — 950 строк. Разница — не сложность радио, а обслуживание привилегированного жильца: четыре сервера, загрузчик подписанных образов, семь рельс питания.

23 мс

проходит между нашим честным «нет такого раздела» на запрос модема и его смертью. Прошивка проверяет ответы по форме, а не по содержанию: отказ она считает неисправностью хоста. Пустой ответ — принимает.

живут файлы модема на вашем диске: разделы `modemst1/2` не трогает ни factory reset, ни переустановка ОС. Linux и Android отдают их модему настоящими. Мы подсунули тень в RAM — и он не заметил.

0

заборов между Wi‑Fi‑прошивкой и памятью ядра в стоковом Android: «bypass» там оформлен как трансляция с выключенной трансляцией. Единственный, кто мог бы это изменить, — гипервизор. Он сказал «нет».

И одно наблюдение, которое стоит запомнить каждому: «авиарежим» — это запрос операционной системы к модему, а не рубильник. Единственный способ убедиться, что радио не излучает, — измерить снаружи. Модем имеет собственный uplink в сеть оператора, и он структурно идёт мимо VPN, файрвола и любых ваших настроек.

Паразит в планшете — обложка статьи о Wi‑Fi‑прошивке как жильце с ключами арендодателя
«Wi‑Fi‑чип» на современном SoC — половина модема с DMA, файловым сервером и своим радио. Подробно — в статье «Паразит в планшете».
Не только телефон

Это не 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‑стека в вашем адресном пространстве, с вашими ключами, и три громких уязвимости в нём за пять лет. Поднимемся выше — и увидим то же самое в софте:

Общая формула: доверенная база, которую вы не выбирали и не можете проверить. Разница между устройствами — только в том, насколько щедро хост обслуживает жильца: даёт ли настоящий диск, транслирует ли 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 — защититься там, где платформа чужая. Если жильца нельзя выселить, конфиденциальность строится выше него. Три правила, которые мы вывели, ломая собственный код:

  1. Шифруйте выше канала. Ключ от вашего Wi‑Fi‑трафика лежит в модеме — так у всех: у Linux, Android и у нас. Значит, содержимое защищает только TLS с проверкой сертификата и сквозное шифрование. Мы нашли у себя HTTPS без проверки сертификата на всех трёх платах — «зачем ломать забор, если дверь не заперта». Проверьте свои IoT‑устройства: там это норма.
  2. VPN — замок на канал, не шапка‑невидимка. Он закрывает трафик от провайдера и чужого Wi‑Fi и больше ничего не обещает: отпечаток браузера, часовой пояс, аккаунты и собственный uplink модема остаются. Хороший VPN не требует персональных данных (утечь может только то, что собрано), работает на семействе WireGuard и честно пишет, чего не делает.
  3. Согласованность сигналов. Если адрес говорит «Амстердам», а часы браузера — «Москва», вас выдали не туннель, а 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`. Не потому что «своё лучше», а потому что чужое нельзя проверить — а мы обязаны знать, что делает каждый слой, за который отвечаем.

Это дорогой этаж, и мы не будем притворяться, что он для всех. Но он единственный, на котором список «не можем» становится короче, а не длиннее.

Честно

Что мы не можем.

Список, который мы считаем частью результата.

Что это значит для вас
Мы — жилец на EL1, который научился не наступать на заборы, обслуживать соседа с DMA так, чтобы он ничего не получал, и честно записывать, до чего не дотягивается. Это меньше, чем хотелось. Это больше, чем есть у любой ОС, которая об этом не знает.
Zero Day Labs

Если вы дочитали до этого места, вы уже на первом этаже: вы знаете, что в устройстве есть жильцы и кто из них главный. Дальше — по ситуации. Инженерные подробности — восемь статей серии «Чей это компьютер?» с адресами, регистрами и исходниками. Про то, как мы строим собственный ИИ‑стек, — отдельная статья. Про дома на собственной ОС — здесь. А если у вас есть устройство, агент или инфраструктура, про которые вы хотите знать, кто там хозяин, — напишите на 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, агентный рантайм с памятью и вытеснением задач, бенчмарк и ночной цикл дообучения с доказательством. Цифры — из наших бенчмарков. И что из этого нужно вашему бизнесу.

security0xd-osprivacyhardwarethreat-model