Seguridad en Proyectos Open Source
Seguridad en Proyectos Open Source
MFA para colaboradores privilegiados
Un actor malicioso que comprometa a un colaborador privilegiado puede:
- Modificar codigo para actividades no autorizadas (mineria de criptomonedas)
- Distribuir malware a usuarios
- Acceder a repositorios privados para robar credenciales
MFA es obligatorio para cualquier persona con acceso de escritura al repositorio.
Seguridad del codigo
Usa herramientas SAST (Static Application Security Testing) para detectar vulnerabilidades temprano.
Criterios de seleccion
| Criterio | Que buscar |
|---|---|
| Licencia | Opciones gratuitas para open source (GitHub CodeQL, SemGrep) |
| Cobertura | Compatibilidad con tus lenguajes |
| Integracion | Compatible con tu sistema de code review |
| Precision | Evitar falsos positivos |
| Avanzado | Rastreo de datos, sugerencias de correccion IA |
Integra SAST en tu pipeline de CI para que cada PR sea escaneado automaticamente.
Gestion de secretos
Las credenciales comprometidas accidentalmente en repositorios son un problema frecuente. API keys, tokens y passwords pueden exponerse en commits.
Herramientas
- GitHub Secret Scanning: detecta secretos en commits y puede revocar automaticamente algunos
- Trufflehog: escanea historial de git buscando secretos expuestos
- Pre-commit hooks: previenen commits con secretos antes de que lleguen al repo
Configura estas herramientas desde el inicio, no despues de un incidente.
Gestion de dependencias
Las vulnerabilidades en dependencias son un vector de ataque significativo. El caso Equifax (2017) — fallar en actualizar Apache Struts expuso datos de 144 millones de usuarios.
Herramientas SCA
- Dependabot: crea PRs automaticos para actualizar dependencias vulnerables
- Renovate: similar a Dependabot con mas opciones de configuracion
Ambas automatizan busqueda de vulnerabilidades contra bases de datos publicas (NVD, GitHub Advisory Database).
SBOM
El Software Bill of Materials lista todas las dependencias con versiones y licencias. Es obligatorio en algunas jurisdicciones e industrias. Generalo en formato estandarizado (SPDX, CycloneDX).
Proteccion de ramas
Las reglas de proteccion de ramas previenen cambios no revisados en ramas principales:
- Requiere reviews antes de merge
- Requiere status checks (CI verde)
- Previene force push
- Requiere firma de commits (opcional)
Esto evita cambios accidentales, introduccion de vulnerabilidades y disrupciones de estabilidad.
Reportes de vulnerabilidades
SECURITY.md
Publica un archivo SECURITY.md detallando:
- Pasos para reportar problemas de seguridad
- Proceso de divulgacion coordinada
- Responsabilidades del equipo
- Versiones soportadas
Reporte privado (PVR)
- GitHub: crea forks privados para correcciones y borradores de avisos
- GitLab: usa issues privados
Todo permanece confidencial hasta la divulgacion publica.
Modelo de amenazas
Documenta que es y que no es una vulnerabilidad en contexto de tu proyecto. OWASP ofrece recursos para principiantes.
Plan de respuesta a incidentes
Un plan basico incluye:
- Quien revisa reportes de seguridad
- Como se evalua severidad
- Pasos para preparar correcciones
- Como coordinar divulgacion
- Como notificar usuarios afectados
Tener un marco basico ahora ahorra tiempo durante un incidente real.
Seguridad como esfuerzo colectivo
- Asigna roles claros de seguridad
- Aplica principio de menor privilegio en acceso
- Invierte en educacion de colaboradores
- Fomenta diversidad (aporta perspectivas variadas)
- Participa en divulgacion coordinada con dependencias upstream y usuarios downstream
La seguridad no es estatica: conforme crece el proyecto, tambien crece la superficie de ataque.
Resumen
- MFA obligatorio para todos los colaboradores con acceso de escritura
- Integra SAST en CI para escanear cada PR
- Configura deteccion de secretos desde el inicio
- Automatiza actualizacion de dependencias con Dependabot o Renovate
- Protege ramas principales con reviews y status checks obligatorios
- Publica SECURITY.md con proceso de reporte y divulgacion
- Ten un plan de respuesta a incidentes antes de necesitarlo
← Aspectos Legales | Indice | Siguiente: Balance y Autocuidado →