// SECURITY AUDIT

Отчёт об аудите безопасности

Доверяй, но проверяй — каждое заключение аудита публикуется здесь.

Обзор аудита

Опубликовано
📅 Дата аудита: 2026-06-01📄 Объём: все 159 .dart-файлов в lib/ · 14 .html-плагинов в plugins/ · конфигурация android/🔬 Метод: перекрёстная проверка файлов + многоуровневый аудит снизу вверх
0
Критично
0
Высоко
0
Средне
0
Низко
0
Подтверждено безопасно

Общая оценка: состояние безопасности проекта хорошее. Ключевые механизмы реализованы корректно: шифрование чувствительных данных Hive, изоляция песочницы, принудительный HTTPS. Основные проблемы касаются управления ключами на сборочной машине Android, нескольких Hive-боксов вне области шифрования и ввода паролей в слое плагинов.

🔧
Прогресс исправлений после публикации: в последующих версиях уже исправлены многие пункты — ключи API по поставщикам в зашифрованных контейнерах (v1.7.0), фейковое шифрование менеджера паролей переписано на настоящий AES-256-GCM (v1.7.0), 2FA-коды стали постоянными (v1.7.0), строгая проверка SSL в сетевом инструментарии (v1.7.0), фильтрация чувствительных полей буфера обмена (v1.7.0), автоматическое перешифрование при смене мастер-пароля (v1.1.0). Последние исправления: см. журнал изменений.

Подтверждённые реальные проблемы

🔴 Критично

Критично
#1 Пароль ключа подписи Android хранится открытым текстом — парольная фраза ключа подписи лежит в конфигурации сборочной машины; компрометация машины равна компрометации ключа подписи.

🟠 Высоко

Высоко
#2 Бокс ai_plugin_projects хранит aiApiKey без шифрования — ключи ИИ уровня проекта сохраняются открытым текстом в Hive, вне области шифрования.
Высоко
#3 Захардкоженный тестовый лицензионный ключ в маркете плагинов — тестовые учётные данные не должны попадать в релизные сборки.
Высоко
#4 Разрешение REQUEST_INSTALL_PACKAGES — приложение запрашивает установку из неизвестных источников; сценарий использования следует минимизировать.

🟡 Средне

Средне
#5 Ключ API Baidu Translate передаётся через GET-параметр URL — ключ может попасть в журналы доступа / историю.
Средне
#6 Плагины вводят пароли шифрования через prompt() — ввод паролей в песочнице должен использовать защищённую клавиатуру хоста.
Средне
#7 Пароль авторезервирования WebDAV хранится в Hive — требуется подтверждение, что он в зашифрованном боксе.
Средне
#8 Разрешение RECORD_AUDIO — следует запрашивать по требованию только для записи, без постоянного предоставления.

🟢 Низко

Низко
#9 Бокс sticky_notes хранит заметки пользователя без шифрования
Низко
#10 Плагин бухгалтерии хранит финансовые данные открытым текстом
Низко
#11 Флаг requestLegacyExternalStorage — рекомендуется удалить с повышением targetSdk
Низко
#12 Плагин закладок допускает URL http:// — незашифрованные страницы должны показывать предупреждение по умолчанию
Низко
#13 Экспорт журналов ошибок может раскрыть внутренние пути — стек-трейсы содержат пути файлов и структуру кода

⚪ Предполагаемые проблемы (нужно ручное подтверждение)

Предполагается
S1 Широкое использование innerHTML в плагинах (13/14 плагинов) — большинство уже экранируют через escapeHtml(), а CSP песочницы ограничивает внешние скрипты, но пропущенное экранирование — потенциальный DOM-XSS.
Предполагается
S2 Вызовы console.log / console.error в плагинах — вывод идёт в logcat; содержимое — объекты ошибок без пользовательских данных, риск низкий.

Подтверждённые безопасные решения

Следующие механизмы прошли перекрёстную проверку файлов и подтверждены как безопасные и эффективные:

#МеханизмПуть проверкиСтатус
1Аппаратная защита ключей шифрования HiveFlutterSecureStorage → Android Keystore / iOS Keychain
27/7 чувствительных боксов зашифрованыперекрёстно проверено в main.dart; чувствительные боксы открываются с cipher
3Резервные копии принудительно шифруютсябез пароля → UnencryptedBackupException
4Алгоритм шифрования резервных копийPBKDF2 (300k раундов) + AES-256-GCM
5Ноль нагрузки логирования в релизевесь вывод логов внутри kDebugMode
6WebDAV: HTTPS принудительноHTTP-конфигурации отклоняются напрямую
7Отключение eval / Function в песочницеполное покрытие Object.defineProperty
8Внедрение CSP в песочницеmeta-тег + HTTP-заголовок, двойной путь
9Защита от path traversalпроверки безопасности при импорте плагинов и восстановлении копий
10Прочие подтверждённые пунктышифр копий v3, атомарный процесс восстановления, FLAG_SECURE на чувствительных страницах и др.
🔬
Полный отчёт (с указанием мест в коде и рекомендаций по исправлению по пунктам) будет опубликован вместе с открытым репозиторием. Это краткая версия. Безопасность — наш фундамент — любые находки приветствуются через обратную связь.
МАТРИЦА: ВКЛ — повторите ввод или ESC для выхода