Delete page "Security"
41
Security.md
41
Security.md
@@ -1,41 +0,0 @@
|
|||||||
# Безопасность
|
|
||||||
|
|
||||||
## Аудит — апрель 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
|
|
||||||
Reference in New Issue
Block a user