Uno de los elementos favorables en la CI (Integración continua) es el uso de un paso dedicado a la aplicación de Sensiolabs para la detección de fallas de seguridad no sólo en nuestro código sino en los paquetes de terceros (vendors). Hoy tras mucho tiempo sin dedicarme a ello, me encontré con un error en el despliegue de CI en un proyecto nuevo.
$ php security-checker security:check ../composer.lock The web service failed for an unknown reason (HTTP 403). Cleaning up file based variables ERROR: Job failed: exit code
Contenidos
Escenario
Para la integración continua uso sensiolabs en mi gitlab personal, en un paso (stage). Originalmente he usado en mi .gitlab-ci.yml
:
sensiolabs: stage: security script: - test -d security-checker || git clone https://github.com/sensiolabs/security-checker.git - cd security-checker - composer install - php security-checker security:check ../composer.lock dependencies: [] cache: paths: - security-checker/
Pero esto me llevó al fallo del artículo.

Tras una búsqueda localicé el paquete original en Packgist con una advertencia indicándome que el paquete estaba abandonado y el enlace al paquete actual mantenido por Fabien Potencier (aka fabpot).
Local PHP Security Checker es el paquete actual, y esta programado en Go, por lo que las instrucciones son claras.
- Descargar el binario que nos corresponda
- Renombrarlo a local-php-security-checker
- Hacerlo ejecutable
- Ejecutarlo
Modificar nuestro .gitlab-ci.yml
sensiolabs: stage: security image: edbizarro/gitlab-ci-pipeline-php:7.3 script: - curl -L -sS --output local-php-security-checker https://github.com/fabpot/local-php-security-checker/releases/download/v1.0.0/local-php-security-checker_1.0.0_linux_amd64 - chmod +x ./local-php-security-checker - ./local-php-security-checker dependencies: [] cache: paths: - security-checker/
Después de esto, nuestro repositorio podrá ejecutar el paso (stage) de seguridad sensiolabs de forma correcta.
Alternativa
También puedes instalarlo como paquete en el dev de tu proyecto
❯ composer require --dev thibautselingue/local-php-security-checker-installer ❯ vendor/bin/local-php-security-checker-installer && vendor/bin/local-php-security-checker Symfony Security Check Report ============================= No packages have known vulnerabilities. Note that this checker can only detect vulnerabilities that are referenced in the security advisories database. Execute this command regularly to check the newly discovered vulnerabilities.

Agradecimientos
- Gracias por la foto de Markus Spiske en en Unsplash
- Gitlab CI docs
Comparte este articulo en