Безопасность является приоритетом для системы управления складом и отслеживания оборудования. Этот документ описывает политику безопасности проекта и процедуры сообщения об уязвимостях.
В настоящее время поддерживаются следующие версии проекта:
| Версия | Поддержка безопасности |
|---|---|
| 1.0.x | ✅ Активно поддерживается |
| < 1.0 | ❌ Не поддерживается |
Если вы обнаружили уязвимость безопасности, пожалуйста, НЕ создавайте публичный issue. Вместо этого:
- Отправьте email на: oglenyaboss@icloud.com
- Включите следующую информацию:
- Описание уязвимости
- Шаги для воспроизведения
- Возможное влияние
- Предлагаемое решение (если есть)
- Мы ответим в течение 48 часов с подтверждением получения
- Обновления будут предоставляться каждые 72 часа до решения
-
Получение отчета (Day 0)
- Подтверждение получения в течение 48 часов
- Первичная оценка серьезности
-
Анализ и воспроизведение (Days 1-3)
- Воспроизведение уязвимости
- Оценка влияния и риска
- Присвоение CVSS рейтинга
-
Разработка исправления (Days 4-14)
- Создание патча
- Внутреннее тестирование
- Подготовка advisory
-
Развертывание и раскрытие (Days 15-30)
- Выпуск патча
- Публикация security advisory
- Координированное раскрытие
- Удаленное выполнение кода
- Полный компромисс системы
- Доступ к blockchain приватным ключам
- SQL injection в критичных компонентах
- Обход аутентификации
- Несанкционированный доступ к данным
- XSS атаки
- CSRF уязвимости
- Информационные утечки
- DoS атаки
- Минорные утечки информации
- Проблемы конфигурации
// JWT токены с коротким временем жизни
const (
AccessTokenExpiry = 15 * time.Minute
RefreshTokenExpiry = 7 * 24 * time.Hour
)
// Роли и права доступа
type Role string
const (
RoleAdmin Role = "admin"
RoleManager Role = "manager"
RoleOperator Role = "operator"
RoleViewer Role = "viewer"
)- Пароли: Bcrypt с cost 12
- JWT токены: RS256 алгоритм
- Данные в transit: TLS 1.2+
- Blockchain: Ethereum cryptography
// Валидация на уровне структур
type User struct {
Username string `validate:"required,alphanum,min=3,max=50"`
Email string `validate:"required,email"`
Password string `validate:"required,min=8,max=128"`
}
// Санитизация HTML
func sanitizeInput(input string) string {
p := bluemonday.UGCPolicy()
return p.Sanitize(input)
}// Frontend автоматически включает CSRF токены
const csrfToken = document
.querySelector('meta[name="csrf-token"]')
?.getAttribute("content");// Экранирование всех пользовательских данных
const safeHTML = DOMPurify.sanitize(userInput);// Использование подготовленных запросов
filter := bson.M{"username": username}
err := collection.FindOne(ctx, filter).Decode(&user)// Структурированное логирование
log.WithFields(log.Fields{
"user_id": userID,
"action": "login_attempt",
"ip_address": clientIP,
"success": false,
"timestamp": time.Now(),
}).Warn("Failed login attempt")# Использование non-root пользователя
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001
USER nextjs
# Минимальный базовый образ
FROM node:18-alpine AS runner# Критичные переменные должны быть установлены
JWT_SECRET=your-256-bit-secret
DATABASE_ENCRYPTION_KEY=your-encryption-key
CORS_ALLOWED_ORIGINS=https://yourdomain.com
# Безопасные значения по умолчанию
SESSION_TIMEOUT=900
MAX_LOGIN_ATTEMPTS=5
RATE_LIMIT_REQUESTS=100# Docker Compose сеть
networks:
warehouse-network:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/16// Детекция аномальной активности
func (s *SecurityService) DetectAnomalies(userID string, action string) {
// Проверка частоты запросов
if s.rateLimiter.IsExceeded(userID) {
s.logSuspiciousActivity(userID, "rate_limit_exceeded")
}
// Проверка необычного времени активности
if s.isUnusualTime(time.Now()) {
s.logSuspiciousActivity(userID, "unusual_time_activity")
}
}# Go security scanner
go install github.com/securecodewarrior/gosec/v2/cmd/gosec@latest
gosec ./...
# JavaScript/TypeScript security audit
npm audit
npm audit fix# Go модули
go list -m -u all
# Node.js пакеты
npm outdated
npm update# Сканирование Docker образов
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
aquasec/trivy image your-image:tag- Все пользовательские данные валидируются
- Используются параметризованные запросы
- Пароли хэшируются с солью
- Токены имеют ограниченное время жизни
- Логируются события безопасности
- Код проходит static analysis
- Зависимости регулярно обновляются
- TLS сертификаты настроены
- Firewall правила применены
- Секреты не хранятся в коде
- Backup и disaster recovery настроены
- Мониторинг безопасности активен
- Rate limiting настроен
- CORS политики применены
-
Немедленные действия (0-1 час)
- Изоляция пораженных систем
- Оценка масштаба инцидента
- Уведомление команды безопасности
-
Короткосрочные меры (1-24 часа)
- Применение временных исправлений
- Сбор доказательств
- Уведомление заинтересованных сторон
-
Долгосрочное восстановление (1-7 дней)
- Постоянные исправления
- Анализ первопричин
- Обновление процедур
- SAST: SonarQube, CodeQL, Semgrep
- DAST: OWASP ZAP, Burp Suite
- Container Security: Trivy, Clair, Snyk
- Dependency Check: NPM Audit, Go mod tidy
Мы приветствуем участие сообщества в улучшении безопасности проекта:
- Bug Bounty: Рассматриваем внедрение программы
- Security Reviews: Приглашаем экспертов для аудита
- Community: Обсуждения в security каналах
Помните: Безопасность - это непрерывный процесс, а не одноразовое действие. Регулярно обновляйте свои знания и следите за новыми угрозами.