Как это устроено
Модель безопасности
От чего защищает Nuvo, чему он доверяет и какие правила действуют в демоне и в окне.
От чего защищает Nuvo
- Другой пользователь на этом компьютере читает вашу медиатеку или кэш.
- Другой процесс обращается к демону.
- Веб-страница, вставленная ссылка или скачанная тема запускает код или получает данные в приложении.
- Украденный образ диска или резервная копия ваших данных.
От чего он не защищает
- Код, запущенный от вашего имени при открытом хранилище ключей. Он может запросить у хранилища мастер-ключ.
- Скомпрометированная система или root на компьютере.
Демон
- Он слушает unix-сокет, а не сетевой порт. У каталога права 0700, у сокета 0600.
- Каждому маршруту нужен bearer-токен, созданный при запуске. Сравнение выполняется за постоянное время.
- Данные медиатеки шифруются через SQLCipher. Кэшированное аудио шифруется по частям.
- Лог записывает маршруты, но не идентификаторы.
- Удалённые загрузки подчиняются правилу «запрещено всё, что не разрешено»:
https, хост из списка разрешённых, без учётных данных, без нестандартного порта и только публичные адреса. Перенаправления проверяются так же. - URL прокси принимают
http,https,socks5иsocks5hс явным портом. Учётные данные передаются дочерним процессам через переменные окружения, а не через аргументы. - Локальные файлы: ссылки внутри папки с музыкой не разворачиваются, а открываемый файл должен оставаться внутри своей папки.
- Адрес переводчика должен быть на loopback, его путь фиксирован, перенаправления не выполняются.
- Экспорт читает только явно перечисленные столбцы. В него никогда не попадают настройки, токены, данные восстановления и пути кэша.
- Отчёт для поддержки копирует версии, состояние демона и последнюю проверку сети. В нём нет медиатеки, путей и паролей.
Окно
- Политика безопасности содержимого разрешает скрипты только из самого приложения. Фреймы, объекты и формы отключены. Изображения, медиа и соединения ограничены хостами, которые нужны Nuvo: YouTube, SoundCloud, API поиска для вставленных ссылок и источники импорта.
- Окно никогда не получает токен демона. Оно вызывает URL
nuvo-core://, а основной процесс их пересылает. - Основной процесс проверяет входные данные каждого канала для файлов и экспорта. Пути берутся из системных диалогов, а не со страницы.
- Разрешения ограничены аудиоустройствами, выбором колонок, записью в буфер обмена и полноэкранным режимом, и только для собственной страницы приложения.
- Свой CSS и файлы тем проходят строгую проверку. Ничто в них не может загружать ресурсы или закрывать страницу так, чтобы блокировать клики. См. темы и свой CSS.
- Шрифты загружаются только через собственный обработчик основного процесса.
Приватность
- Нет аккаунта, нет сервера Nuvo, нет аналитики от Nuvo.
- Nuvo обращается к YouTube, SoundCloud и LRCLIB, чтобы работать, а также к публичным API сервисов, ссылки на которые вы вставляете. Рекомендации считаются локально.
- Проверка сети перечисляет, к каким именно хостам обращается.