Skip to main content
Para responder al riesgo de ataques o manipulación de las acciones de GitHub, incluso los proyectos oficiales de Laravel adoptan una medida de seguridad: el pinning de GitHub Actions. Esta página explica de forma práctica las medidas de seguridad que debe implementar un desarrollador de paquetes.
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:
Problemas de este enfoque:
  • 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.
Este archivo cumple las siguientes funciones:
  • 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 usar pinact, 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 de dependabot.yml.

Acciones no fijadas

Actualización de Dependabot: actualiza el rango de versión a una nueva versión.
Este enfoque prioriza la comodidad y se adapta al movimiento de tags, pero conserva el riesgo de seguridad.

Acciones fijadas

Actualización de Dependabot: actualiza al hash de commit de la nueva versión.
Este enfoque es el más seguro. Incluso al pasar a una versión nueva, sigue siendo una referencia a un commit, resistente a manipulaciones.

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

Actualizaciones simples como esta se gestionan del siguiente modo:
  1. Revisa los resultados del workflow.
  2. Comprueba que no hay cambios rompedores.
  3. Haz merge y listo.

PR de actualización de seguridad

Las actualizaciones relacionadas con parches de seguridad se mergean de forma prioritaria.

Actualización en grupo de varias acciones

Si has configurado groups en dependabot.yml, varias acciones se actualizan en una sola PR.
Al agrupar todas las actualizaciones en una única PR, reduces el número de merges.

Ventajas y desventajas del pinning

Ventajas

Desventajas

Checklist de auditoría de seguridad

Checklist para arrancar un nuevo proyecto de paquete.
  • Crear .github/dependabot.yml.
  • Fijar en SHA todas las acciones existentes.
  • Verificar con pinact o de forma manual.
  • Comprobar que los workflows se ejecutan correctamente.
  • 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.
  • 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.
Última modificación el 13 de julio de 2026