# Security triage Дата последнего triage: 2026-06-06 Этот файл фиксирует текущий статус `npm audit`, принятые решения по dependency-upgrade и минимальные правила перед релизом. Он не заменяет регулярное обновление зависимостей: цель в том, чтобы не терять контекст между релизами и отличать runtime-риск от build-chain риска. ## Текущий статус `npm run verify` выполняет: - typecheck; - tests; - lint; - build; - audit summary. Наблюдаемый audit snapshot после upgrade: - 0 vulnerabilities; - `npm run verify` проходит полностью; - `npm run dist:dir` собирает unpacked Windows build. ## Выполненные обновления - `electron` обновлен до `42.3.3`; - `electron-builder` обновлен до `26.15.0`; - `electron-vite` обновлен до `5.0.0`; - `vite` обновлен до `7.3.5`; - `@vitejs/plugin-react` обновлен до `5.2.0`; - `electron-updater` обновлен до `6.8.9`; - `esbuild` обновлен до `0.28.0`. `vite` оставлен на major 7, а не поднят до 8, потому что актуальный `electron-vite@5.0.0` объявляет peer range `^5.0.0 || ^6.0.0 || ^7.0.0`. Переход на Vite 8 стоит делать отдельным шагом после совместимого релиза `electron-vite`. ## Runtime baseline Electron является runtime-платформой приложения, поэтому его audit-риск был самым важным. После обновления runtime-риск из audit закрыт, но перед релизом все равно нужен ручной smoke test Electron-поведения. Текущие mitigations: - `sandbox: true`; - `contextIsolation: true`; - `nodeIntegration: false`; - строгий preload API через `contextBridge`; - IPC runtime validation; - CSP в renderer `index.html`; - allowlist для внешних URL; - deny-by-default permission handlers; - запрет `webview` attach; - renderer error/unhandled rejection reporting в main logs. ## Build-chain baseline `electron-builder`, `electron-vite`, `vite` и `esbuild` обновлены отдельным шагом от runtime upgrade. `npm run dist:dir` подтверждает, что packaged build создается после обновления build-chain. Перед публикацией installer все равно нужно проверить: - NSIS installer build через `npm run dist`; - запуск установленного приложения; - сохранение данных в `%APPDATA%\Exercise Reminder\`; - auto-update metadata и `update-channel`; - импорт/экспорт данных; - tray behavior; - main window и reminder window; - Dota 2 GSI install/uninstall и callback listener. ## Release rule Перед релизом: - `npm run verify`; - `npm run dist`; - smoke test installed app; - проверка `update-channel`; - повторный `npm audit`. Если новый audit снова сообщает high runtime issue, релиз нужно считать blocked, пока риск не разобран отдельно.