Если у вас установлен Dropbox, загляните в Системные настройки
→ Защита и безопасность
→ Конфиденциальность
.
TL;DR: Dropbox
- Показывает фальшивое системное окно macOS, чтобы получить пароль пользователя
- Добавляет себя в привилегированные процессы без обязательного для всех разрешения
- Ставит в систему backdoor, чтобы восстановить разрешения, если их явно отберут
- Эти разрешения толком не использует <irony/>
Заметили что-нибудь необычное на этой картинке? Задумывались когда-нибудь, как оно здесь очутилось? Подумали — может вы добавили его сами, когда Dropbox попросил разрешения управлять компьютером?
Нет, ваша память вас не подводит. Вы не помните, как разрешали это, потому что Dropbox никогда не показывал вам диалог, спрашивающий разрешения — вот такой:
Это единственная официально разрешённая возможность попасть в этот список — но Dropbox никогда не спрашивал у вас этого разрешения. Позже я расскажу, почему это важно, но сейчас проведите удивительный эксперимент: попробуйте удалить его.
«Легко!» — скажете вы. Способ всем известен: нажать «Замок»
, выделить строчку с Dropbox, удалить его кнопкой «—». И вот, смотрите: его больше нет, верно?
Неверно. У него есть дурная привычка каждый раз возвращаться. Попробуйте заново зайти в систему (или перезапустить программу), и Dropbox снова добавит себя в список разрешённых приложений и галочка напротив него будет установлена. Это настоящее волшебство!
Если же вам не хочется пробовать, посмотрите, как я пробую отключить эту возможность у Dropbox:
Тут возникает два вопроса:
- Почему это важно?
- Можно ли как-то снять эту галочку, но продолжить пользоваться Dropbox?
Почему это важно?
Это важно как минимум по трём причинам:
Первая, и самая главная: потому что Dropbox даже не просил разрешения управлять вашим компьютером. «Управлять компьютером» в macOS значит нажимать на кнопки, пункты меню, запускать программы, удалять файлы… Это угроза безопасности, и поэтому программы должны требовать ввода пароля и явного разрешения на попадание в тот список.
И «объяснение» от Dropbox не объясняет, почему они делают этот трюк (англ.)
Но, например, вы доверяете Dropbox, и считаете, что они — большая компания, которая не хочет огорчать своих пользователей и не будет делать вещей, не достойных своего честного имени?
Если вы рассуждаете так, вы допускаете две ошибки:
- Чем больше компания, тем меньше она страдает от расстроенных пользователей. Всё просто: если 1000 человек прочитают эту статью и перестанет пользоваться сервисом (на Хабре их пока 100 человек — прим. пер.), по большому счёту, ничего не изменится. Глупо считать, что большая компания не пошлёт вас к чёрту от того, что боится потерять всех клиентов и бизнес. Ещё глупее — если вспомнить, что вы у них на бесплатном тарифе. (Вот(англ.) подробный разбор, почему большие компании редко задумываются об этичности своих действий).
- Что важнее, у вас уже есть серьёзное доказательство того, что Dropbox-у нельзя доверять: он только что получил контроль над системой в обход защиты macOS, и не спрашивая вас. Кроме того, как вы увидели в том удивительном эксперименте, даже когда вы явно отнимаете у него контроль, он игнорирует ваше решение и восстанавливает его. Как он это делает — мы скоро узнаем. (Есть и другие серьёзные причины не верить Dropbox — например, эта — прим. пер.)
Есть и вторая проблема с этим трюком Dropbox-а.
Представим на минуту, что разработчики не желают зла и не хотят сделать с вами ничего плохого. Но, тем не менее, возможность этого у процесса Dropbox есть. Значит, злоумышленник может найти ошибку в коде Dropbox и использовать её, чтобы захватить контроль над вашим компьютером. Пока это лишь потенциальная угроза; но, как и все угрозы, она станет реальной, как только какой-нибудь злоумышленник использует её.
Вся суть системы безопасности ОС — и главная задача системы разрешений macOS — в том, что программа не должна иметь больше полномочий, чем ей требуется для выполнения задачи. Dropbox же либо хранит пароль администратора в явном виде (это очень скверно), либо запускает свой процесс с привилегиями суперпользователя (не менее скверно) — иначе ему пришлось бы спрашивать пароль каждый раз, когда вы удаляете его из разрешённых.
По-моему, эта мера не только скрытная (так как я не давал явного разрешения на такое), но ещё и чрезмерная.
И это третья проблема: для нормальной работы Dropbox-у не нужны ни права суперпользователя, ни доступ к Accesibility API
. (Как предположили в комментариях к оригинальной статье(англ.), Dropbox таким образом хочет знать, когда вы делаете снимок экрана; но комментаторы Хабра подтверждают, что публикация снимков работает — видимо, цивилизованным способом, через FSEvents
— прим. пер.).
[ad name=»Responbl»]
Я провёл длительный тест, чтобы убедиться в его работоспособности, используя его на 3 Маках и Айфоне в течение 10 месяцев, и не обнаружил никаких проблем. Я не мог проверить все возможности службы — я использовал Dropbox обычным образом на обычной OS X. Повторю: не было никаких проблем, и, даже если бы они возникли, тогда бы Dropbox и должен был спросить дополнительные разрешения — как все остальные программы — и уважать моё решение, если я это разрешение отниму.
Кроме того, я сообщил о своих находках службе Apple Product Security, и ждал, смогут ли они заставить разработчиков изменить поведение программы (пока безрезультатно)
Тогда у нас остался только один вопрос:
Как всё это отключить, но сохранить Dropbox.app?
(В комментариях сообщают, что удаление Dropbox обычным методом не удаляет backdoor — прим. пер.)
- Остановите Dropbox (Значок Dropbox в строке меню → контекстное меню →
«Шестерёнка»
→Закрыть Dropbox
) - Удалите каталог
/Library/DropboxHelperTools
- Удалите Dropbox из
Защита и безопасность
→Универсальный доступ
- Завершите сеанс и заново войдите в систему.
- Попробуйте запустить, и увидите это окно:
Как мы уже выяснили, это диалоговое окно врёт (всё ещё верите большой серьёзной фирме?), когда говорит, что Dropbox не будет правильно функционировать; но главный обман в том, что это не то окно, которое должна показывать программа, желающая доступ к Accessibility API
. На самом деле, даже с паролем пользователя она не должна попадать в разрешённые в Универсальный доступ
. Похоже, ребятам из Dropbox платят зарплату за придумывание хаков для macOS.
И тут небольшая загвоздка: если вы не дадите программе свой пароль, она не попадёт в Универсальный доступ
, и будет работать без него — так же хорошо, как раньше. Но при каждом своём запуске она будет снова и снова требовать ваш пароль.
[ad name=»Responbl»]
Теперь вам нужно будет смотреть, кто просит пароль, и не давать его какой попало программе. Конечно, вы и без моих советов не должны так делать — но это диалоговое окно выглядит почти как настоящее системное окно самой macOS — и, возможно, уже приучило вас писать в него всё, что просят.
Этот запрос каждый раз неприятен, но не так неприятен, как программа, хакнувшая ваш Мак.
Дополнение: подробный разбор технологии, которую использует Dropbox для внедрения в систему: Discovering How Dropbox Hack’s Your Mac(англ.)