Esta página es hermana de Fundamentos del desarrollo de paquetes. Da por sabido el uso básico de GitHub Actions.
Riesgos de seguridad en GitHub Actions
Peligros de las referencias por tag
Habitualmente, las GitHub Actions se referencian con tags:- Los tags se pueden mover — pueden borrarse y recrearse conservando el mismo nombre.
- Riesgo de manipulación — el secuestro de la cuenta del propietario del repositorio permite inyectar código malicioso.
- Ataque a la cadena de suministro — si atacan una acción de la que dependes, tu workflow queda comprometido.
Respuesta en los proyectos oficiales de Laravel
laravel/laravel y laravel/framework fijan todas sus acciones a un hash de commit (SHA).Estrategia de implementación del pinning
Paso 1: crear el archivo de configuración de Dependabot
En el repositorio del paquete, crea.github/dependabot.yml. Puedes copiar el archivo de Laravel tal cual.
- Escaneo automático — busca nuevas versiones de las GitHub Actions.
- Creación automática de PRs — cuando hay actualizaciones, abre una PR de forma automática.
- Control del método de actualización — las acciones no fijadas se actualizan por versión; las fijadas, por SHA.
Paso 2: fijar las acciones existentes con SHA
Cambia todas las referencias a acciones en tus workflows por hashes SHA. Puedes automatizarlo con herramientas como pinact.Automatización con la herramienta pinact
Cambio manual
Si no puedes usarpinact, consulta en la página “Lookup latest version” de GitHub el SHA de commit de cada acción y sustitúyelo a mano.
Paso 3: activar la configuración de Dependabot
Al hacer commit y push de.github/dependabot.yml al repositorio, Dependabot comenzará el escaneo automáticamente.
Mecanismo de actualización automática de Dependabot
Dependabot aplica estrategias distintas según la configuración dedependabot.yml.
Acciones no fijadas
Acciones fijadas
Ejemplo de implementación de un workflow
Ejemplo completo de uso de acciones en varios workflows.Cómo tratar las PRs de actualización de Dependabot
Trata así las PRs que crea Dependabot.PR de actualización de una sola acción
- Revisa los resultados del workflow.
- Comprueba que no hay cambios rompedores.
- Haz merge y listo.
PR de actualización de seguridad
Actualización en grupo de varias acciones
Si has configuradogroups en dependabot.yml, varias acciones se actualizan en una sola PR.
Ventajas y desventajas del pinning
Ventajas
| Ventaja | Descripción |
|---|---|
| Defensa frente a ataques a la cadena de suministro | Al referenciar un hash de commit concreto, resistes las manipulaciones de la acción. |
| Auditabilidad | Puedes seguir cuándo se actualizó cada acción y desde qué versión. |
| Actualizaciones explícitas | Al proponerse mediante Dependabot, siempre pasan por una revisión humana. |
| Reproducibilidad | Al ejecutar con el mismo hash de commit, se reproduce exactamente el mismo entorno. |
Desventajas
| Desventaja | Cómo se mitiga |
|---|---|
| Configuración inicial manual | Se automatiza con pinact. |
| Más carga de gestión de actualizaciones | Dependabot crea automáticamente los PRs, así que el coste de implementación es mínimo. |
| Menor legibilidad | Añade un comentario con la versión al lado para conservar la legibilidad. |
Checklist de auditoría de seguridad
Checklist para arrancar un nuevo proyecto de paquete.Configuración inicial
Configuración inicial
- Crear
.github/dependabot.yml. - Fijar en SHA todas las acciones existentes.
- Verificar con
pinacto de forma manual. - Comprobar que los workflows se ejecutan correctamente.
Mantenimiento periódico
Mantenimiento periódico
- Revisar las PRs de Dependabot al menos una vez por semana.
- Mergear las actualizaciones de seguridad con prioridad.
- Al añadir nuevas acciones, referenciarlas siempre por SHA.
- Revisar el estado de todos los workflows una vez al mes.
Auditoría
Auditoría
- Verificar que todas las referencias de acción están en SHA.
- Verificar que Dependabot está activo.
- Confirmar que las PRs de Dependabot de los últimos 6 meses están todas mergeadas.
Páginas relacionadas
Fundamentos del desarrollo de paquetes
Cómo desarrollar paquetes Laravel centrados en los service providers.
Gestión de la compatibilidad de versiones de paquetes
Estrategias de mantenimiento de paquetes ante grandes actualizaciones de Laravel.