Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
gosec — Vérificateur de sécurité Go | Kitploit
Outils/GitHubGitHub/securego/gosec
Analyse Statique de Code (SAST)Analyse des VulnérabilitésAnalyse de CodeDevSecOps
GitHubsecurego/gosec

gosec

Vérificateur de sécurité Go

Voir le dépôtSite web
8.9k701il y a 11 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
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

  • Action GitHub
  • Installation locale
  • Démarrage rapide
  • Modèles d'utilisation courants
  • Sélection des règles
  • Formats de sortie

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: ./...

root@kitploit:~
#### 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

root@kitploit:~
### 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

root@kitploit:~
## 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)

Pour la liste complète, les descriptions des règles et la configuration par règle, voir RULES.md.

Règles retirées

  • G105 : Auditer l'utilisation de math/big.Int.Exp - CVE corrigé
  • G307 : Différer une méthode qui retourne une erreur - cause plus d'inconvénients que de résoudre un problème de sécurité, malgré les détails de cet article de blog

Sélection des règles

Par défaut, gosec exécutera toutes les règles sur les chemins de fichiers fournis. Il est cependant possible de sélectionner un sous-ensemble de règles à exécuter via le drapeau -include=, ou de spécifier un ensemble de règles à exclure explicitement en utilisant le drapeau -exclude=.```bash

Run a specific set of rules

$ gosec -include=G101,G203,G401 ./...

Run everything except for rule G303

$ gosec -exclude=G303 ./...

root@kitploit:~
### Cartographie CWE

Chaque problème détecté par `gosec` est mappé à un
[CWE (Common Weakness Enumeration)](http://cwe.mitre.org/data/index.html)
qui décrit la vulnérabilité en termes plus génériques. La
correspondance exacte peut être trouvée
[ici](https://github.com/securego/gosec/blob/master/issue/issue.go#L50).

### Configuration

Un certain nombre de paramètres globaux peuvent être fournis dans un fichier
de configuration comme suit :```JSON
{
    "global": {
        "nosec": "enabled",
        "audit": "enabled"
    }
}
  • nosec: ce paramètre écrasera toutes les directives #nosec définies dans l'ensemble du code source
  • audit: s'exécute en mode audit, ce qui active des contrôles supplémentaires qui pourraient être trop intrusifs pour une analyse de code normale```bash

Run with a global configuration file

$ gosec -conf config.json .

root@kitploit:~
### Exclusions basées sur les chemins

Les grands dépôts avec plusieurs composants peuvent nécessiter des règles de sécurité différentes selon les chemins. Utilisez `exclude-rules` pour supprimer des règles spécifiques pour des chemins spécifiques.

**Fichier de configuration :**```json
{
  "exclude-rules": [
    {
      "path": "cmd/.*",
      "rules": ["G204", "G304"]
    },
    {
      "path": "scripts/.*",
      "rules": ["*"]
    }
  ]
}

Option CLI :```bash

Exclude G204 and G304 from cmd/ directory

gosec --exclude-rules="cmd/.*:G204,G304" ./...

Exclude all rules from scripts/ directory

gosec --exclude-rules="scripts/.:" ./...

Multiple exclusions

gosec --exclude-rules="cmd/.:G204,G304;test/.:G101" ./...

root@kitploit:~
| Champ | Type | Description |
|-------|------|-------------|
| `path` | string (regex) | Expression rationnelle mise en correspondance avec les chemins de fichiers |
| `rules` | []string | Identifiants de règle à exclure. `*` pour toutes |

#### Configuration des règles

Certaines règles acceptent également des indicateurs de configuration ; ces indicateurs sont documentés dans
[RULES.md](https://github.com/securego/gosec/blob/master/RULES.md).

#### Version de Go

Certaines règles nécessitent une version spécifique de Go qui est récupérée
à partir du fichier de module Go présent dans le projet. Si cette version
ne peut pas être trouvée, elle se rabat sur la version d'exécution de Go.

La version du module Go est analysée à l'aide de la commande `go list`,
ce qui dans certains cas peut entraîner une dégradation des performances. Dans
ce cas, la version du module Go peut être facilement fournie en définissant
la variable d'environnement
`GOSECGOVERSION=go1.21.1`.

### Dépendances

gosec charge les packages en utilisant les modules Go. Dans la plupart des projets,
les dépendances sont résolues automatiquement lors de l'analyse.

Si des dépendances sont manquantes, exécutez :

go get -v -t ./...

root@kitploit:~
go mod tidy
go mod download
```
### Exclure les fichiers et dossiers de test

gosec ignorera les fichiers de test dans tous les packages et toutes les dépendances dans votre répertoire vendor.

L'analyse des fichiers de test peut être activée avec le flag suivant :```bash
gosec -tests ./...
```
Des dossiers supplémentaires peuvent également être exclus comme suit :```bash
 gosec -exclude-dir=rules -exclude-dir=cmd ./...
```
### Exclure les fichiers générés

gosec peut ignorer les fichiers Go générés avec le commentaire de code généré par défaut.```
// Code generated by some generator DO NOT EDIT.
```
INPUT:```bash
gosec -exclude-generated ./...
```
### Correction automatique des vulnérabilités

gosec peut proposer des correctifs basés sur des recommandations IA. Il appellera une API IA pour obtenir une suggestion pour une découverte de sécurité.

Vous pouvez activer cette fonctionnalité en fournissant les arguments de ligne de commande suivants :

- `ai-api-provider` : le nom du fournisseur d'API IA. Fournisseurs pris en charge :
  - **Atlas Cloud** : `atlas` (modèle par défaut `deepseek-ai/deepseek-v4-flash`),
    `atlas-deepseek-v4-flash`,
    `atlas-qwen3-coder-next`, `atlas-kimi-k2.6`, ou
    `atlas:<model-id>` pour tout modèle de chat hébergé par Atlas Cloud.
    Atlas Cloud est un fournisseur compatible OpenAI disponible sur
    [atlascloud.ai](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=gosec)
  - **Gemini** : `gemini-3-pro-preview` (par défaut),
    `gemini-2.5-pro`, `gemini-2.5-flash`,
    `gemini-2.5-flash-lite`
  - **Claude** : `claude-sonnet-4-6` (par défaut),
    `claude-opus-4-7`, `claude-opus-4-6`,
    `claude-sonnet-4-5`, `claude-opus-4-5`,
    `claude-haiku-4-5`
  - **OpenAI** : `gpt-5.4` (par défaut), `gpt-5.4-mini`,
    `gpt-5.4-nano`
  - **Compatible OpenAI personnalisé** : tout nom de modèle personnalisé
    (nécessite `ai-base-url`)
- `ai-api-key` ou définissez la variable d'environnement
  `GOSEC_AI_API_KEY` : la clé pour accéder à l'API IA
  - Pour Gemini, vous pouvez créer une clé API en suivant
    [ces instructions](https://ai.google.dev/gemini-api/docs/api-key)
  - Pour Claude, obtenez votre clé API depuis
    [la console Anthropic](https://console.anthropic.com/)
  - Pour OpenAI, obtenez votre clé API depuis
    [la plateforme OpenAI](https://platform.openai.com/api-keys)
- `ai-base-url` : (facultatif) URL de base personnalisée pour
  les API compatibles OpenAI (par exemple, Azure OpenAI, LocalAI,
  Ollama)
  - Atlas Cloud utilise `https://api.atlascloud.ai/v1` par défaut,
    donc `ai-base-url` est facultatif pour le fournisseur `atlas`
    intégré
- `GOSEC_AI_PROVIDER` : (facultatif) variable d'environnement
  alternative à `ai-api-provider`
- `GOSEC_AI_BASE_URL` : (facultatif) variable d'environnement
  alternative à `ai-base-url`
- `ai-skip-ssl` : (facultatif) ignorer la vérification du certificat SSL
  pour l'API IA (utile pour les certificats auto-signés)

> 🎁 **[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=gosec)** est une plateforme d'inférence IA multimodale qui offre aux développeurs une API IA unique pour accéder aux API de génération vidéo, de génération d'images et LLM. Au lieu de gérer plusieurs intégrations de fournisseurs, vous vous connectez une fois et obtenez un accès unifié à plus de 300 modèles sélectionnés dans toutes les modalités.
>
> Découvrez la nouvelle promotion du plan de codage d'Atlas Cloud pour un accès API plus économique : [https://www.atlascloud.ai/console/coding-plan](https://www.atlascloud.ai/console/coding-plan)

**Exemples :**```bash
# Using Atlas Cloud with the default DeepSeek V4 Flash model
export GOSEC_AI_API_KEY="your_key"
export GOSEC_AI_PROVIDER="atlas"
gosec ./...

# Using Atlas Cloud with an explicit hosted model
GOSEC_AI_API_KEY="your_key" \
  gosec -ai-api-provider="atlas:qwen/qwen3-coder-next" ./...

# Using Gemini
gosec -ai-api-provider="gemini-3-pro-preview" \
  -ai-api-key="your_key" ./...

# Using Claude
gosec -ai-api-provider="claude-sonnet-4-6" \
  -ai-api-key="your_key" ./...

# Using OpenAI
gosec -ai-api-provider="gpt-5.4" \
  -ai-api-key="your_key" ./...

# Using Azure OpenAI
gosec -ai-api-provider="gpt-5.4" \
  -ai-api-key="your_azure_key" \
  -ai-base-url="https://your-resource.openai.azure.com/openai/deployments/your-deployment" \
  ./...

# Using local Ollama with custom model
gosec -ai-api-provider="llama3.2" \
  -ai-base-url="http://localhost:11434/v1" \
  ./...

# Using self-signed certificate API
gosec -ai-api-provider="custom-model" \
  -ai-api-key="your_key" \
  -ai-base-url="https://internal-api.company.com/v1" \
  -ai-skip-ssl \
  ./...
```
### Annoter le code

Comme pour tous les outils de détection automatisés, il y aura des cas de faux positifs. Dans les cas où gosec signale un échec qui a été vérifié manuellement comme étant sûr, il est possible d'annoter le code avec un commentaire commençant par `#nosec`.

Le commentaire `#nosec` doit avoir le format `#nosec [RuleList] [-- Justification]`.

Le commentaire `#nosec` doit être placé sur la ligne où l'avertissement est signalé.```go
func main() {
	tr := &http.Transport{
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify: true, // #nosec G402
		},
	}

	client := &http.Client{Transport: tr}
	_, err := client.Get("https://go.dev/")
	if err != nil {
		fmt.Println(err)
	}
}
```
Lorsqu'un faux positif spécifique a été identifié et vérifié
comme sûr, vous pouvez souhaiter supprimer uniquement cette règle unique (ou un
ensemble spécifique de règles) dans une section de code, tout
en continuant à analyser les autres problèmes. Pour ce faire, vous pouvez lister
la ou les règles à supprimer dans l'annotation `#nosec`,
ex : `/* #nosec G401 */` ou `//#nosec G201 G202 G203`

Vous pouvez mettre le texte de description ou de justification pour
l'annotation. La justification doit être après la ou les règles à
supprimer et commencer par deux tirets ou plus,
ex : `//#nosec G101 G102 -- Ceci est un faux positif`

Alternativement, gosec prend également en charge la directive
`//gosec:disable`, qui fonctionne de manière similaire à `#nosec` :```go
//gosec:disable G101 -- This is a false positive
```
Dans certains cas, il peut également être souhaitable de revoir les endroits où des annotations `#nosec` ou `//gosec:disable` ont été utilisées. Pour exécuter le scanner et ignorer toutes les annotations `#nosec`, vous pouvez procéder comme suit :```bash
gosec -nosec=true ./...
```
#### Exiger des identifiants de règle et des justifications

Pour éviter que les annotations ne suppriment involontairement des
règles non liées, ou ne soient ajoutées sans explication, gosec accepte
deux drapeux optionnels. Les deux sont par défaut à `false`, donc les
bases de code existantes continuent de fonctionner sans changement.

- `-nosec-require-rules` rejette les directives `#nosec` /
  `//gosec:disable` nues qui ne listent aucun identifiant de règle.
- `-nosec-require-justification` rejette les directives qui ne
  comportent pas une `-- justification` après la liste de règles.

Lorsqu'elles sont activées, une directive qui échoue à la vérification
ne supprime plus aucun résultat et est signalée comme une erreur dans la
sortie, en plus de tout problème sous-jacent sur la ligne.```bash
gosec -nosec-require-rules -nosec-require-justification ./...
```
Les mêmes options peuvent être définies via le bloc de configuration global :```json
{
    "global": {
        "nosec-require-rules": "enabled",
        "nosec-require-justification": "enabled"
    }
}
```
### Suivi des suppressions

Comme décrit ci-dessus, nous pouvons supprimer les violations en externe
(utilisant `-include`/`-exclude`) ou en ligne (utilisant des annotations `#nosec`).
Les métadonnées de suppression peuvent être émises pour l'audit.

Activez le suivi des suppressions avec `-track-suppressions` :```bash
gosec -track-suppressions -exclude=G101 \
  -fmt=sarif -out=results.sarif ./...
```
- Pour les suppressions externes, gosec enregistre les informations de suppression
  où `kind` est `external` et `justification` est
  `Globally suppressed.`.
- Pour les suppressions en ligne, gosec enregistre les informations de suppression
  où `kind` est `inSource` et `justification` est le texte
  après deux tirets ou plus dans le commentaire.

**Note :** Seuls les formats SARIF et JSON permettent le suivi
des suppressions.

### Build tags

gosec peut transmettre vos
[Go build tags](https://pkg.go.dev/go/build/) à l'analyseur.
Ils peuvent être fournis sous forme de liste séparée par des virgules comme suit :```bash
gosec -tags debug,ignore ./...
```
### Formats de sortie

gosec supporte `text`, `json`, `yaml`, `csv`, `junit-xml`,
`html`, `sonarqube`, `golint`, et `sarif`. Par défaut,
les résultats sont rapportés sur stdout, mais peuvent également être écrits dans
un fichier de sortie. Le format de sortie est contrôlé par l'option `-fmt`,
et le fichier de sortie est contrôlé par l'option `-out` comme suit :```bash
# Write output in json format to results.json
$ gosec -fmt=json -out=results.json *.go
```
Utilisez `-stdout` pour imprimer les résultats tout en écrivant `-out`.
Utilisez `-verbose` pour remplacer le format de stdout tout en préservant le
format du fichier.```bash
# Write output in json format to results.json as well as stdout
$ gosec -fmt=json -out=results.json -stdout *.go

# Overrides the output format to 'text' when stdout the results,
# while writing it to results.json
$ gosec -fmt=json -out=results.json -stdout -verbose=text *.go
```
**Note :** gosec génère le
[format d'importation de problèmes générique](https://docs.sonarqube.org/latest/analysis/generic-issue/)
pour SonarQube, et un rapport doit être importé dans SonarQube
en utilisant
`sonar.externalIssuesReportPaths=path/to/gosec-report.json`.

## Modèles d'utilisation courants```bash
# Fail only on medium+ severity findings
gosec -severity medium ./...

# Fail only on medium+ confidence findings
gosec -confidence medium ./...

# Exclude specific rules for specific paths
gosec --exclude-rules="cmd/.*:G204,G304;scripts/.*:*" ./...

# Exclude generated files in scan
gosec -exclude-generated ./...

# Include test files in scan
gosec -tests ./...
```
## Développement

La documentation de développement a été déplacée vers
[DEVELOPMENT.md](https://github.com/securego/gosec/blob/HEAD/DEVELOPMENT.md).

## Qui utilise gosec ?

Voici une [liste](https://github.com/securego/gosec/blob/HEAD/USERS.md) des utilisateurs de gosec.

## Sponsors

Soutenez ce projet en devenant sponsor. Votre logo apparaîtra ici avec un lien vers votre site web

<a href="https://github.com/mercedes-benz" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/2947/08b6f9da5faff0e986172b0c77fed0865a2cb26e6f8c58a8ae588c74bcf16f5f.png"></a>
Télécharger l’outil