Dropbox на macOS использует приёмы malware, чтобы получить привилегии, которые ему не нужны

Если у вас установлен Dropbox, загляните в Системные настройкиЗащита и безопасностьКонфиденциальность.

f9338d9debf24643b9403bdab7c1dd5d

  • Показывает фальшивое системное окно macOS, чтобы получить пароль пользователя
  • Добавляет себя в привилегированные процессы без обязательного для всех разрешения
  • Ставит в систему backdoor, чтобы восстановить разрешения, если их явно отберут
  • Эти разрешения толком не использует <irony/>

Заметили что-нибудь необычное на этой картинке? Задумывались когда-нибудь, как оно здесь очутилось? Подумали — может вы добавили его сами, когда Dropbox попросил разрешения управлять компьютером?

Нет, ваша память вас не подводит. Вы не помните, как разрешали это, потому что Dropbox никогда не показывал вам диалог, спрашивающий разрешения — вот такой:

bd10e44a0cea4f0fb57897407a429102

Это единственная официально разрешённая возможность попасть в этот список — но Dropbox никогда не спрашивал у вас этого разрешения. Позже я расскажу, почему это важно, но сейчас проведите удивительный эксперимент: попробуйте удалить его.

«Легко!» — скажете вы. Способ всем известен: нажать «<strong>Замок</strong>», выделить строчку с Dropbox, удалить его кнопкой «—». И вот, смотрите: его больше нет, верно?

Неверно. У него есть дурная привычка каждый раз возвращаться. Попробуйте заново зайти в систему (или перезапустить программу), и Dropbox снова добавит себя в список разрешённых приложений и галочка напротив него будет установлена. Это настоящее волшебство!

Если же вам не хочется пробовать, посмотрите, как я пробую отключить эту возможность у Dropbox:

Тут возникает два вопроса:

  • Почему это важно?
  • Можно ли как-то снять эту галочку, но продолжить пользоваться Dropbox?

Почему это важно?

Это важно как минимум по трём причинам:

Первая, и самая главная: потому что Dropbox даже не просил разрешения управлять вашим компьютером. «Управлять компьютером» в macOS значит нажимать на кнопки, пункты меню, запускать программы, удалять файлы… Это угроза безопасности, и поэтому программы должны требовать ввода пароля и явного разрешения на попадание в тот список.

И «объяснение» от Dropbox не объясняет, почему они делают этот трюк (англ.):

Interlude: Contrary to Dropbox’s completely spurious “explanation”/obfuscation here, Accessibility has nothing at all to do with granting permissions to files. Accessibility frameworks were first introduced in Mac OS X 10.2 and expanded in 10.3 to allow control of user interface items via System Events and the Processes suite. As anyone can readily see, what that allows is GUI control just as if the program or script was clicking buttons and menu items.

Но, например, вы доверяете Dropbox, и считаете, что они — большая компания, которая не хочет огорчать своих пользователей и не будет делать вещей, не достойных своего честного имени?

Если вы рассуждаете так, вы допускаете две ошибки:

  • Чем больше компания, тем меньше она страдает от расстроенных пользователей. Всё просто: если 1000 человек прочитают эту статью и перестанет пользоваться сервисом (на Хабре их набралось 200 человек — прим. пер.), по большому счёту, ничего не изменится. Глупо считать, что большая компания не пошлёт вас к чёрту от того, что боится потерять всех клиентов и бизнес. Ещё глупее — если вспомнить, что вы у них на бесплатном тарифе. (Вот(англ.) подробный разбор, почему большие компании редко задумываются об этичности своих действий).
  • Что важнее, у вас уже есть серьёзное доказательство того, что Dropbox-у нельзя доверять: он только что получил контроль над системой в обход защиты macOS, и не спрашивая вас. Кроме того, как вы увидели в том удивительном эксперименте, даже когда вы явно отнимаете у него контроль, он игнорирует ваше решение и восстанавливает его. Как он это делает — мы скоро узнаем. (Есть и другие серьёзные причины не верить Dropbox — например, эта — прим. пер.)

Есть и вторая проблема с этим трюком Dropbox-а.

Представим на минуту, что разработчики не желают зла и не хотят сделать с вами ничего плохого. Но, тем не менее, возможность этого у процесса Dropbox есть. Значит, злоумышленник может найти ошибку в коде Dropbox и использовать её, чтобы захватить контроль над вашим компьютером. Пока это лишь потенциальная угроза; но, как и все угрозы, она станет реальной, как только какой-нибудь злоумышленник использует её.

Вся суть системы безопасности ОС — и главная задача системы разрешений macOS — в том, что программа не должна иметь больше полномочий, чем ей требуется для выполнения задачи. Dropbox же либо хранит пароль администратора в явном виде (это очень скверно), либо запускает свой процесс с привилегиями суперпользователя (не менее скверно) — иначе ему пришлось бы спрашивать пароль каждый раз, когда вы удаляете его из разрешённых.

По-моему, эта мера не только скрытная (так как я не давал явного разрешения на такое), но ещё и чрезмерная.

И это третья проблема: для нормальной работы Dropbox-у не нужны ни права суперпользователя, ни доступ к Accesibility API. (Как предположили в комментариях к оригинальной статье(англ.), Dropbox таким образом хочет знать, когда вы делаете снимок экрана; но комментаторы Хабра подтверждают, что публикация снимков работает — видимо, цивилизованным способом, через FSEvents — прим. пер.).

Я провёл длительный тест, чтобы убедиться в его работоспособности, используя его на 3 Маках и Айфоне в течение 10 месяцев, и не обнаружил никаких проблем. Я не мог проверить все возможности службы — я использовал Dropbox обычным образом на обычной OS X. Повторю: не было никаких проблем, и, даже если бы они возникли, тогда бы Dropbox и должен был спросить дополнительные разрешения — как все остальные программы — и уважать моё решение, если я это разрешение отниму.

Кроме того, я сообщил о своих находках службе Apple Product Security, и ждал, смогут ли они заставить разработчиков изменить поведение программы (пока безрезультатно)

Тогда у нас остался только один вопрос:

Как всё это отключить, но сохранить Dropbox.app?

  • Остановите Dropbox (Значок Dropbox в строке меню → контекстное меню«Шестерёнка»Закрыть Dropbox)
  • Удалите каталог /Library/DropboxHelperTools
  • Удалите Dropbox из Защита и безопасностьУниверсальный доступ
  • Завершите сеанс и заново войдите в систему.
  • Запустите Dropbox, и увидите это окно:

71cd46b8373940cb97d28a9928698a70

Как мы уже выяснили, это диалоговое окно врёт (всё ещё верите большой серьёзной фирме?), когда говорит, что Dropbox не будет правильно функционировать; но главный обман в том, что это не то окно, которое должна показывать программа, желающая доступ к <strong>Accessibility</strong> <strong>API</strong>. На самом деле, даже с паролем пользователя она не должна попадать в разрешённые в Универсальный доступ. Похоже, ребятам из Dropbox платят зарплату за придумывание хаков для macOS.

И тут небольшая загвоздка: если вы не дадите программе свой пароль, она не попадёт в Универсальный доступ, и будет работать без него — так же хорошо, как раньше. Но при каждом своём запуске она будет снова и снова требовать ваш пароль.

Теперь вам нужно будет смотреть, кто просит пароль, и не давать его какой попало программе. Конечно, вы и без моих советов не должны так делать — но это диалоговое окно выглядит почти как настоящее системное окно самой macOS — и, возможно, уже приучило вас писать в него всё, что просят.

Этот запрос каждый раз неприятен, но не так неприятен, как программа, хакнувшая ваш Мак.

Дополнения

  • Вторая статья: Подробный разбор технологии, которую использует Dropbox для внедрения в систему: Discovering How Dropbox Hack’s Your Mac(англ.)
  • Ответ-извинение от разработчиков в комментариях(англ.) ко второй статье. Сводится к фразам: «Ну вот, вы это заметили, теперь придётся убрать» и «Мы не злодеи, у нас просто плохой код». Ещё уверяют, что окно настоящее системное, не подделка.

 

Оригинал: https://habrahabr.ru/post/310074/