Skip to content

Security: a58becde/cyclop

Security

SECURITY.md

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

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

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

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

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

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

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

Разрешения

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

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

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

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

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

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

Заготовки читаются из ~/Library/Application Support/Cyclop/snippets.json. Файл только читается, никогда не записывается.

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

There aren't any published security advisories