Skip to content

🟠 BAJO: Dependabot deshabilitado - Sin monitoreo de vulnerabilidades #56

@JesusMaster

Description

@JesusMaster

Descripción del Problema

Severidad: BAJA

Dependabot está deshabilitado en la configuración del repositorio, lo que significa que no se reciben alertas automáticas ni actualizaciones de dependencias con vulnerabilidades conocidas. Esto puede llevar a usar dependencias obsoletas con problemas de seguridad.

Estado Actual

"security_and_analysis": {
    "secret_scanning": {
        "status": "enabled"
    },
    "secret_scanning_push_protection": {
        "status": "enabled"
    },
    "dependabot_security_updates": {
        "status": "disabled"  // ❌ Deshabilitado
    }
}

Vulnerabilidades Identificadas

1. Sin actualizaciones automáticas de seguridad

Las dependencias con vulnerabilidades conocidas no se actualizan automáticamente.

2. Sin alertas de dependencias vulnerables

No se reciben notificaciones sobre nuevas vulnerabilidades en dependencias.

3. Dependencias potencialmente obsoletas

Sin monitoreo automático, las dependencias pueden quedar desactualizadas.

Impacto de Seguridad

  • Vulnerabilidades sin parcear: CVEs conocidos en dependencias no se corrigen
  • Tiempo de respuesta lento: Detección manual de vulnerabilidades
  • Riesgo acumulado: Múltiples vulnerabilidades pueden acumularse
  • Compliance: Incumplimiento de políticas de seguridad

Análisis de Dependencias Actuales

Dependencias de Producción

"dependencies": {
    "@modelcontextprotocol/sdk": "^1.17.4",
    "axios": "^1.9.0",
    "cors": "^2.8.5", 
    "dotenv": "^16.5.0",
    "express": "^5.1.0",  // ⚠️ Express 5 aún en beta
    "http-terminator": "^3.2.0",
    "raw-body": "^3.0.0",
    "zod": "^3.24.4"
}

Dependencias de Desarrollo

"devDependencies": {
    "@types/cors": "^2.8.19",
    "@types/express": "^5.0.1",
    "@types/jest": "^30.0.0",
    "@types/node": "^22.14.1",
    "eventsource": "^4.0.0",
    "jest": "^30.0.5",
    "node-fetch": "^3.3.2",
    "ts-jest": "^29.4.1",
    "typescript": "^5.9.2"
}

Solución Recomendada

1. Habilitar Dependabot

# .github/dependabot.yml
version: 2
updates:
  # Enable version updates for npm
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
      day: "monday"
      time: "09:00"
    open-pull-requests-limit: 10
    reviewers:
      - "JesusMaster"
    assignees:
      - "JesusMaster"
    labels:
      - "dependencies"
      - "security"
    commit-message:
      prefix: "chore"
      prefix-development: "chore"
      include: "scope"

  # Security updates (daily check)
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "daily"
    open-pull-requests-limit: 5
    labels:
      - "security"
      - "critical"
    commit-message:
      prefix: "security"
      include: "scope"

2. Configuración de GitHub Security

Habilitar en Settings > Security & analysis:

  • ✅ Dependency graph
  • ✅ Dependabot alerts
  • ✅ Dependabot security updates
  • ✅ Dependabot version updates

3. Script de auditoría manual

#!/bin/bash
# scripts/security-audit.sh

echo "🔍 Running security audit..."

echo "📊 Checking for vulnerabilities..."
npm audit

echo "📈 Checking for outdated packages..."
npm outdated

echo "🔍 Checking with yarn audit (if available)..."
if command -v yarn &> /dev/null; then
    yarn audit
fi

echo "✅ Security audit complete"

4. GitHub Actions para monitoreo

# .github/workflows/security-audit.yml
name: Security Audit

on:
  schedule:
    - cron: '0 9 * * 1'  # Every Monday at 9 AM
  workflow_dispatch:
  pull_request:
    paths:
      - 'package.json'
      - 'package-lock.json'
      - 'yarn.lock'

jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '22'
          cache: 'npm'
      
      - name: Install dependencies
        run: npm ci
      
      - name: Run security audit
        run: |
          npm audit --audit-level=moderate
          
      - name: Check for outdated packages
        run: npm outdated
        continue-on-error: true
        
      - name: Create issue on vulnerabilities
        if: failure()
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.create({
              owner: context.repo.owner,
              repo: context.repo.repo,
              title: '🚨 Security vulnerabilities detected',
              body: 'Automated security audit detected vulnerabilities. Please check the Action logs.',
              labels: ['security', 'critical', 'automated']
            });

5. Configuración de renovate (alternativa)

// renovate.json
{
  "extends": [
    "config:base",
    "security:openssf-scorecard"
  ],
  "schedule": ["before 9am on monday"],
  "labels": ["dependencies"],
  "assignees": ["JesusMaster"],
  "packageRules": [
    {
      "matchUpdateTypes": ["patch", "pin", "digest"],
      "automerge": true
    },
    {
      "matchPackagePatterns": ["*"],
      "matchUpdateTypes": ["major"],
      "labels": ["major-update"],
      "reviewersFromCodeOwners": true
    },
    {
      "matchDepTypes": ["devDependencies"],
      "labels": ["dev-dependencies"],
      "schedule": ["before 9am on saturday"]
    }
  ],
  "vulnerabilityAlerts": {
    "enabled": true,
    "assignees": ["JesusMaster"],
    "labels": ["security", "vulnerability"]
  }
}

Configuración de npm audit

// .npmrc
audit-level=moderate
fund=false
save-exact=true

Scripts package.json adicionales

{
  "scripts": {
    "audit": "npm audit",
    "audit:fix": "npm audit fix",
    "outdated": "npm outdated",
    "security:check": "npm audit && npm outdated",
    "security:fix": "npm audit fix --force"
  }
}

Tareas

  • Habilitar Dependabot en GitHub repository settings
  • Crear archivo .github/dependabot.yml con configuración
  • Configurar GitHub Actions para auditoría automática
  • Crear script de auditoría manual
  • Agregar scripts npm para auditoría
  • Configurar notificaciones de seguridad
  • Revisar dependencias actuales para vulnerabilidades
  • Establecer política de actualizaciones de dependencias
  • Documentar proceso de manejo de vulnerabilidades
  • Configurar integración con herramientas de CI/CD

Verificación Inmediata

# Verificar vulnerabilidades actuales
npm audit

# Verificar dependencias obsoletas
npm outdated

# Instalar herramientas adicionales
npm install -g npm-check-updates
ncu -u  # Verificar actualizaciones disponibles

Monitoreo Continuo

1. Alertas de email

Configurar en GitHub Settings > Notifications > Security alerts

2. Slack/Discord notifications

Usar GitHub Apps para notificaciones en chat

3. Dashboard de seguridad

Usar GitHub Security tab para monitoreo centralizado

Referencias

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions