Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 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.9k701133hace 7h 43mRevisado 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 - Comprobador de seguridad para 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.

<img src="https://assets.kitploit.com/production/public/readmes/2947/83d294db3a312bcea542b6eb8261128e6f09b50a95271788fe301e164b1655b1.png" width="320">

## Enlaces rápidos

- [GitHub Action](#github-action)
- [Instalación local](#local-installation)
- [Inicio rápido](#quick-start)
- [Patrones de uso comunes](#common-usage-patterns)
- [Selección de reglas](#selecting-rules)
- [Formatos de salida](#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 tipos, límites de slices
  y problemas criptográficos
- **Análisis de taint** 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 Apache License, Version 2.0 (la "Licencia").
No puede usar este archivo excepto en cumplimiento con la Licencia.
Puede obtener una copia de la Licencia
[aquí](http://www.apache.org/licenses/LICENSE-2.0).

## Estado del proyecto

[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/3218/badge)](https://bestpractices.coreinfrastructure.org/projects/3218)
[![Build Status](https://github.com/securego/gosec/workflows/CI/badge.svg)](https://github.com/securego/gosec/actions?query=workflows%3ACI)
[![Coverage Status](https://codecov.io/gh/securego/gosec/branch/master/graph/badge.svg)](https://codecov.io/gh/securego/gosec)
[![GoReport](https://goreportcard.com/badge/github.com/securego/gosec)](https://goreportcard.com/report/github.com/securego/gosec)
[![GoDoc](https://pkg.go.dev/badge/github.com/securego/gosec/v2)](https://pkg.go.dev/github.com/securego/gosec/v2)
[![Docs](https://readthedocs.org/projects/docs/badge/?version=latest)](https://securego.io/)
[![Downloads](https://img.shields.io/github/downloads/securego/gosec/total.svg)](https://github.com/securego/gosec/releases)
[![GHCR](https://img.shields.io/badge/ghcr.io-securego/gosec-blue)](https://github.com/orgs/securego/packages/container/package/gosec)
[![Slack](https://img.shields.io/badge/Slack-4A154B?style=for-the-badge&logo=slack&logoColor=white)](http://securego.slack.com)
[![go-recipes](https://raw.githubusercontent.com/nikolaydubina/go-recipes/main/badge.svg?raw=true)](https://github.com/nikolaydubina/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: ./...
```

#### 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

Puedes [integrar herramientas de análisis de código de terceros](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/integrating-with-code-scanning)
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 Actions que genera el archivo `results.sarif`.
A continuación, el flujo de trabajo sube el archivo `results.sarif` a
GitHub usando 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
```

### 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 admiten la interfaz de análisis
estándar 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 superior.

```bash
go install github.com/securego/gosec/v2/cmd/gosec@latest
```

## 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`: el escaneo finalizó sin hallazgos/errores no suprimidos
- `1`: al menos un hallazgo no suprimido o error de procesamiento
- Use `-no-fail` para devolver siempre `0`

## Uso

Gosec se puede configurar para ejecutar solo un subconjunto de reglas, para
excluir ciertas rutas de archivos y para producir informes en diferentes
formatos. Por defecto, todas las reglas se ejecutarán contra los archivos de
entrada proporcionados. Para escanear de forma recursiva desde el directorio
actual, puede 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 de forma rígida, uso inseguro, endurecimiento de HTTP, seguridad de cookies)
- `G2xx`: riesgos de inyección en la construcción de consultas/plantillas/comandos
- `G3xx`: riesgos de manejo de archivos y rutas (permisos, recorrido de rutas,
  archivos temporales, extracción de archivos)
- `G4xx`: debilidades de criptografía y TLS
- `G5xx`: importaciones en lista de bloqueo
- `G6xx`: comprobaciones de corrección/seguridad específicas de Go (por ejemplo,
  alias de rango y límites de slices)
- `G7xx`: reglas de análisis de contaminación (inyección SQL, inyección de
  comandos, recorrido de rutas, SSRF, XSS, inyección de log, inyección de SMTP,
  SSTI, deserialización insegura y redirección abierta)

Para obtener la lista completa, las descripciones de las reglas y la
configuración por regla, consulte [RULES.md](https://github.com/securego/gosec/blob/master/RULES.md).

### Reglas retiradas

- G105: Auditar el uso de math/big.Int.Exp -
  [CVE corregido](https://github.com/golang/go/issues/15184)
- G307: Diferir un método que devuelve un error - causa más inconvenientes que
  corregir un problema de seguridad, a pesar de los detalles de esta
  [publicación de blog](https://www.joeshaw.org/dont-defer-close-on-writable-files/)

### Selección de reglas

Por defecto, gosec ejecutará todas las reglas contra las rutas de archivos
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 ./...
```

### 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 genéricos 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 una serie de ajustes 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 todo el código base
- `audit`: se ejecuta en modo auditoría, lo que habilita comprobaciones adicionales
  que para el análisis de código normal podrían ser demasiado intrusivas

```bash
# Run with a global configuration file
$ gosec -conf config.json .
```

### Exclusiones de reglas basadas en rutas

Los repositorios grandes con múltiples componentes pueden necesitar diferentes
reglas de seguridad para diferentes rutas. Utilice `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": ["*"]
    }
  ]
}
```

**Flag 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" ./...
```

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `path` | string (regex) | Regex que se compara con las rutas de archivo |
| `rules` | []string | IDs de reglas a excluir. `*` para todas |

#### Configuración de reglas

Algunas reglas también aceptan indicadores de configuración; estos indicadores están
documentados 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 de Go presente en el proyecto. Si esta versión
no se puede encontrar, se usará como alternativa la versión del entorno de ejecución de Go.

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

### Dependencias

gosec carga los 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
```

### Exclusión de archivos y carpetas de prueba

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

El escaneo de archivos de prueba se puede habilitar con el siguiente
flag:

```bash
gosec -tests ./...
```

También se pueden excluir carpetas adicionales de la siguiente manera:

```bash
 gosec -exclude-dir=rules -exclude-dir=cmd ./...
```

### Exclusión de archivos generados

gosec puede ignorar archivos Go generados con el comentario de código generado predeterminado.

```
// Code generated by some generator DO NOT EDIT.
```

```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 sobre 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](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=gosec)
  - **Gemini**: `gemini-3.1-pro-preview` (predeterminado),
    `gemini-2.5-pro`, `gemini-2.5-flash`,
    `gemini-2.5-flash-lite`
  - **Claude**: `claude-sonnet-4-6` (predeterminado),
    `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`
  - **OpenAI-compatible personalizado**: 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](https://ai.google.dev/gemini-api/docs/api-key)
  - Para Claude, obtén tu clave de API desde
    [Anthropic Console](https://console.anthropic.com/)
  - Para OpenAI, obtén tu clave de API desde
    [OpenAI Platform](https://platform.openai.com/api-keys)
- `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` de forma predeterminada,
    por lo que `ai-base-url` es opcional para el proveedor `atlas`
    integrado
- `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)

> 🎁 **[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=gosec)** es una plataforma de inferencia de IA multimodal completa que ofrece a los desarrolladores una única API de IA para acceder a la generación de video, la generación de imágenes y las APIs de 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 programación de Atlas Cloud para obtener un acceso a la API más económico: [https://www.atlascloud.ai/console/coding-plan](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.1-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 \
  ./...
```

### Anotación del código

Como con todas las herramientas de detección automatizada, habrá casos de
falsos positivos. En los casos en que gosec reporte un fallo que
haya 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 un falso positivo específico y se ha verificado
que es seguro, es posible que desees suprimir únicamente esa regla (o un
conjunto específico de reglas) dentro de una sección de código, mientras
continúas escaneando en busca de otros problemas. Para hacer esto, puedes listar
la(s) regla(s) a suprimir dentro de la anotación `#nosec`,
p. ej.: `/* #nosec G401 */` o `//#nosec G201 G202 G203`

Puedes incluir el texto de descripción o 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,
p. ej.: `//#nosec G101 G102 -- This is a false positive`

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
```

En algunos casos, también puede querer revisar los lugares donde se han utilizado anotaciones `#nosec` o `//gosec:disable`. Para ejecutar el escáner e ignorar cualquier anotación `#nosec`, puede 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 flags opcionales. Ambos tienen el valor predeterminado `false`, por lo que las bases de código existentes siguen funcionando sin cambios.

- `-nosec-require-rules` rechaza las directivas desnudas `#nosec` / `//gosec:disable` que no enumeran ningún ID de regla.
- `-nosec-require-justification` rechaza las directivas que no llevan una `-- justification` después de la lista de reglas.

Cuando están habilitadas, una directiva que no supera la comprobació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 ./...
```

Las mismas opciones se pueden establecer mediante el bloque de configuración global:

```json
{
    "global": {
        "nosec-require-rules": "enabled",
        "nosec-require-justification": "enabled"
    }
}
```

### Seguimiento de supresiones

Como se describió anteriormente, podríamos suprimir infracciones de forma externa
(usando `-include`/`-exclude`) o en línea (usando anotaciones `#nosec`).
Los metadatos de supresión pueden emitirse para auditoría.

Habilite el seguimiento de supresiones con `-track-suppressions`:

```bash
gosec -track-suppressions -exclude=G101 \
  -fmt=sarif -out=results.sarif ./...
```

- Para las supresiones externas, gosec registra la información de supresión
  donde `kind` es `external` y `justification` es
  `Globally suppressed.`.
- Para las supresiones en línea, gosec registra la 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 puede pasar tus
[etiquetas de compilación de Go](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 admite `text`, `json`, `yaml`, `csv`, `junit-xml`,
`html`, `sonarqube`, `golint` y `sarif`. De forma predeterminada,
los resultados se informarán en stdout, pero también se pueden escribir en
un archivo de salida. El formato de salida se controla mediante el flag `-fmt`,
y el archivo de salida se controla mediante el flag `-out` de la
siguiente manera:

```bash
# Write output in json format to results.json
$ gosec -fmt=json -out=results.json *.go
```

Use `-stdout` para imprimir los resultados mientras también escribe `-out`.
Use `-verbose` para anular el formato de stdout mientras se conserva 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 problemas genéricos](https://docs.sonarqube.org/latest/analysis/generic-issue/)
para SonarQube, y se debe importar un informe 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 ./...
```

## Desarrollo

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

## ¿Quién usa 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 logotipo 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