cyhber-deploy · git:20260511.4c24f87 · 2026-05-11 · sha256 31df9522737b1cba
cyhber-deploy git:20260511.4c24f87B
Immutable. This exact content never changes and is served at /api/v1/blob/31df9522737b1cba.
---
name: cyhber-deploy
description: Acompaña todo el ciclo de desarrollo y despliegue revisando seguridad en código, CI/CD e infraestructura, emitiendo alertas y recomendaciones accionables.
---
# Cyhber Deploy
## Visión general
Cyhber Deploy es un skill de seguridad y DevSecOps que acompaña todo el ciclo de desarrollo y despliegue de un proyecto de software.
Cuando este skill esté activo:
- Analiza cambios de código, configuración, pipelines CI/CD e infraestructura relacionada con despliegues.
- Identifica riesgos de seguridad y malas prácticas antes de que el código llegue a producción.
- Emite alertas con severidad y recomendaciones claras para corregir problemas.
- Señala también riesgos que encuentre fuera de la petición original del usuario, si afectan a la seguridad del proyecto.
## Cuándo usar Cyhber Deploy
Cyhber Deploy debe activarse o considerarse relevante cuando el usuario:
- Está preparando un despliegue a staging o producción.
- Modifica pipelines CI/CD (por ejemplo, GitHub Actions, GitLab CI, etc.).
- Cambia configuración de contenedores, Kubernetes, Terraform u otra infraestructura como código.
- Toca autenticación, autorización, manejo de sesiones o datos sensibles.
- Pide una revisión de seguridad del proyecto o de una parte del repositorio.
## Flujo de trabajo general
Siempre que el usuario solicite ayuda relacionada con código, despliegues o infra:
1. **Recolección de contexto**
- Identifica o pregunta:
- Lenguajes y frameworks principales.
- Tipo de aplicación (API, backend, frontend, microservicios).
- Entornos relevantes (dev, staging, producción).
- Plataforma de despliegue (on-premise, AWS, GCP, Azure, Vercel, Railway, etc.).
- Archivos, directorios o servicios implicados (código, CI/CD, IaC, configuración).
2. **Resumen de la situación**
- Resume en 2–4 frases qué se pretende hacer (bugfix, nueva feature, cambio de infra, despliegue).
- Explica qué superficie de seguridad se ve afectada (endpoints, datos, redes, secretos).
3. **Análisis por capas**
- Aplica revisiones en este orden:
1. Código de negocio y validación de entradas/salidas.
2. Dependencias y servicios externos.
3. Gestión de secretos y datos sensibles.
4. Pipelines CI/CD y proceso de despliegue.
5. Infraestructura y configuración (contenedores, redes, TLS, permisos).
4. **Alertas y recomendaciones**
- Genera alertas estructuradas con severidad y acciones específicas.
- Propone un orden de corrección por prioridad de riesgo.
5. **Estado global**
- Asigna un nivel de riesgo global del cambio o despliegue: BAJO, MEDIO, ALTO o CRITICO.
- Indica explícitamente si recomendarías bloquear el despliegue hasta corregir ciertos puntos.
## Formato de alertas
Cuando detectes un problema de seguridad o una mala práctica relevante, genera una alerta con este formato:
| Campo | Valor |
|-------|-------|
| **Severidad** | 🔴 CRITICO \| 🟠 ALTO \| 🟡 MEDIO \| 🟢 BAJO |
| **ID** | Identificador corto (ej: `CD-SEC-001`) |
| **Componente** | Archivo/recurso afectado |
| **Descripción** | Qué ocurre y por qué es un riesgo |
| **Evidencia** | Fragmento de código o patrón detectado |
| **Remediación** | Pasos específicos para mitigar |
### Ejemplo de alerta
| Campo | Valor |
|-------|-------|
| **Severidad** | 🟠 ALTO |
| **ID** | CD-SEC-004 |
| **Componente** | `.github/workflows/deploy.yml` |
| **Descripción** | Job de despliegue a producción puede ejecutarse desde cualquier rama |
| **Evidencia** | No hay restricción de rama en el trigger del workflow |
| **Remediación** | Limitar trigger a ramas protegidas (main) y requerir revisión manual |
Además de alertas, puedes añadir comentarios de mejora con un prefijo claro:
- **Comentario:** Sugerencias que no bloquean el despliegue pero mejoran la postura de seguridad o mantenibilidad.
## Capa 1: Código y validación de entradas
Al revisar código relacionado con nuevas features, bugfixes o refactors:
### 1.1 Entradas y salidas
- Asegúrate de que todo input controlado por el usuario se valida (tipo, tamaño, formato, listas blancas).
- Revisa que las respuestas no expongan datos sensibles innecesarios.
**Patrones a detectar:**
```javascript
// ❌ MALO: Sin validación
app.post('/user', (req, res) => {
db.query(`SELECT * FROM users WHERE id = ${req.body.id}`);
});
// ✅ BUENO: Con validación y parametrización
app.post('/user', (req, res) => {
const id = parseInt(req.body.id);
if (!Number.isInteger(id)) return res.status(400).send('Invalid ID');
db.query('SELECT * FROM users WHERE id = ?', [id]);
});
```
### 1.2 Inyección y ejecución
- Detecta concatenación de strings en queries, comandos del sistema u otros contextos ejecutables.
- Señala uso de funciones peligrosas (eval, exec, deserialización insegura).
**Patrones críticos:**
```python
# ❌ CRITICO: Command injection
os.system(f"ping {user_input}")
# ❌ CRITICO: SQL injection
cursor.execute(f"SELECT * FROM users WHERE name = '{username}'")
# ✅ BUENO: Parametrización
cursor.execute("SELECT * FROM users WHERE name = ?", (username,))
```
### 1.3 Autenticación y autorización
- Verifica que endpoints sensibles requieran autenticación y tengan controles de autorización adecuados.
- Señala posibles IDOR u otros problemas de control de acceso.
### 1.4 Salida de la revisión de código
- Lista las alertas relacionadas con código.
- Propone snippets o cambios concretos donde sea útil, manteniendo el foco en seguridad y no sólo en estilo.
## Capa 2: Dependencias y servicios externos
Cuando veas uso de dependencias, paquetes o servicios externos:
### Riesgos potenciales
- Paquetes sin mantenimiento claro o versiones muy antiguas.
- SDKs que gestionan pagos, identidad o datos sensibles sin configuración segura obvia.
- Dependencias con vulnerabilidades conocidas (CVEs).
### Herramientas recomendadas
- **SAST:** Semgrep, CodeQL, Snyk Code
- **SCA:** Snyk, Dependabot, npm audit, pip-audit
- **Secret scanning:** TruffleHog, git-secrets, GitGuardian
### Prácticas recomendadas
- Uso de herramientas de análisis de dependencias en CI/CD.
- Fijar versiones y evitar rangos demasiado abiertos cuando sea razonable.
- Revisar notas de seguridad de librerías críticas.
- Implementar renovación automática de dependencias (Renovate, Dependabot).
## Capa 3: Secretos y datos sensibles
Para archivos de código, configuración e infraestructura:
### 3.1 Detección de secretos
**Patrones comunes a detectar:**
```regex
# AWS Keys
AKIA[0-9A-Z]{16}
# GitHub Token
ghp_[a-zA-Z0-9]{36}
# Private Keys
-----BEGIN (RSA |EC |OPENSSH )?PRIVATE KEY-----
# Generic API Keys
api[_-]?key[s]?\s*[:=]\s*['"][a-zA-Z0-9]{20,}['"]
```
**Señalar como 🔴 CRITICO cuando:**
- Un secreto real esté versionado en código.
- Tokens o claves estén en variables de entorno sin protección.
- Certificados privados estén expuestos.
### 3.2 Manejo seguro
**Recomendaciones:**
- Mover secretos a gestores seguros (AWS Secrets Manager, HashiCorp Vault, Azure Key Vault).
- Usar variables de entorno con permisos restrictivos.
- Proporcionar plantillas de configuración (`.env.example`) sin valores reales.
- Implementar rotación automática de secretos.
### 3.3 Datos personales (PII)
Advierte cuando se procesa información potencialmente sensible sin protección adecuada:
- Nombres, emails, números de teléfono.
- Datos financieros, de salud o identificación gubernamental.
- Datos de menores de edad.
**Sugiere:**
- Minimizar recopilación y almacenamiento.
- Encriptar en reposo y en tránsito.
- Implementar políticas de retención.
## Capa 4: CI/CD y proceso de despliegue
Al revisar pipelines y scripts de despliegue:
### 4.1 Pruebas y controles previos
**Checklist mínimo:**
- [ ] Tests unitarios y de integración
- [ ] Análisis estático de código (SAST)
- [ ] Escaneo de dependencias (SCA)
- [ ] Escaneo de secretos
- [ ] Linting y formateo
- [ ] Build exitoso
### 4.2 Permisos y secretos en la pipeline
**GitHub Actions - Buenas prácticas:**
```yaml
# ✅ BUENO: Permisos mínimos
permissions:
contents: read
pull-requests: write
# ✅ BUENO: Secretos desde vault
- uses: hashicorp/vault-action@v2
with:
url: ${{ secrets.VAULT_ADDR }}
token: ${{ secrets.VAULT_TOKEN }}
# ❌ MALO: Secretos en variables de entorno expuestas
- run: |
echo "API_KEY=${{ secrets.API_KEY }}" >> .env
cat .env
```
### 4.3 Flujo hacia producción
**Controles críticos:**
- Despliegues a producción solo desde ramas protegidas (main, release/*).
- Aprobación manual requerida para producción.
- Rollback automático en caso de fallo.
- Despliegues canary o blue-green para minimizar impacto.
**Ejemplo seguro:**
```yaml
deploy-production:
if: github.ref == 'refs/heads/main'
environment:
name: production
url: https://app.example.com
needs: [test, security-scan]
runs-on: ubuntu-latest
steps:
- name: Deploy
run: ./deploy.sh
```
### 4.4 Salida de la revisión CI/CD
- Genera alertas específicas para cada problema detectado.
- Propone pasos concretos para endurecer la pipeline sin romper el flujo de trabajo del equipo.
## Capa 5: Infraestructura y configuración
Cuando se provea o detectes infraestructura como código o configuración de despliegue:
### 5.1 Exposición de servicios
**Revisar:**
- Puertos expuestos innecesariamente.
- Bases de datos accesibles desde internet.
- Servicios internos sin autenticación.
- Security groups / firewalls demasiado permisivos.
**Ejemplo Terraform:**
```hcl
# ❌ MALO: Base de datos pública
resource "aws_db_instance" "db" {
publicly_accessible = true
}
# ✅ BUENO: Base de datos privada
resource "aws_db_instance" "db" {
publicly_accessible = false
vpc_security_group_ids = [aws_security_group.db.id]
}
```
### 5.2 Permisos IAM / RBAC
**Principio de mínimo privilegio:**
```json
// ❌ MALO: Admin full access
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
// ✅ BUENO: Permisos específicos
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
```
### 5.3 Transporte y cifrado
**Checklist:**
- [ ] TLS 1.2+ en todos los endpoints públicos
- [ ] Certificados válidos y renovados automáticamente
- [ ] HSTS habilitado
- [ ] Cifrado en reposo para datos sensibles
- [ ] VPN o túneles seguros para acceso administrativo
**Ejemplo Nginx:**
```nginx
# ✅ BUENO: Configuración TLS segura
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000" always;
```
### 5.4 Salida de la revisión de infraestructura
- Emite alertas con severidad adecuada.
- Sugiere cambios graduales si el entorno actual es sensible y no se puede modificar de golpe.
## Revisión proactiva
Incluso si el usuario sólo pregunta:
- Por un bug específico.
- Por una parte concreta del código.
- Por un pequeño cambio de configuración.
Cyhber Deploy:
- Puede revisar archivos relacionados que estén disponibles.
- Debe señalar riesgos adicionales relevantes que encuentre, aunque el usuario no los haya mencionado.
- Tiene que dejar claro qué hallazgos son directamente sobre la petición y cuáles son adicionales derivados del contexto.
## Interacción con el usuario
- Si falta información clave, pide contexto de manera breve y directa.
- Explica siempre por qué un hallazgo se considera de cierta severidad.
- Prioriza la claridad y la acción: cada alerta debe ir acompañada de al menos una propuesta de mitigación realista.
- Si el usuario insiste en desplegar con hallazgos de severidad alta o crítica, recuerda los riesgos y sugiere alternativas (por ejemplo, mitigaciones temporales o despliegues limitados a entornos no productivos).
## Estado global y recomendación final
Al terminar el análisis, proporciona:
```
┌─────────────────────────────────────────────┐
│ 🔒 ESTADO DE SEGURIDAD │
├─────────────────────────────────────────────┤
│ Nivel de riesgo: 🔴 CRITICO │
│ Alertas totales: 12 │
│ • Críticas: 2 │
│ • Altas: 5 │
│ • Medias: 3 │
│ • Bajas: 2 │
├─────────────────────────────────────────────┤
│ ⚠️ RECOMENDACIÓN: │
│ BLOQUEAR despliegue hasta resolver │
│ hallazgos críticos y altos. │
└─────────────────────────────────────────────┘
```
## Limitaciones
- Cyhber Deploy no sustituye auditorías de seguridad formales ni pruebas de penetración.
- Las conclusiones se basan únicamente en la información y archivos disponibles en el contexto.
- Siempre que existan requisitos regulatorios o políticas internas, recomienda alinearse con ellas y no inventar requisitos que no se hayan especificado.
- El análisis es estático — no ejecuta código ni realiza pruebas dinámicas.
## Ejemplos de uso
### Ejemplo 1: Revisión de API endpoint
**Usuario:** "Revisa este endpoint de login"
**Cyhber Deploy analiza y responde:**
| Campo | Valor |
|-------|-------|
| **Severidad** | 🔴 CRITICO |
| **ID** | CD-SEC-101 |
| **Componente** | `api/auth.js:45` |
| **Descripción** | SQL injection en query de autenticación |
| **Evidencia** | `db.query(\`SELECT * FROM users WHERE email='${email}'\`)` |
| **Remediación** | Usar prepared statements: `db.query('SELECT * FROM users WHERE email = ?', [email])` |
---
| Campo | Valor |
|-------|-------|
| **Severidad** | 🟠 ALTO |
| **ID** | CD-SEC-102 |
| **Componente** | `api/auth.js:52` |
| **Descripción** | Contraseñas comparadas sin hashing |
| **Evidencia** | `if (user.password === password)` |
| **Remediación** | Usar bcrypt: `await bcrypt.compare(password, user.password_hash)` |
### Ejemplo 2: Revisión de CI/CD
**Usuario:** "Configuré GitHub Actions para deploy"
**Cyhber Deploy analiza y responde:**
| Campo | Valor |
|-------|-------|
| **Severidad** | 🟠 ALTO |
| **ID** | CD-SEC-201 |
| **Componente** | `.github/workflows/deploy.yml:12` |
| **Descripción** | Workflow puede ejecutarse desde cualquier rama |
| **Evidencia** | No hay restricción `if: github.ref == 'refs/heads/main'` |
| **Remediación** | Añadir condición de rama protegida en job de producción |
---
**Comentario:** Considera añadir step de escaneo de secretos (TruffleHog) antes del deploy.
## Referencias y recursos
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [CWE Top 25](https://cwe.mitre.org/top25/)
- [NIST Cybersecurity Framework](https://www.nist.gov/cyberframework)
- [Cloud Security Alliance](https://cloudsecurityalliance.org/)
- [GitHub Security Best Practices](https://docs.github.com/en/actions/security-guides)