Voltar às atualizações
New releaseAug 19, 2026

gosec v2.28.0

Verificador de segurança Go

Compartilhar

gosec - Verificador de Segurança para Go

Inspeciona código fonte em busca de problemas de segurança através da varredura da AST (Árvore Sintática Abstrata) do Go e da representação de código SSA.

Características

  • Regras baseadas em padrões para detectar problemas comuns de segurança em código Go
  • Analisadores baseados em SSA para conversões de tipo, limites de slice e problemas de criptografia
  • Análise de taint para rastrear fluxo de dados desde a entrada do usuário até funções perigosas (SQL injection, command injection, path traversal, SSRF, XSS, log injection, SMTP injection, SSTI, desserialização insegura, open redirect)

Licença

Licenciado sob a Licença Apache, Versão 2.0 (a "Licença"). Você não pode usar este arquivo exceto em conformidade com a Licença. Você pode obter uma cópia da Licença aqui.

Status do projeto

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

Instalação

Ação do GitHub

Você pode executar gosec como uma ação do GitHub da seguinte forma:

Use a tag versionada com @master que está fixada na versão estável mais recente. Isso fornecerá um comportamento estável.```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: ./...

#### Verificação de Projetos com Módulos Privados

Se o seu projeto importa módulos Go privados, você precisa
configurar a autenticação para que `gosec` possa buscar as
dependências. Defina as seguintes variáveis de ambiente em
seu fluxo de trabalho:

- `GOPRIVATE`: Uma lista separada por vírgulas de prefixos de caminhos de módulo
  que devem ser considerados privados
  (por exemplo, `github.com/your-org/*`).
- `GITHUB_AUTHENTICATION_TOKEN`: Um token do GitHub com acesso de leitura
  aos seus repositórios privados.```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: ./...

Integração com a verificação de código

Você pode integrar ferramentas de análise de código de terceiros com a verificação de código do GitHub carregando dados como arquivos SARIF.

O workflow mostra um exemplo de execução do gosec como uma etapa em um workflow do GitHub Actions que gera o arquivo results.sarif. Em seguida, o workflow envia o arquivo results.sarif para o GitHub usando a ação 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

### Análise do Go

O pacote `goanalysis` fornece um
[`golang.org/x/tools/go/analysis.Analyzer`](https://pkg.go.dev/golang.org/x/tools/go/analysis)
para integração com ferramentas que suportam a interface padrão de análise do Go,
como o framework [nogo](https://github.com/bazelbuild/rules_go/blob/master/go/nogo.rst) do Bazel:```starlark
nogo(
    name = "nogo",
    deps = [
        "@com_github_securego_gosec_v2//goanalysis",
        # add more analyzers as needed
    ],
    visibility = ["//visibility:public"],
)

Instalação Local

O gosec requer Go 1.25 ou superior.```bash go install github.com/securego/gosec/v2/cmd/gosec@latest

## Início rápido```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 ./...

Códigos de saída

  • 0: verificação concluída sem achados/erros não suprimidos
  • 1: pelo menos um achado não suprimido ou erro de processamento
  • Use -no-fail para sempre retornar 0

Uso

Gosec pode ser configurado para executar apenas um subconjunto de regras, excluir determinados caminhos de arquivo e gerar relatórios em diferentes formatos. Por padrão, todas as regras serão executadas nos arquivos de entrada fornecidos. Para verificar recursivamente a partir do diretório atual, você pode fornecer ./... como argumento de entrada.

Regras disponíveis

gosec inclui regras nestas categorias:

  • G1xx: issues gerais de codificação segura (por exemplo, credenciais codificadas, uso inseguro, hardening HTTP, segurança de cookies)
  • G2xx: riscos de injeção na construção de consultas/modelos/comandos
  • G3xx: riscos de manipulação de arquivos e caminhos (permissões, travessia, arquivos temporários, extração de arquivos)
  • G4xx: fraquezas de criptografia e TLS
  • G5xx: importações em lista de bloqueio
  • G6xx: verificações de correção/segurança específicas do Go (por exemplo, alias de intervalo e limites de slice)
  • G7xx: regras de análise de contaminação (SQL injection, command injection, path traversal, SSRF, XSS, log, SMTP injection, SSTI, desserialização insegura e redirecionamento aberto)

Para a lista completa, descrições das regras e configuração por regra, consulte RULES.md.

Regras aposentadas

Categorias