Retour aux mises à jour
New releaseAug 19, 2026

gosec v2.28.0

Vérificateur de sécurité Go

Partager

gosec - 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 de code SSA.

Liens rapides

Fonctionnalités

  • Règles basées sur des motifs pour détecter les problèmes de sécurité courants dans le code Go
  • Analyseurs basés sur SSA pour les conversions de type, les limites de tranches et les problèmes cryptographiques
  • Analyse de flux pour suivre le flux de données depuis l'entrée utilisateur vers les fonctions dangereuses (injection SQL, injection de commande, traversée de chemin, SSRF, XSS, injection de logs, injection SMTP, SSTI, désérialisation non sécurisée, redirection ouverte)

Licence

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.

Statut du projet

CII Best Practices Build Status Coverage Status GoReport GoDoc Docs Downloads GHCR Slack go-recipes

Installation

Action GitHub

Vous pouvez exécuter gosec en tant qu'action GitHub comme suit :

Utilisez le tag versionné avec @master qui est épinglé à la dernière version stable. Cela fournira un comportement stable.```yaml 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: ./...

#### Scanning Projects with Private Modules

If your project imports private Go modules, you need to
configure authentication so that `gosec` can fetch the
dependencies. Set the following environment variables in
your workflow:

- `GOPRIVATE`: A comma-separated list of module path prefixes
  that should be considered private
  (e.g., `github.com/your-org/*`).
- `GITHUB_AUTHENTICATION_TOKEN`: A GitHub token with read
  access to your private repositories.```yaml
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: ./...

Intégration avec le scanning de code

Vous pouvez intégrer des outils d'analyse de code tiers avec le scanning de code GitHub en téléchargeant les 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écharge ensuite le fichier results.sarif vers GitHub en utilisant l'action upload-sarif.```yaml 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

### Analyse Go

Le paquet `goanalysis` fournit un
[`golang.org/x/tools/go/analysis.Analyzer`](https://pkg.go.dev/golang.org/x/tools/go/analysis)
pour l'intégration avec des outils qui prennent en charge l'interface
d'analyse standard de Go, tels que le framework
[nogo](https://github.com/bazelbuild/rules_go/blob/master/go/nogo.rst)
de Bazel :```starlark
nogo(
    name = "nogo",
    deps = [
        "@com_github_securego_gosec_v2//goanalysis",
        # add more analyzers as needed
    ],
    visibility = ["//visibility:public"],
)

Installation locale

gosec nécessite Go 1.25 ou une version ultérieure.```bash go install github.com/securego/gosec/v2/cmd/gosec@latest

## Démarrage rapide```bash
# 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 ./...

Codes de sortie

  • 0 : scan terminé sans résultats/erreurs non supprimés
  • 1 : au moins un résultat non supprimé ou une erreur de traitement
  • Utilisez -no-fail pour toujours retourner 0

Utilisation

Gosec peut être configuré pour exécuter uniquement un sous-ensemble de règles, pour exclure certains chemins de fichiers, et produire des rapports dans différents formats. Par défaut, toutes les règles seront exécutées sur les fichiers d'entrée fournis. Pour effectuer une analyse récursive à partir du répertoire courant, vous pouvez fournir ./... comme argument d'entrée.

Règles disponibles

gosec inclut des règles dans ces catégories :

  • G1xx : problèmes généraux de codage sécurisé (par exemple, identifiants codés en dur, utilisation non sécurisée, durcissement HTTP, sécurité des cookies)
  • G2xx : risques d'injection dans la construction de requêtes/modèles/commandes
  • G3xx : risques de gestion des fichiers et des chemins (permissions, traversée, fichiers temporaires, extraction d'archives)
  • G4xx : faiblesses cryptographiques et TLS
  • G5xx : importations bloquées
  • G6xx : vérifications de correction/sécurité spécifiques à Go (par exemple, alias de plage et limites de tranche)
  • G7xx : règles d'analyse de flux (injection SQL, injection de commande, traversée de chemin, SSRF, XSS, log, injection SMTP, SSTI, désérialisation non sécurisée, et redirection ouverte)

Catégories