Add "Security"

2026-04-12 20:26:06 +00:00
parent 858f7d62a9
commit 2c5430326d

41
Security.md Normal file

@@ -0,0 +1,41 @@
# Безопасность
## Аудит — апрель 2026
### Исправленные уязвимости
#### 1. Pug Template Injection (CRITICAL → FIXED)
Пользовательский текст `#{process.cwd()}` выполнялся на сервере при Pug-рендере.
**Фикс:** Экранирование `#{` и `!{` в пользовательском pug перед записью.
#### 2. XSS через iframe превью (HIGH → FIXED)
`<script>alert('XSS')</script>` в HTML письма выполнялся в iframe.
**Фикс:** `sandbox="allow-same-origin"` на iframe. Click detection без инъекции скриптов.
#### 3. FTP Path Traversal (HIGH → FIXED)
`folder: "../../"` позволял доступ к любой директории FTP-сервера.
**Фикс:** Валидация `folder` — запрет `..` и абсолютных путей.
#### 4. Незащищённые настройки (HIGH → FIXED)
Любой юзер мог менять FTP-креды, feedUrl, Yonote-токен.
**Фикс:** Проверка `role === 'admin'` на PUT settings и PUT config.
#### 5. SSRF (MEDIUM → FIXED)
`isPublicUrl()` пропускал IPv6, hex IP, `0.0.0.0`.
**Фикс:** Расширенная валидация URL.
#### 6. Render DoS (MEDIUM → FIXED)
Неограниченные параллельные рендеры.
**Фикс:** `MAX_CONCURRENT_RENDERS = 3`, `try/finally`.
#### 7. Info Disclosure (LOW → FIXED)
Stderr от рендера возвращался юзеру.
**Фикс:** Статическое сообщение об ошибке.
### Nginx
Блокировка сканеров: `.env`, `.git`, `.php`, `passwd`, `wp-admin` и т.п. → return 444.
### Рекомендации
- Регулярные бэкапы `data/`
- Обновление Node.js зависимостей
- Мониторинг uptime