Salus (Security Automation as a Lightweight Universal Scanner), que lleva el nombre de la diosa patrona romana, es una herramienta para coordinar la ejecución de los escáneres de seguridad. Puede ejecutar Salus en un repositorio a través del demonio Docker, que determina qué analizadores son relevantes, los ejecuta y entrega el resultado. La mayoría de los escáneres son otros proyectos maduros de código abierto que colocamos directamente en el contenedor.
Salus es particularmente útil para las canalizaciones de CI / CD, ya que se convierte en un lugar central para coordinar el escaneo en una gran flota de repositorios. Normalmente, los escáneres se configuran a nivel de repositorio para cada proyecto. Esto significa que cada repositorio debe actualizarse cada vez que se realizan cambios en la forma en que los escáneres se ejecutan en toda la empresa. En su lugar, puede actualizar Salus y todas las compilaciones aplicarán el cambio de inmediato.
Salus admite una configuración potente que permite configuraciones estándar globales y optimizaciones locales. Finalmente, Salus puede informar métricas a cada repositorio, p. Ej. B. qué paquetes están incluidos o qué preocupaciones hay. Estos informes se pueden evaluar de forma centralizada en su infraestructura para permitir un seguimiento de seguridad escalable.
Uso de Salus
#Navegue hasta el directorio raíz del proyecto en el que desea ejecutar Salus
cd / ruta / a / repositorio
# Ejecute la siguiente línea mientras está en el directorio raíz (no se necesitan cambios)
docker run –rm -t -v $ (pwd): / home / repo coinbase / salus
Escáneres compatibles
- Bandit: ejecutando Bandit 1.6.2, busca problemas de seguridad comunes en el código Python.
- Brakeman – Ejecutando Brakeman 4.10.0, buscando código vulnerable en proyectos Rails.
- semgrep – ejecución de
semgrep
0.36.0, que busca patrones semánticos y sintácticos en el código a nivel AST. - BundleAudit: ejecute Bundle Audit 0.8.0, buscando CVE en las dependencias de Ruby-Gem.
- Gosec: ejecutando gosec 2.7.0, buscando problemas de seguridad en el código Go.
- auditoría npm – implementación de
npm audit
6.14.8 que busca CVE en dependencias de módulo de nodo. - Garnaudit – implementación de
yarn audit
1.22.0 buscando CVE en dependencias de módulo de nodo. - PatternSearch – en ejecución
sift
0.9.0, busca ciertas cadenas en un proyecto que podrían ser peligrosas o requerir la presencia de ciertas cadenas. - Cargo Audit: ejecución de Cargo Audit 0.14.0 Audit Cargo.lock archivos para cajas con vulnerabilidades de seguridad informadas a la base de datos de asesoramiento RustSec
Seguimiento de dependencias
Salus también analiza los archivos de dependencia e informa qué bibliotecas y versiones se están utilizando. Esto puede ser útil para rastrear dependencias en su flota.
Los idiomas admitidos actualmente son:
construcción
Salus es altamente configurable, por lo que puede funcionar en muchos entornos diferentes y con muchos escáneres diferentes. Admite la interpolación de variables de entorno y configuraciones en cascada y puede leer configuraciones y enviar informes a través de HTTP.
A veces es necesario ignorar ciertos CVE, reglas, pruebas, grupos, directorios o cambiar la configuración estándar de un escáner. El directorio docs / scanners explica el procedimiento para cada escáner compatible con Salus.
Si desea crear escáneres personalizados o desea admitir idiomas adicionales que no son compatibles actualmente, puede usar este método para crear imágenes personalizadas de Salus.
Integración CircleCI
Salus se puede integrar con CircleCI usando un orbe público. Todas las opciones de configuración de Salus son compatibles y la configuración predeterminada es la misma que la de Salus.
Ejemplo CircleCI config.yml
:
Versión: 2.1
Pelotas:
salus: federation/[email protected]
Procesos de trabajo:
Principal:
Lugares de trabajo:
– Salus / Escanear
Documentación de orbe
Bola CircleCI para Salus
parámetro
atributo | descripción | defecto | Opciones |
---|---|---|---|
salus_executor | Ejecutor de CircleCI que se utilizará, que especifica el entorno de Salus | coinbase/salus:latest |
Ver referencia de ejecutor |
active_scanner | Escáner para ejecutar | todas | Brakeman, PatternSearch, BundleAudit, NPMAaudit |
Escáner_forzado | Escáneres que bloquean compilaciones | todas | Brakeman, PatternSearch, BundleAudit, NPMAaudit |
report_uri | Dónde deben enviarse los informes de Salus | archivo: //../salus-report.json | Cualquier URI |
Formato de informe | Qué formato usar para el informe | json | json, yaml, txt |
report_verbosity | Si se debe activar un informe detallado | cierto | verdadero Falso |
Archivo de configuración | Ubicación de almacenamiento del archivo de configuración en el repositorio (sobrescribe todos los demás parámetros excepto salus_executor) | «» | Cualquier nombre de archivo |
Nota: active_scanners y force_scanners deben tener el formato yaml para el archivo de configuración de Salus.
Variables de entorno CircleCI
Guardado en custom_info
un escaneo de Salus.
clave | Variable CircleCI | descripción |
---|---|---|
sha1 | CIRCLE_SHA1 | Hash de la última confirmación en la compilación |
ci_project_username | CIRCLE_PROJECT_USERNAME | Nombre de usuario SCM del proyecto |
renombrar | CIRCLE_PROJECT_REPONAME | Nombre del repositorio |
Rama | CIRCLE_BRANCH | Nombre de la rama de Git que se creará |
etiqueta | CIRCLE_TAG | Nombre del dia |
Repository_URL | CIRCLE_REPOSITORY_URL | URL del repositorio de Github o Bitbucket |
compare_url | CIRCLE_COMPARE_URL | URL para comparar confirmaciones en la compilación |
build_url | CIRCLE_BUILD_URL | URL de la compilación |
external_build_id | CIRCLE_BUILD_NUM | CircleCI u otro identificador de compilación |
pull_requests | CIRCLE_PULL_REQUESTS | Lista de solicitudes de extracción separadas por comas |
ci_username | CIRCLE_USERNAME | Nombre de usuario de SCM del usuario que inició la compilación |
pr_username | CIRCLE_PR_USERNAME | Nombre de usuario de SCM del usuario que creó la solicitud de extracción / fusión |
pr_reponame | CIRCLE_PR_REPONAME | Nombre del repositorio en el que se creó la solicitud de extracción / fusión |
pr_number | CIRCLE_PR_NUMBER | Número de la solicitud de extracción / fusión |
Ejemplos de
.circleci / config.yml
Bloquear el escaneo con todos los escáneres
Versión: 2.1
Pelotas:
salus: federation/[email protected]
Procesos de trabajo:
Principal:
Lugares de trabajo:
– Salus / Escanear
escaneo sin bloqueos con todos los escáneres
Versión: 2.1
Pelotas:
salus: federation/[email protected]
Procesos de trabajo:
Principal:
Lugares de trabajo:
– Salus / Escaneo:
Forced_Scanner: «ninguno»
Bloqueo de escaneo solo con frenos
Versión: 2.1
Pelotas:
salus: federation/[email protected]
Procesos de trabajo:
Principal:
Lugares de trabajo:
– Salus / Escaneo:
active_scanners: » n – Brakeman»
escáneres_forzados: » n – frenos»
escanear con un ejecutor Salus personalizado
Versión: 2.1
Pelotas:
salus: federation/[email protected]
Artistas intérpretes o ejecutantes:
salus_2_4_2:
Estibador:
– Imagen: Coinbase / Salus: 2.4.2
Procesos de trabajo:
salus_scan:
Lugares de trabajo:
– Salus / Escaneo:
salus_executor:
Nombre: salus_2_4_2
Variables de entorno CircleCI no utilizadas
CI, CI_PULL_REQUEST, CI_PULL_REQUESTS, CIRCLE_INTERNAL_TASK_DATA, CIRCLE_JOB, CIRCLE_NODE_INDEX, CIRCLE_NODE_TOTAL, CIRCLE_PREVIOUS_BUILD_NUM, CIRCLE_PULLC.
Integración de acciones de Github
Salus también se puede usar con Github Actions.
ejemplo .github/workflows/main.yml
:
en: [push]
Lugares de trabajo:
salus_scan_job:
se ejecuta en: ubuntu-latest
Nombre: ejemplo de un análisis de seguridad de Salus
Pasos:
– utilizado: Acciones / Pago @ v1
– Nombre: Salus Scan
ID: salus_scan
utilizado: federacy/[email protected]
Documentación de acciones de Github
Acción de escaneo de seguridad de Salus
Esta acción utiliza Salus de Coinbase para ejecutar SAST y análisis de dependencia.
Los informes Bundle Audit, Brakeman, NPM Audit y Yarn Audit pueden enviarse opcionalmente a Secure Development by Federacy para su análisis.
Escáneres compatibles
Apellido | idioma |
---|---|
Auditoría de paquetes | rubí |
Guardafrenos | rubí |
auditoría sobre el nivel del mar | JavaScript |
Auditoría de hilo | JavaScript |
ganso | Caminar |
bandido | pitón |
Auditoría de fletes | oxido |
semgrep | Lotes |
Búsqueda de patrones | n / a (usa bolígrafo) |
Ejemplo de aplicacion
configuración por defecto
en: [push]
Lugares de trabajo:
salus_scan_job:
se ejecuta en: ubuntu-latest
Nombre: ejemplo de un análisis de seguridad de Salus
Pasos:
– utilizado: Acciones / Pago @ v1
– Nombre: Salus Scan
ID: salus_scan
utilizado: federacy/[email protected]
Escáner único
en: [push]
Lugares de trabajo:
salus_scan_job:
se ejecuta en: ubuntu-latest
Nombre: ejemplo de un análisis de seguridad de Salus
Pasos:
– utilizado: Acciones / Pago @ v1
– Nombre: Salus Scan
ID: salus_scan
utilizado: federacy/[email protected]
Con:
active_scanners: » n – Brakeman»
escáneres_forzados: » n – frenos»
Sin escáneres forzados
en: [push]
Lugares de trabajo:
salus_scan_job:
se ejecuta en: ubuntu-latest
Nombre: ejemplo de un análisis de seguridad de Salus
Pasos:
– utilizado: Acciones / Pago @ v1
– Nombre: Salus Scan
ID: salus_scan
utilizado: federacy/[email protected]
Con:
Forced_Scanner: «ninguno»
Configuracion personalizada
en: [push]
Lugares de trabajo:
salus_scan_job:
se ejecuta en: ubuntu-latest
Nombre: ejemplo de un análisis de seguridad de Salus
Pasos:
– utilizado: Acciones / Pago @ v1
– Nombre: Salus Scan
ID: salus_scan
utilizado: federacy/[email protected]
Alrededores:
SALUS_CONFIGURATION: «archivo: //../salus-configuration.yaml archivo: //config/pattern_search.yaml»
Entradas
atributo | descripción | defecto | Opciones |
---|---|---|---|
active_scanner | Escáner para ejecutar | todas | Brakeman, PatternSearch, BundleAudit, NPMAaudit, GoSec |
Escáner_forzado | Escáneres que bloquean compilaciones | todas | Brakeman, PatternSearch, BundleAudit, NPMAaudit, GoSec |
report_uri | Dónde deben enviarse los informes de Salus | archivo: //../salus-report.json | Cualquier URI |
Formato de informe | Qué formato usar para el informe | json | json, yaml, txt |
report_verbosity | Si se debe activar un informe detallado | cierto | verdadero Falso |
salus_configuration | ¿Dónde puedo encontrar la configuración de Salus? | Archivo: //../salus-configuration.yaml | Cualquier URI |
Nota: active_scanners y force_scanners deben tener el formato yaml para el archivo de configuración de Salus.
Salidas
Ninguno.
Variables de entorno de Github
Guardado en custom_info de un escaneo de Salus.
clave | Variable de Github | descripción |
---|---|---|
sha1 | GITHUB_SHA | Hash de la última confirmación en la compilación |
renombrar | GITHUB_REPOSITORY | Nombre del repositorio |
árbitro | GITHUB_REF | Hacer referencia a este flujo desencadenado (rama o etiqueta) |
ci_username | GITHUB_ACTOR | Nombre de usuario de Github del usuario que inició la compilación |
github_action | GITHUB_ACTION | Nombre de la acción |
github_workflow | GITHUB_WORKFLOW | Nombre del flujo de trabajo |
github_event_name | GITHUB_EVENT_NAME | Nombre del evento que desencadenó el flujo de trabajo |
github_event_path | GITHUB_EVENT_PATH | Ruta de carga útil del evento |
github_workspace | GITHUB_WORKSPACE | Ruta del directorio del espacio de trabajo |
github_head_ref | GITHUB_HEAD_REF | Ref del repositorio principal, si está bifurcado |
github_base_ref | GITHUB_BASE_REF | Ref del repositorio base si está bifurcado |
github_home | EN CASA | Ruta al directorio de inicio utilizado por Github |
Envío de informes al panel de control
Pasos:
- Cree una cuenta gratuita con Secure Development by Federacy
- Haga clic en Aplicaciones en la barra de navegación.
- Haga clic en «Crear aplicación».
- Copie el trabajo de muestra en su flujo de trabajo en
.github/workflows
Usa Salus en tu repositorio
Actualice el archivo de configuración para su CI especificado para ejecutar Salus. En el círculo se ve así:
docker run –rm -t -v $ (pwd): / home / repo coinbase / salus
Coinbase / Salus extrae la imagen de Docker