89 lines
3.4 KiB
Markdown
89 lines
3.4 KiB
Markdown
# 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, пока риск не разобран отдельно.
|