Avisos de seguridad de Laravel: enterarte a tiempo con composer audit y Dependabot
Hola, bienvenido. En esta lección vamos a hacer que los avisos de seguridad de Laravel y de sus paquetes te lleguen solos, sin tener que ir a buscarlos. Primero vamos a ver dónde se publican. Después vamos a añadir composer audit a composer qa, para que cada cambio compruebe las dependencias, y vamos a terminar con un .github/dependabot.yml, para que GitHub te abra un pull request cuando haya una actualización de seguridad.
En la lección anterior vimos que la ventana para actualizar se mide hoy en horas y que actualizar con regularidad te protege incluso antes del aviso. Revisar a mano, cada semana, los avisos de los más de 100 paquetes que instala invoices no es viable, así que la forma de llegar a tiempo es que esa comprobación la haga una herramienta. Vamos a montar 2, y cada una cubre un hueco de la otra: composer audit actúa cada vez que alguien trabaja en el proyecto, y Dependabot, aunque nadie lo toque.
Dónde se publican los avisos de seguridad de Laravel
Los avisos que nos interesan salen de 2 sitios, y conviene saber cuál alimenta a cada herramienta.
El primero es GitHub. Cada paquete publica sus avisos en la pestaña de seguridad de su repositorio, y GitHub los revisa y los pasa a su base de datos de avisos, la GitHub Advisory Database. De esa base de datos salen las alertas de Dependabot: según la documentación de GitHub, Dependabot revisa tu repositorio cada vez que entra un aviso nuevo en ella y cada vez que cambian tus dependencias.
El segundo es Packagist, que reúne en su propia base de datos los avisos de GitHub y los de FriendsOfPHP/security-advisories. Cada paquete tiene su página de avisos, como la de laravel/framework en Packagist (se abre en una pestaña nueva), y esa base de datos es la que consulta composer audit.
Hay un dato que no viene en ningún aviso: hasta cuándo recibe correcciones de seguridad tu versión. Lo dice la política de soporte de Laravel (se abre en una pestaña nueva): cada versión mayor recibe correcciones de seguridad durante 2 años, y Laravel 13 las tiene hasta el 17 de marzo de 2028. Si tu proyecto está en una versión sin soporte, ningún aviso te va a traer una versión corregida, y la única solución es actualizar de versión mayor.
- 02composer audit
- 03composer audit dentro de composer qa
- 04Dependabot: los avisos como pull request
- 05Alternativas: Renovate y roave/security-advisories