Files
math2-platform/docs/SECURITY_ROTATION.md
Renato bc43c9e772
Some checks failed
Test Suite / test-backend (push) Has been cancelled
Test Suite / test-frontend (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / coverage-check (push) Has been cancelled
🎓 Initial commit: Math2 Platform - Plataforma de Álgebra Lineal PRO
 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 
2026-03-31 11:27:11 -03:00

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 .env y backend/.env
  • Acción requerida:
    1. Acceder a https://console.aliyun.com
    2. Navegar a DashScope Console
    3. Revocar la API key actual
    4. Generar nueva API key
    5. Actualizar en .env.local o Docker secrets

2. TELEGRAM_BOT_TOKEN

  • Estado: Expuesto en .env y backend/.env
  • Acción requerida:
    1. Contactar @BotFather en Telegram
    2. Usar comando /revoke para el token actual
    3. Usar comando /token para generar nuevo token
    4. Actualizar en .env.local o Docker secrets

3. TELEGRAM_ADMIN_CHAT_ID

  • Estado: Expuesto en .env y backend/.env
  • Acción requerida:
    1. Crear nuevo chat privado con el bot
    2. Obtener nuevo chat_id (usar https://t.me/userinfobot)
    3. 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)

  1. Iniciar sesión en https://console.aliyun.com
  2. Buscar "DashScope" en servicios
  3. Ir a "API Keys"
  4. Eliminar la key comprometida
  5. Crear nueva key
  6. Copiar el nuevo valor

TELEGRAM_BOT_TOKEN

  1. Abrir Telegram y buscar @BotFather
  2. Enviar: /revoke
  3. Seleccionar el bot comprometido
  4. Enviar: /token
  5. Seleccionar el mismo bot
  6. Copiar el nuevo token

TELEGRAM_ADMIN_CHAT_ID

  1. Crear nuevo grupo/chat privado con el bot
  2. Agregar bot al chat
  3. Visitar: https://t.me/userinfobot
  4. 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

  1. No usar credenciales antiguas: Las credenciales expuestas están comprometidas y no deben reutilizarse nunca.

  2. Monitoreo: Después de la rotación, monitorear logs por 24-48 horas para detectar accesos no autorizados.

  3. Revisión de accesos: Verificar en los dashboards de DashScope y Telegram si hubo accesos no autorizados durante el período de exposición.

  4. 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