Безопасность

Безопасность и приватность

Microkoi видит самый чувствительный трафик вашего приложения. Поэтому он устроен так, чтобы всё оставалось на вашем компьютере и под вашим контролем.

  • Данные остаются у вас

    Трафик, запросы, моки и заметки хранятся в папке, которую выбрали вы. Серверов, аккаунтов и синхронизации нет.

  • Уникальный сертификат

    Корневой сертификат создаётся на вашем компьютере. В дистрибутиве нет ни одного закрытого ключа.

  • Сеть — по вашему решению

    По умолчанию прокси и мок-серверы слушают только 127.0.0.1. Доступ из локальной сети включается отдельным переключателем и виден на экране.

  • Расшифровка по необходимости

    Узлы вне фильтра перехвата идут сквозным туннелем: их трафик не расшифровывается и не записывается.

  • Серверы проверяются полностью

    Цепочка, срок действия и имя узла настоящего сервера проверяются всегда. Режима «доверять всему» нет.

  • Безопасный просмотр

    Markdown отображается без встроенного HTML, векторные изображения — без выполнения сценариев, ссылки открываются только по http, https и mailto.

  • Доверие пространству

    Пространство из чужого репозитория не запускает мок-серверы и мониторы само, пока вы не решите ему доверять.

  • Мок-серверы не для всех

    Разрешение CORS получают только локальные источники: сайт из интернета не прочитает ответы мок-сервера.

  • Устройства не видят компьютер

    Телефон, подключённый к прокси, не может обратиться через него к адресам самого компьютера.

Где хранятся данные

Всё, что относится к проекту, лежит в папке рабочего пространства: коллекции, окружения, моки и заметки — текстовыми файлами, перехваченный трафик и история отправок — в локальной базе SQLite в служебной папке .microkoi.

В каталоге данных приложения (~/Library/Application Support/Microkoi) хранятся только настройки, список недавних пространств и корневой сертификат. Журналы пишутся в ~/Library/Logs/Microkoi.

Настройки этой машины — выбранное окружение, запущенные мок-серверы и их доступ из сети, точки останова, доверие пространствам — хранятся там же, а не в папке проекта: их нельзя подложить через репозиторий.

Приложение не отправляет нам ни трафик, ни запросы, ни сведения об использовании. Телеметрии и скрытых сетевых обращений нет: приложение обращается только к адресам, которые задали вы, — через прокси, клиент запросов и мониторы.

Корневой сертификат

Сертификат создаётся при первом обращении к прокси и уникален для установки: скомпрометировать разом всех пользователей Microkoi невозможно, потому что общего ключа не существует.

Сертификат становится доверенным только вашим действием и только после подтверждения паролем. Удалить его можно в любой момент в приложении «Связка ключей».

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

Чего Microkoi не делает

  • Не устанавливает сертификат без вашего действия и подтверждения
  • Не работает скрыто: прокси запускаете вы, а его состояние всегда видно в интерфейсе
  • Не принимает подключения с других устройств, пока вы не включите это переключателем
  • Не обходит привязку к сертификату и другие средства защиты чужих приложений
  • Не отключает проверку сертификатов настоящих серверов для всех запросов разом
  • Не передаёт ваши данные нам или третьим лицам

Подключения из локальной сети

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

Прокси без авторизации доступен любому устройству этой сети, поэтому включайте подключения только в доверенной сети и на время отладки. Устройства из сети не могут обратиться через прокси к адресам самого компьютера — localhost, 127.0.0.0/8 и адресам его сетевых интерфейсов, — поэтому службы, запущенные на компьютере для разработки, им недоступны.

Страница сертификата для телефона отдаёт только сам сертификат и его отпечаток для сверки. Закрытый ключ никогда не покидает компьютер.

Пространства из чужих репозиториев

Всё, что лежит в пространстве из репозитория, мог подготовить другой человек. Поэтому папка, которую на этом компьютере ещё не открывали, открывается как новая: мок-серверы и мониторы из неё сами не запускаются, пока вы не нажмёте «Доверять».

  • Файлы пространства, подменённые символическими ссылками, не читаются и не перезаписываются — приложение не выйдет за пределы папки
  • Файлы читаются с ограничением размера, поэтому подложенный огромный файл не исчерпает память
  • Тело мока приложение показывает, но никогда не открывает и не запускает
  • Заметка не загружает картинки с внешних адресов — иначе её открытие отправляло бы запрос туда, куда выбрал автор

Мок-серверы

Мок-сервер разрешает CORS только локальным источникам — localhost, *.local и адресам частных сетей, — чтобы с ним могло работать веб-приложение из разработки. Сайты из интернета разрешения не получают: иначе любая открытая в браузере страница прочитала бы ответы сервера, а в них часто лежат данные из перехваченного трафика.

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

Секреты в окружениях

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

Если пространство лежит в репозитории, заведите для токенов и паролей отдельное окружение и добавьте его файл в .gitignore проекта. Общие адреса и несекретные параметры можно хранить в окружениях, которые попадают в git.

Допустимое использование

Microkoi — инструмент отладки. Перехватывайте и анализируйте только трафик своих устройств и приложений либо трафик, на обработку которого у вас есть разрешение владельца. Если перехваченный трафик содержит персональные данные других людей, за законность их обработки отвечает пользователь.