
Vérificateur de sécurité Go
Inspecte le code source à la recherche de problèmes de sécurité en analysant l'AST Go et la représentation du code SSA.
Sous licence Apache License, Version 2.0 (la « Licence »). Vous ne pouvez pas utiliser ce fichier sauf en conformité avec la Licence. Vous pouvez obtenir une copie de la Licence ici.
Vous pouvez exécuter gosec en tant que GitHub action comme suit :
Utilisez le tag versionné avec @master qui est épinglé sur la
dernière version stable. Cela garantira un comportement stable.
name: Run Gosec
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
tests:
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Checkout Source
uses: actions/checkout@v3
- name: Run Gosec Security Scanner
uses: securego/gosec@master
with:
args: ./...
Si votre projet importe des modules Go privés, vous devez
configurer l'authentification afin que gosec puisse récupérer les
dépendances. Définissez les variables d'environnement suivantes dans
votre workflow :
GOPRIVATE : une liste séparée par des virgules de préfixes de chemins de modules
qui doivent être considérés comme privés
(par exemple, github.com/your-org/*).GITHUB_AUTHENTICATION_TOKEN : un jeton GitHub disposant d'un accès en lecture
à vos dépôts privés.name: Run Gosec
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
tests:
runs-on: ubuntu-latest
env:
GO111MODULE: on
GOPRIVATE: github.com/your-org/*
GITHUB_AUTHENTICATION_TOKEN: ${{ secrets.PRIVATE_REPO_TOKEN }}
steps:
- name: Checkout Source
uses: actions/checkout@v3
- name: Run Gosec Security Scanner
uses: securego/gosec@v2
with:
args: ./...
Vous pouvez intégrer des outils d'analyse de code tiers à l'analyse de code GitHub en téléversant des données sous forme de fichiers SARIF.
Le workflow montre un exemple d'exécution de gosec en tant qu'étape
dans un workflow GitHub action qui produit le fichier results.sarif.
Le workflow téléverse ensuite le fichier results.sarif vers
GitHub à l'aide de l'action upload-sarif.
name: "Security Scan"
# Run workflow each time code is pushed to your repository and on a schedule.
# The scheduled workflow runs every at 00:00 on Sunday UTC time.
on:
push:
schedule:
- cron: '0 0 * * 0'
jobs:
tests:
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Checkout Source
uses: actions/checkout@v3
- name: Run Gosec Security Scanner
uses: securego/gosec@v2
with:
# we let the report trigger content trigger a failure using the GitHub Security features.
args: '-no-fail -fmt sarif -out results.sarif ./...'
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v2
with:
# Path to SARIF file relative to the root of the repository
sarif_file: results.sarif
Le paquet goanalysis fournit un
golang.org/x/tools/go/analysis.Analyzer
pour l'intégration avec les outils qui prennent en charge l'interface
d'analyse standard de Go, tels que le framework
nogo
de Bazel :
nogo(
name = "nogo",
deps = [
"@com_github_securego_gosec_v2//goanalysis",
# add more analyzers as needed
],
visibility = ["//visibility:public"],
)
gosec nécessite Go 1.25 ou une version plus récente.
go install github.com/securego/gosec/v2/cmd/gosec@latest
# Scan all packages in current module
gosec ./...
# Write JSON report
gosec -fmt json -out results.json ./...
# Write SARIF report for code scanning
gosec -fmt sarif -out results.sarif ./...
0 : analyse terminée sans résultats ni erreurs non supprimés1 : au moins un résultat ou une erreur de traitement non supprimé-no-fail pour toujours renvoyer 0Gosec peut être configuré pour n'exécuter qu'un sous-ensemble de règles, pour
exclure certains chemins de fichiers et pour produire des rapports dans différents
formats. Par défaut, toutes les règles sont exécutées sur les fichiers
d'entrée fournis. Pour analyser récursivement depuis le répertoire courant, vous
pouvez fournir ./... comme argument d'entrée.
gosec inclut des règles réparties dans ces catégories :