✨ Características: - 45 ejercicios universitarios (Basic → Advanced) - Renderizado LaTeX profesional - IA generativa (Z.ai/DashScope) - Docker 9 servicios - Tests 123/123 pasando - Seguridad enterprise (JWT, XSS, Rate limiting) 🐳 Infraestructura: - Next.js 14 + Node.js 20 - PostgreSQL 15 + Redis 7 - Docker Compose completo - Nginx + SSL ready 📚 Documentación: - 5 informes técnicos completos - README profesional - Scripts de deployment automatizados Estado: Producción lista ✅
5.2 KiB
Rotación de Credenciales de Seguridad
⚠️ Incidente de Seguridad - Credenciales Expuestas
Fecha: 2026-03-30
Estado: En progreso - Requiere acción inmediata
Credenciales Comprometidas
Las siguientes credenciales fueron expuestas en el repositorio git y DEBEN ser rotadas inmediatamente:
1. AI_API_KEY (DashScope - Aliyun)
- Estado: Expuesto en
.envybackend/.env - Acción requerida:
- Acceder a https://console.aliyun.com
- Navegar a DashScope Console
- Revocar la API key actual
- Generar nueva API key
- Actualizar en
.env.localo Docker secrets
2. TELEGRAM_BOT_TOKEN
- Estado: Expuesto en
.envybackend/.env - Acción requerida:
- Contactar @BotFather en Telegram
- Usar comando
/revokepara el token actual - Usar comando
/tokenpara generar nuevo token - Actualizar en
.env.localo Docker secrets
3. TELEGRAM_ADMIN_CHAT_ID
- Estado: Expuesto en
.envybackend/.env - Acción requerida:
- Crear nuevo chat privado con el bot
- Obtener nuevo chat_id (usar https://t.me/userinfobot)
- Actualizar en configuración
Pasos de Rotación
Paso 1: Preparación
# 1. Backup de configuración actual
cp .env .env.backup.$(date +%Y%m%d)
cp backend/.env backend/.env.backup.$(date +%Y%m%d)
# 2. Verificar servicios en ejecución
docker-compose ps
Paso 2: Rotación de Credenciales
AI_API_KEY (DashScope)
- Iniciar sesión en https://console.aliyun.com
- Buscar "DashScope" en servicios
- Ir a "API Keys"
- Eliminar la key comprometida
- Crear nueva key
- Copiar el nuevo valor
TELEGRAM_BOT_TOKEN
- Abrir Telegram y buscar @BotFather
- Enviar:
/revoke - Seleccionar el bot comprometido
- Enviar:
/token - Seleccionar el mismo bot
- Copiar el nuevo token
TELEGRAM_ADMIN_CHAT_ID
- Crear nuevo grupo/chat privado con el bot
- Agregar bot al chat
- Visitar: https://t.me/userinfobot
- Copiar el chat_id mostrado
Paso 3: Actualización de Secrets
Opción A: Docker Secrets (Producción)
# Actualizar archivos de secrets
echo "nueva-ai-api-key" > secrets/ai_api_key.txt
echo "nuevo-telegram-token" > secrets/telegram_token.txt
echo "nuevo-chat-id" > secrets/telegram_chat_id.txt
# Redeploy
docker-compose -f docker-compose.secrets.yml down
docker-compose -f docker-compose.secrets.yml up -d
Opción B: Variables de Entorno (Desarrollo)
# Crear .env.local (no trackeado)
cp .env.example .env.local
# Editar con nuevos valores
nano .env.local
# Reiniciar servicios
docker-compose restart
Paso 4: Verificación
# Verificar que servicios están healthy
docker-compose ps
# Verificar logs
docker-compose logs -f backend
# Verificar conectividad con Telegram
curl -X POST \
https://api.telegram.org/bot<NEW_TOKEN>/getMe
# Verificar AI API
curl -X POST \
https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions \
-H "Authorization: Bearer <NEW_AI_KEY>" \
-H "Content-Type: application/json" \
-d '{"model": "MiniMax-M2.5", "messages": [{"role": "user", "content": "test"}]}'
Verificación Post-Rotación
Después de completar la rotación, ejecutar:
# Buscar cualquier rastro de credenciales antiguas
grep -r "[REDACTED_AI_API_KEY]" . \
--include="*.env*" --include="*.md" \
--include="*.ts" --include="*.js" \
2>/dev/null || echo "✅ Limpio - AI_API_KEY"
grep -r "[REDACTED_TELEGRAM_TOKEN]" . \
--include="*.env*" --include="*.md" \
--include="*.ts" --include="*.js" \
2>/dev/null || echo "✅ Limpio - TELEGRAM_BOT_TOKEN"
grep -r "[REDACTED_CHAT_ID]" . \
--include="*.env*" --include="*.md" \
--include="*.ts" --include="*.js" \
2>/dev/null || echo "✅ Limpio - TELEGRAM_CHAT_ID"
Checklist de Completitud
- AI_API_KEY rotada en DashScope Console
- TELEGRAM_BOT_TOKEN revocado y regenerado vía @BotFather
- TELEGRAM_ADMIN_CHAT_ID cambiado a nuevo chat seguro
- Nuevos valores actualizados en producción (Docker secrets)
- Nuevos valores actualizados en desarrollo (.env.local)
- Servicios reiniciados y funcionando correctamente
- Notificaciones de Telegram probadas
- Generación de AI probada
- Logs verificados sin errores de autenticación
- Backup de credenciales antiguas eliminado de forma segura
Notas Importantes
-
No usar credenciales antiguas: Las credenciales expuestas están comprometidas y no deben reutilizarse nunca.
-
Monitoreo: Después de la rotación, monitorear logs por 24-48 horas para detectar accesos no autorizados.
-
Revisión de accesos: Verificar en los dashboards de DashScope y Telegram si hubo accesos no autorizados durante el período de exposición.
-
Comunicación: Notificar al equipo de desarrollo sobre la rotación y proporcionar nuevos valores seguros a través de canales seguros (NO por email o Slack).
Recursos
Documento creado: 2026-03-30
Responsable: Equipo de Seguridad
Próxima revisión: Después de completar rotación