• XSS.stack #1 – первый литературный журнал от юзеров форума

Всё, приплыли... Сразу после выпуска Apple MacOS Big Sur приложения на всех маках по всему миру перестали запускаться.

KERNELRW

RAM
Пользователь
Регистрация
25.10.2020
Сообщения
134
Реакции
64
После выпуска Apple MacOS Big Sur почти сразу же возникли проблемы с сервером, из-за которых пользователи не могли запускать сторонние приложения на своих компьютерах. Вскоре люди в твиттере нашли обходной способ, но другие высказали некоторые опасения по поводу возможных проблем конфиденциальности, связанных с этим механизмом.


Это фатальное происшествие вызвало появление поста про «кошмар на улице Эпол», который сейчас находится в самом топе читаемых на хабре: https://habr.com/ru/post/528104/

В статье говорится что на волне проблем с серверами обновлений в день выхода апдейта macOS 11 Big Sur у Apple возникли проблемы также с серверами проверки сертификатов разработчиков при запуске приложений на Маках. В итоге приложения на старте жутко тормозили или вообще падали (потому что упс, лажа, система была заточена на то, что сервер может быть недоступен, но не заточена на то, что сервер может отвечать медленно). Что и породило текст со ссылкой выше, где в весьма драматических тонах со ссылками на Столлмана и прочим было рассказано, как Apple всё о вас знает, и что ваш компьютер больше вам не принадлежит.

9RFkS1E.jpg


Сама технология проверки приложений на старте далеко не нова, она называется GateKeeper, и предназначена для проверки сертификата каждой запускаемой программы, её подлинности и принадлежности сертифицированному Apple разработчику, чтобы пользователь не мог запустить вирус.

Также я хочу объяснить, почему полный драмы и ссылок на PRISM пост совершенно некорректный и не стоит принимать всю информацию, перечисленную в нём, за чистую монету.

Система проверяет на первом старте (и потом с какой-то вероятностью ещё иногда) валидность сертификата разработчика, и отсутствие приложения в базе известных вредоносных приложений. Тут кроется первая неточность статьи — то, что на сервера Apple уходит информация о каждом приложении, которое запускает пользователь. На самом деле на сервере проверяется некий кусок девелоперского сертификата, и если у разработчика несколько приложений, то это один и тот же кусок.

Второй момент — что эти данные пересылаются в открытом виде по HTTP, без какого-либо шифрования. Проверка проводится по OCSP — Online Certificate Status Protocol, открытом проколе, работающем по HTTP. Там есть некая лажа в том, что, используя шифрованный OCSP, можно попасть в бесконечный цикл валидации самого протокола и HTTPS соединения, но вообще да, Apple могла бы как раз напрячься и зашифровать эти данные, чтобы они не попадали неизвестно каким третьим сторонам.

Третье — информация о запусках приложений и верификации сертификатов не привязана к Apple ID пользователя. Соответственно, месседж статьи о том, как «Apple знает о том, что вы делали у себя дома и какие приложения запускали», на 99% процентов не соответствует действительности. Apple всячески рандомизирует данные пользователя о геолокации, меняя идентификаторы у себя в бэкенде каждые несколько часов, и, скорее всего, проверка сертификатов по OCSP происходит с фокусом на именно сертификатах, а не на Apple ID, который эти приложения запускает. Но все равно тот факт, что третьи стороны типа провайдера (или СОРМ) могут видеть куски информации о сертификате разработчика, привязанные, например, к IP адресу — лажа Apple, и мы возвращаемся к теме работы этой проверки по HTTP.

Что такое OCSP?

OCSP расшифровывается как Online Certificate Status Protocol. Как следует из названия, он используется для проверки действительности сертификата без необходимости загружать и сканировать большие списки отозванных по тем или иным причинам сертификатов. macOS использует OCSP, чтобы убедиться, что сертификат разработчика не был отозван перед запуском приложения.

Как объясняет Джефф Джонсон в своём твите выше, если macOS не может связаться с респондентом Apple OCSP, он все равно пропускает проверку и запускает приложение. Проблема в том, что сервер Apple не вышел из строя; он был доступен, но стал чрезвычайно долго обрабатывать запросы, и это не давало сработать механизму soft failure и отказаться от проверки.

Понятно, что этот механизм требует, чтобы macOS связалась с Apple перед запуском приложения. Внезапное осознание этого факта общественностью, вызванное проблемами Apple, вызвало некоторые опасения относительно конфиденциальности, и сообщение исследователя безопасности Джеффри Пола стало очень популярным в Twitter. Он утверждает, что
В текущей версии macOS, ОС отправляет в Apple хэш (уникальный идентификатор) каждой программы, которую вы запускаете, при её собственно запуске.
Это действительно жутко.

Что ещё хуже, для OCSP обычным явлением является использование HTTP — я говорю о самом обычном HTTP-протоколе на 80-м порту, а не об HTTPS. Для этого есть веская причина — служба OCSP используется для веб-браузеров и использование HTTPS привело бы к бесконечной рекурсии проверок. Если вы используете HTTPS для проверки сертификата с помощью OCSP, вам также необходимо будет проверить сертификат самого HTTPS-соединения с помощью OCSP. Это означает открытие ещё одного HTTPS-соединения и так далее. Конечно, хотя OCSP не требует шифрования, он требует, чтобы ответы были подписаны сервером. Это по-прежнему не решает первоначальную обеспокоенность тем, что любой, у кого есть анализатор трафика в вашей сети, может подслушивать каждое открытое вами приложение и когда вы его открываете.

Ну и самая главная и непонятная во всём этом история, на которой первоначальная статья фокусируется меньше всего — это ContentFilterExclusionList (/System/Library/Frameworks/NetworkExtension.framework/Versions/A/Resources/Info.plist), некий список приложений и системных сервисов в macOS, которые Apple решила роутить в системе самостоятельно. То есть если даже вы пользуетесь VPN, macOS решает, что уж эти приложения могут идти в интернет мимо VPN. Что вообще подрывает концепцию восприятия безопасности пользователем на корню, так как он, сидя на открытом вайфае, думает, что все его данные проходят через зашифрованный тоннель, а на самом деле хyй там. Более того, как было продемонстрировано экспертами, эта реализация чревата тем, что вредоносное ПО тоже может воспользоваться такими правилами обхода:

Что в итоге.

Apple выпустила новую статью с разъяснениями, в которой подтвердила, что проверки сертификатов никак не привязаны к Apple ID пользователя.
https://support.apple.com/en-us/HT202491

Кроме этого, компания пообещала в следующем году выпустить обновление, где проверки будут идти по зашифрованному каналу связи. Будет добавлена поддержка на случай проблем с сервером, и появится опция отключения такой функциональности.

Пиздец с ContentFilterExclusionList Apple скорее всего даже не станет исправлять и отделается ещё одной статьёй.
 
Последнее редактирование:
Можно отредактировать /System/Library/Frameworks/NetworkExtension.framework/Versions/A/Resources/Info.plis и вырезать все неугодные сервисы/демоны, но придется проделать несколько манипуляций:
1. Отключаешь FileVault
2. Загружаешься в macOS Recovery Mode (Command+R во время перезагрузки)
3. Запускаешь терминал
4. Отключаешь System Integrity Protection
csrutil disable
Отключаешь Signed System Volume
csrutil authenticated-root disable
Перезагружаешься в систему
reboot
5. Запускаешь терминал, находишь root mount device
mount
выглядит примерно так
>>/dev/disk1s5s1 on / (apfs, local, read-only, journaled)
из него вырезается последняя s, те если root у тебя /dev/disk1s5s1 то будешь монтировать /dev/disk1s5
6. Создаешь новую директорию
mkdir mnt
7. Монтируешь
sudo mount -o nobrowse -t apfs /dev/disk1s5 /Users/XXX/mnt
где XXX - имя пользователя под которым сидишь
8. Редактируешь /System/Library/Frameworks/NetworkExtension.framework/Versions/A/Resources/Info.plis на смонтированом девайсе
sudo nano /Users/XXX/mnt/System/Library/Frameworks/NetworkExtension.framework/Versions/A/Resources/Info.plis
Вырезаешь хоть все что между <array></array> после ContentFilterExclusionList
Удобно вырезать в каком-нить текстовом редакторе, а не с помощью nano. В Finder переходишь (Shift+Command+G) в папку /Users/XXX/mnt/System/Library/Frameworks/NetworkExtension.framework/Versions/A/Resources/ и открываешь Info.plis в текстовом редакторе.
9. Запускаешь команду
sudo bless --folder /Users/XXX/mnt/System/Library/CoreServices --bootefi --create-snapshot && sudo reboot

После этого все вырезанные сервисы/демоны перехватываются фаерволом (Little Snitch 5)
3e0dc98017.png

и монитором трафика (TripMode 3)
4cc7ecdbbc.png


P.S. Для особых параноиков можно заблокировать вобще все сервисы Apple через /etc/hosts
https://gist.githubusercontent.com/...0d1076a1b41891beb345ac9e7/apple.com-fixed.txt
 
...
После этого все вырезанные сервисы/демоны перехватываются фаерволом (Little Snitch 5)
3e0dc98017.png

и монитором трафика (TripMode 3)
4cc7ecdbbc.png


P.S. Для особых параноиков можно заблокировать вобще все сервисы Apple через /etc/hosts
https://gist.githubusercontent.com/...0d1076a1b41891beb345ac9e7/apple.com-fixed.txt
Очень полезная инструкция, спасибо. Тем не менее, сам факт существования такого — очень неприятный и не резонирует с политикой Apple, которая говорит что заботится о конфиденциальности пользователей и суёт везде надписи, напоминающие об этом, чтоб вы чувствовали себя комфортно пока собираются данные.

05F8C945-EB6E-4C07-AC1C-8CA380BF180E.jpeg
 
Последнее редактирование:
Очень полезная инструкция, спасибо. Тем не менее, сам факт существования такого — очень неприятный и не резонирует с политикой Apple, которая говорит что заботится о конфиденциальности пользователей и суёт везде надписи, напоминающие об этом, чтоб вы чувствовали себя комфортно пока собираются данные.
После того какой хайп поднялся в среде продвинутых пользователей Apple - с большой долей вероятности пофиксят в будущих апдейтах . Иначе продажи новых маков на собственных процессорах еще ниже станут, особенно на основном профитном рынке Apple - в Китае.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх