Esta acción de GitHub le permite utilizar el escáner de código líder de la industria de Contrast Security (escaneo de contraste) para encontrar vulnerabilidades en su código. La acción compara el análisis de escaneo de código del PR al último análisis de escaneo de código de la rama de destino. GitHub falla el cheque si se han introducido nuevas vulnerabilidades.
Si no está familiarizado con las acciones de GitHub, lea la documentación de las acciones de GitHub para saber qué son las acciones de GitHub y cómo configurarlas. Después de lo cual, complete los siguientes pasos:
Configurar los siguientes secretos de GitHub contrast_api_key, contrast_organization_id, contrast_auth_header y contrast_api_url

CodesEC por contraste Usuarios de seguridad: recupere los detalles de autenticación para los secretos utilizando la CLI.
Instrucciones de instalación aquí: https://www.contrastsecurity.com/developer/codesec
Si es un nuevo usuario, cree una cuenta con el comando 'Contrast Auth'
Ejecute el comando 'Contrast Config' en la CLI para recopilar las credenciales requeridas

Usuarios de seguridad de contraste con licencia: obtenga sus detalles de autenticación para los secretos del menú 'Configuración del usuario' en la interfaz web de contraste: necesitará lo siguiente

Copie el flujo de trabajo de muestra a continuación y cree una rama de su código para agregar un escaneo de seguridad de contraste. Esta rama se encuentra típicamente en .github/workflows/build.yml
Actualice el archivo de flujo de trabajo para especificar cuándo debe ejecutarse la acción (por ejemplo, en pull_request, en push)
on :
# Trigger analysis when pushing to main or an existing pull requests. Also trigger on
# new pull requests
push :
branches :
- main
pull_request :
types : [opened, synchronize, reopened]Actualice el FilePath en el archivo de flujo de trabajo para especificar la ubicación del artefacto o archivo creado para escanear
with :
artifact : mypath/target/myartifact.jar Fallar en función de la gravedad de la vulnerabilidad encontrada severidad del conjunto (crítico/alto/medio o bajo) y no es cierto
severity : high
fail : true Para que GitHub enumere las vulnerabilidades en la pestaña de seguridad del repositorio, la acción de contraste debe ir acompañada de esta acción de GitHub
- name : Upload SARIF file
uses : github/codeql-action/upload-sarif@v2
with :
sarif_file : results.sarif El valor de sarif_file debe ser results.sarif .
Después de comprometerse, cree una solicitud de extracción (PR) para fusionar la actualización de regreso a su rama principal. Crear el PR desencadena el escaneo para ejecutar. La verificación adicional de "escaneo de código" aparece en el PR
Dado que es probable que haya nuevos hallazgos cuando agrega un escaneo de contraste, no queremos fallar y bloquear la fusión del PR que agrega escaneo de contraste, lo que obliga al propietario de los PR a arreglar todas las vulnerabilidades recién expuestas que ya existían en la base de código.
Después de que el escaneo de contraste se ejecute en la rama principal, todos los PR nuevos que crean donde se ejecuta el escaneo de contraste Falling El escaneo de código verifique si introducen nuevas vulnerabilidades más allá de la línea de base que acaba de establecer.
Todos los secretos de cuenta relacionados con el contraste deben configurarse como secretos de GitHub y se pasarán al escáner a través de variables de entorno en el corredor de GitHub. Un simple flujo de trabajo para ponerse en marcha es:
on :
# Trigger analysis when pushing to main or an existing pull requests. Also trigger on
# new pull requests
push :
branches :
- main
pull_request :
types : [opened, synchronize, reopened]
name : Contrast Security Scan
jobs :
build_and_scan :
permissions :
contents : read # for actions/checkout
security-events : write # for github/codeql-action/upload-sarif
actions : read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
runs-on : ubuntu-latest
# check out project
steps :
- uses : actions/checkout@v2
# steps to build the artifact you want to scan
# -name: Build Project
# ...
# Scan Artifact
- name : Contrast Scan Action
uses : Contrast-Security-OSS/[email protected]
with :
artifact : mypath/target/myartifact.jar
apiKey : ${{ secrets.CONTRAST_API_KEY }}
orgId : ${{ secrets.CONTRAST_ORGANIZATION_ID }}
authHeader : ${{ secrets.CONTRAST_AUTH_HEADER }}
severity : high
fail : true
# To list vulnerabilities in the GitHub Security Tab of the repo include GitHub upload-sarif action
# The value of `sarif_file` must be `results.sarif`
- name : Upload SARIF file
uses : github/codeql-action/upload-sarif@v2
with :
sarif_file : results.sarif Esta acción de GitHub y el complemento Maven de contraste logran lo mismo. No puedes usar ambos al mismo tiempo. Por ejemplo, si está utilizando Maven para construir su código y ejecuta org.contrastsecurity.maven: escanee durante la compilación, no use la acción de github de escaneo de contraste.