Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
gosec — Verificador de seguridad de Go | Kitploit
Herramientas/GitHubGitHub/securego/gosec
Análisis Estático de Código (SAST)Análisis de VulnerabilidadesAnálisis de CódigoDevSecOpsTop en Análisis de Código #9Top en Análisis Estático de Código (SAST) #6
GitHubsecurego/gosec

gosec

Verificador de seguridad de Go

Ver Repositorio
8.9k70160hace 2 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Sitio web

gosec - Verificador de Seguridad de Go

Inspecciona el código fuente en busca de problemas de seguridad escaneando el AST de Go y la representación de código SSA.

Enlaces rápidos

  • GitHub Action
  • Local installation
  • Quick start
  • Common usage patterns
  • Selecting rules
  • Output formats

Características

  • Reglas basadas en patrones para detectar problemas de seguridad comunes en código Go
  • Analizadores basados en SSA para conversiones de tipo, límites de slices y problemas de criptografía
  • Análisis de flujo de datos (taint analysis) para rastrear el flujo de datos desde la entrada del usuario hasta funciones peligrosas (inyección SQL, inyección de comandos, path traversal, SSRF, XSS, inyección de logs, inyección SMTP, SSTI, deserialización insegura, redirección abierta)

Licencia

Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"). No puede usar este archivo excepto en cumplimiento de la Licencia. Puede obtener una copia de la Licencia aquí.

Estado del proyecto

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

Instalación

GitHub Action

Puede ejecutar gosec como una GitHub action de la siguiente manera:

Use la etiqueta versionada con @master que está fijada a la última versión estable. Esto proporcionará un comportamiento estable.```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:~
#### Escaneo de proyectos con módulos privados

Si tu proyecto importa módulos Go privados, necesitas configurar la autenticación para que `gosec` pueda obtener las dependencias. Establece las siguientes variables de entorno en tu flujo de trabajo:

- `GOPRIVATE`: Una lista separada por comas de prefijos de rutas de módulos que deben considerarse privados (por ejemplo, `github.com/your-org/*`).
- `GITHUB_AUTHENTICATION_TOKEN`: Un token de GitHub con acceso de lectura a tus repositorios 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: ./...

Integración con el escaneo de código

Puede integrar herramientas de análisis de código de terceros con el escaneo de código de GitHub subiendo datos como archivos SARIF.

El flujo de trabajo muestra un ejemplo de ejecución de gosec como un paso en un flujo de trabajo de GitHub Action que produce el archivo results.sarif. Luego, el flujo de trabajo sube el archivo results.sarif a GitHub utilizando la acción 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:~
### Análisis de Go

El paquete `goanalysis` proporciona un
[`golang.org/x/tools/go/analysis.Analyzer`](https://pkg.go.dev/golang.org/x/tools/go/analysis)
para la integración con herramientas que soportan la interfaz
estándar de análisis de Go, como el 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"],
)

Instalación Local

gosec requiere Go 1.25 o más reciente.```bash go install github.com/securego/gosec/v2/cmd/gosec@latest

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

  • 0: escaneo finalizado sin hallazgos/errores no suprimidos
  • 1: al menos un hallazgo no suprimido o error de procesamiento
  • Usa -no-fail para devolver siempre 0

Uso

Gosec se puede configurar para ejecutar solo un subconjunto de reglas, excluir ciertas rutas de archivo y generar informes en diferentes formatos. De forma predeterminada, todas las reglas se ejecutarán sobre los archivos de entrada proporcionados. Para escanear recursivamente desde el directorio actual, puedes proporcionar ./... como argumento de entrada.

Reglas disponibles

gosec incluye reglas en estas categorías:

  • G1xx: problemas generales de codificación segura (por ejemplo, credenciales codificadas, uso inseguro, endurecimiento HTTP, seguridad de cookies)
  • G2xx: riesgos de inyección en la construcción de consultas/plantillas/comandos
  • G3xx: riesgos en el manejo de archivos y rutas (permisos, path traversal, archivos temporales, extracción de archivos)
  • G4xx: debilidades de criptografía y TLS
  • G5xx: importaciones en lista negra
  • G6xx: comprobaciones de corrección/seguridad específicas de Go (por ejemplo, alias de rango y límites de slice)
  • G7xx: reglas de análisis de taint (inyección SQL, inyección de comandos, path traversal, SSRF, XSS, log, inyección SMTP, SSTI, deserialización insegura y redirección abierta)

Para la lista completa, descripciones de reglas y configuración por regla, consulta RULES.md.

Reglas retiradas

  • G105: Auditar el uso de math/big.Int.Exp - CVE corregido
  • G307: Aplazar un método que devuelve un error - causando más inconvenientes que solucionar un problema de seguridad, a pesar de los detalles de esta publicación de blog

Selección de reglas

De forma predeterminada, gosec ejecutará todas las reglas sobre las rutas de archivo proporcionadas. Sin embargo, es posible seleccionar un subconjunto de reglas para ejecutar mediante el flag -include=, o especificar un conjunto de reglas para excluir explícitamente usando el flag -exclude=.```bash

Run a specific set of rules

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

Run everything except for rule G303

$ gosec -exclude=G303 ./...

root@kitploit:~
### Mapeo de CWE

Cada problema detectado por `gosec` se mapea a un
[CWE (Common Weakness Enumeration)](http://cwe.mitre.org/data/index.html)
que describe en términos más generales la vulnerabilidad. El
mapeo exacto se puede encontrar
[aquí](https://github.com/securego/gosec/blob/master/issue/issue.go#L50).

### Configuración

Se pueden proporcionar varias configuraciones globales en un archivo
de configuración de la siguiente manera:```JSON
{
    "global": {
        "nosec": "enabled",
        "audit": "enabled"
    }
}
  • nosec: esta configuración sobrescribirá todas las directivas #nosec definidas en toda la base de código
  • audit: se ejecuta en modo auditoría que habilita verificaciones adicionales que para el análisis de código normal podrían ser demasiado entrometidas```bash

Run with a global configuration file

$ gosec -conf config.json .

root@kitploit:~
### Exclusiones de reglas basadas en rutas

Los repositorios grandes con múltiples componentes pueden necesitar diferentes
reglas de seguridad para diferentes rutas. Use `exclude-rules` para
suprimir reglas específicas para rutas específicas.

**Archivo de configuración:**```json
{
  "exclude-rules": [
    {
      "path": "cmd/.*",
      "rules": ["G204", "G304"]
    },
    {
      "path": "scripts/.*",
      "rules": ["*"]
    }
  ]
}

Bandera de 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:~
| Campo | Tipo | Descripción |
|-------|------|-------------|
| `path` | string (regex) | Regex que coincide con rutas de archivos |
| `rules` | []string | IDs de reglas a excluir. `*` para todas |

#### Configuración de reglas

Algunas reglas también aceptan banderas de configuración; estas banderas están documentadas en
[RULES.md](https://github.com/securego/gosec/blob/master/RULES.md).

#### Versión de Go

Algunas reglas requieren una versión específica de Go que se obtiene del archivo de módulo Go presente en el proyecto. Si no se puede encontrar esta versión, se recurrirá a la versión de ejecución de Go.

La versión del módulo Go se analiza usando el comando `go list`, lo que en algunos casos puede provocar degradación del rendimiento. En esta situación, la versión del módulo Go se puede proporcionar fácilmente estableciendo la variable de entorno `GOSECGOVERSION=go1.21.1`.

### Dependencias

gosec carga paquetes usando módulos de Go. En la mayoría de los proyectos, las dependencias se resuelven automáticamente durante el escaneo.

Si faltan dependencias, ejecute:```bash
go mod tidy
go mod download

Excluir archivos y carpetas de prueba

gosec ignorará los archivos de prueba en todos los paquetes y cualquier dependencia en su directorio vendor.

El escaneo de archivos de prueba se puede habilitar con la siguiente bandera:```bash gosec -tests ./...

root@kitploit:~
También se pueden excluir carpetas adicionales de la siguiente manera:```bash
 gosec -exclude-dir=rules -exclude-dir=cmd ./...

Excluyendo archivos generados

gosec puede ignorar los archivos go generados con el comentario de código generado por defecto.``` // Code generated by some generator DO NOT EDIT.

root@kitploit:~
# Tecnologías utilizadas

- Python 3.x
- [dnstwist](https://github.com/elceef/dnstwist) - Motor de permutación de nombres de dominio
- [Shodan](https://www.shodan.io) - Motor de búsqueda para dispositivos conectados a Internet
- [Nmap](https://nmap.org) - Escaneo de redes
- [PyPi library](https://pypi.org/project/borealiscanner/) - Instalar y ejecutar con pip
- Docker - Entorno contenerizado```bash
gosec -exclude-generated ./...

Corrección automática de vulnerabilidades

gosec puede sugerir correcciones basadas en recomendaciones de IA. Llamará a una API de IA para recibir una sugerencia para un hallazgo de seguridad.

Puedes habilitar esta función proporcionando los siguientes argumentos de línea de comandos:

  • ai-api-provider: el nombre del proveedor de la API de IA. Proveedores compatibles:
    • Atlas Cloud: atlas (modelo predeterminado deepseek-ai/deepseek-v4-flash), atlas-deepseek-v4-flash, atlas-qwen3-coder-next, atlas-kimi-k2.6, o atlas:<model-id> para cualquier modelo de chat alojado en Atlas Cloud. Atlas Cloud es un proveedor compatible con OpenAI disponible en atlascloud.ai
    • Gemini: gemini-3-pro-preview (predeterminado), gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite
    • Claude: claude-sonnet-4-6 (predeterminado), , , , ,

🎁 Atlas Cloud es una plataforma de inferencia de IA multimodal que brinda a los desarrolladores una única API de IA para acceder a APIs de generación de video, generación de imágenes y LLM. En lugar de gestionar múltiples integraciones de proveedores, te conectas una vez y obtienes acceso unificado a más de 300 modelos seleccionados en todas las modalidades.

Consulta la nueva promoción del plan de codificación de Atlas Cloud para un acceso a la API más económico: https://www.atlascloud.ai/console/coding-plan

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

root@kitploit:~
### Anotando código

Como con todas las herramientas de detección automatizadas, habrá casos de
falsos positivos. En los casos donde gosec reporte un fallo que
ha sido verificado manualmente como seguro, es posible
anotar el código con un comentario que comience con `#nosec`.

El comentario `#nosec` debe tener el formato
`#nosec [RuleList] [-- Justification]`.

El comentario `#nosec` debe colocarse en la línea donde se
reporta la advertencia.```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)
	}
}

Cuando se ha identificado y verificado un falso positivo concreto como seguro, es posible que desees suprimir solo esa regla (o un conjunto específico de reglas) dentro de una sección de código, mientras sigues escaneando en busca de otros problemas. Para ello, puedes listar la(s) regla(s) que se suprimirán dentro de la anotación #nosec, por ejemplo: /* #nosec G401 */ o //#nosec G201 G202 G203

Puedes incluir la descripción o el texto de justificación para la anotación. La justificación debe ir después de la(s) regla(s) a suprimir y comenzar con dos o más guiones, por ejemplo: //#nosec G101 G102 -- Este es un falso positivo

Alternativamente, gosec también admite la directiva //gosec:disable, que funciona de manera similar a #nosec:```go //gosec:disable G101 -- This is a false positive

root@kitploit:~
En algunos casos también es posible que quieras revisar los lugares donde se han usado anotaciones `#nosec` o `//gosec:disable`. Para ejecutar el escáner e ignorar cualquier anotación `#nosec` puedes hacer lo siguiente:```bash
gosec -nosec=true ./...

Requerir IDs de reglas y justificaciones

Para evitar que las anotaciones supriman inadvertidamente reglas no relacionadas, o que se añadan sin explicación, gosec acepta dos indicadores opt-in. Ambos tienen como valor predeterminado false, por lo que las bases de código existentes continúan funcionando sin cambios.

  • -nosec-require-rules rechaza directivas #nosec / //gosec:disable desnudas que no enumeren ningún ID de regla.
  • -nosec-require-justification rechaza directivas que no incluyan un -- justification después de la lista de reglas.

Cuando está habilitado, una directiva que falla la verificación ya no suprime ningún hallazgo y se reporta como un error en la salida, junto con cualquier problema subyacente en la línea.```bash gosec -nosec-require-rules -nosec-require-justification ./...

root@kitploit:~
Las mismas opciones se pueden configurar mediante el bloque de configuración global:```json
{
    "global": {
        "nosec-require-rules": "enabled",
        "nosec-require-justification": "enabled"
    }
}

Seguimiento de supresiones

Como se describió anteriormente, podemos suprimir violaciones externamente (usando -include/-exclude) o en línea (usando anotaciones #nosec). Los metadatos de supresión se pueden emitir para auditoría.

Habilite el seguimiento de supresiones con -track-suppressions:```bash gosec -track-suppressions -exclude=G101
-fmt=sarif -out=results.sarif ./...

root@kitploit:~
- Para supresiones externas, gosec registra información de supresión
  donde `kind` es `external` y `justification` es
  `Globally suppressed.`.
- Para supresiones en línea, gosec registra información de supresión
  donde `kind` es `inSource` y `justification` es el texto
  después de dos o más guiones en el comentario.

**Nota:** Solo los formatos SARIF y JSON admiten el seguimiento
de supresiones.

### Etiquetas de compilación

gosec es capaz de pasar tus
[Go build tags](https://pkg.go.dev/go/build/) al analizador.
Se pueden proporcionar como una lista separada por comas de la siguiente manera:```bash
gosec -tags debug,ignore ./...

Formatos de salida

gosec soporta text, json, yaml, csv, junit-xml, html, sonarqube, golint, y sarif. Por defecto, los resultados se reportarán a stdout, pero también se pueden escribir en un archivo de salida. El formato de salida se controla mediante la bandera -fmt, y el archivo de salida se controla mediante la bandera -out de la siguiente manera:```bash

Write output in json format to results.json

$ gosec -fmt=json -out=results.json *.go

root@kitploit:~
Use `-stdout` para imprimir resultados mientras también escribe `-out`. Use `-verbose` para sobrescribir el formato de stdout mientras se preserva el formato del archivo.```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

Nota: gosec genera el formato de importación de incidencias genérico para SonarQube, y un informe debe importarse en SonarQube usando sonar.externalIssuesReportPaths=path/to/gosec-report.json.

Patrones de uso comunes```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 ./...

root@kitploit:~
## Desarrollo

La documentación de desarrollo se trasladó a
[DEVELOPMENT.md](https://github.com/securego/gosec/blob/master/DEVELOPMENT.md).

## ¿Quién está usando gosec?

Esta es una [lista](https://github.com/securego/gosec/blob/master/USERS.md) con algunos de los usuarios de gosec.

## Patrocinadores

Apoya este proyecto convirtiéndote en patrocinador. Tu logo
aparecerá aquí con un enlace a tu sitio web

<a href="https://github.com/mercedes-benz" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/2947/08b6f9da5faff0e986172b0c77fed0865a2cb26e6f8c58a8ae588c74bcf16f5f.png"></a>
Descargar herramienta
claude-opus-4-7
claude-opus-4-6
claude-sonnet-4-5
claude-opus-4-5
claude-haiku-4-5
  • OpenAI: gpt-5.4 (predeterminado), gpt-5.4-mini, gpt-5.4-nano
  • Personalizado compatible con OpenAI: Cualquier nombre de modelo personalizado (requiere ai-base-url)
  • ai-api-key o establece la variable de entorno GOSEC_AI_API_KEY: la clave para acceder a la API de IA
    • Para Gemini, puedes crear una clave de API siguiendo estas instrucciones
    • Para Claude, obtén tu clave de API desde Anthropic Console
    • Para OpenAI, obtén tu clave de API desde OpenAI Platform
  • ai-base-url: (opcional) URL base personalizada para APIs compatibles con OpenAI (p. ej., Azure OpenAI, LocalAI, Ollama)
    • Atlas Cloud usa https://api.atlascloud.ai/v1 por defecto, por lo que ai-base-url es opcional para el proveedor atlas incorporado
  • GOSEC_AI_PROVIDER: (opcional) variable de entorno alternativa a ai-api-provider
  • GOSEC_AI_BASE_URL: (opcional) variable de entorno alternativa a ai-base-url
  • ai-skip-ssl: (opcional) omitir la verificación del certificado SSL para la API de IA (útil para certificados autofirmados)