# 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 ```bash # 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) ```bash # 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) ```bash # 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 ```bash # 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/getMe # Verificar AI API curl -X POST \ https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions \ -H "Authorization: Bearer " \ -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: ```bash # 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 - [DashScope Console](https://console.aliyun.com) - [Telegram BotFather](https://t.me/BotFather) - [Obtener Chat ID](https://t.me/userinfobot) - [Documentación de Secrets](./SECRETS.md) --- **Documento creado**: 2026-03-30 **Responsable**: Equipo de Seguridad **Próxima revisión**: Después de completar rotación