Skip to content

Latest commit

 

History

History
56 lines (41 loc) · 4.18 KB

File metadata and controls

56 lines (41 loc) · 4.18 KB

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

Как сообщить об уязвимости

Через Security Advisories на GitHub — это приватный канал, issue заводить не нужно. Ответ придёт, когда придёт: проект личный, дежурства по нему нет.

Поверхность атаки

Её практически нет, и это осознанно.

Cyclop не открывает портов и не слушает сеть. Ни обновлений, ни телеметрии, ни аналитики — исходящих соединений нет ни одного, с единственным исключением: запасной путь управления плеером скачивает обложку трека по адресу, который отдаёт Spotify, и только по https. Основной путь не ходит и туда: обложка приходит от самой macOS вместе с остальными данными о треке. Всё прочее происходит на одной машине между процессами, которые и так принадлежат пользователю.

Снимок с айфона попадает на полку через универсальный буфер обмена, то есть средствами самой macOS: передачу выполняет Continuity, она зашифрована и подтверждена Apple ID, а Cyclop лишь читает то, что оказалось в буфере. Своего канала связи с телефоном у него нет.

Разрешения

Одно, и только по нажатию кнопки: доступ к Календарю на вкладке «Календарь». Ни автоматизации, ни универсального доступа, ни записи экрана в обычном режиме работы не требуется. Не открываешь календарь — приложение живёт вообще без разрешений.

Автоматизация и универсальный доступ запрашиваются только запасным путём для управления плеером, если основной перестанет работать.

Что Cyclop читает и где это лежит

История буфера обмена живёт только в памяти процесса и не пишется на диск. Записи с типом org.nspasteboard.ConcealedType, которым менеджеры паролей помечают свои копирования, в историю не попадают вовсе.

Снимки экрана из буфера сохраняются файлами в ~/Pictures/Cyclop и не удаляются автоматически никогда. Сохраняется всякий скопированный в буфер снимок, а не только тот, что понадобился, — включая случайно снятое окно банка или почты. Папка целиком принадлежит пользователю; чистит её только он. Отключается пунктом меню-бара.

Полка хранит в настройках приложения пути к файлам, а не сами файлы.

Заготовки лежат в ~/Library/Application Support/Cyclop/snippets.json обычным текстом. Файл читается при каждом открытии вкладки и переписывается, когда заготовку добавляют или удаляют из панели. Для адреса и телефона этого достаточно; для того, что не должно лежать читаемым, есть менеджер паролей.

Перевод выполняется Translation.framework полностью офлайн: текст не покидает машину.