Semgrep: revisá la seguridad de tu código con un comando.

Semgrep lee todo tu proyecto y te marca claves a la vista, consultas que se pueden inyectar y comandos peligrosos, con el archivo y la línea exacta.

maticastro.ar/semgrep-seguridad
Want to follow it with your AI?

Copy the whole guide and paste it into Claude, ChatGPT or Codex: it walks you through it and helps when something doesn't work.

Qué es Semgrep

Semgrep es una herramienta de análisis estático: lee tu código sin ejecutarlo y lo compara contra reglas que describen errores de seguridad conocidos. Funciona como alguien que revisa tu proyecto línea por línea. No es una IA: trabaja con reglas.

Su motor, Semgrep Community Edition, es gratis y de código abierto, con licencia LGPL-2.1. Analiza más de 30 lenguajes, entre ellos JavaScript, TypeScript, Python, Java, Go y PHP.

Sirve para encontrar cosas que no ves probando la app, aunque funcione bien:

Problema Qué significa
Clave a la vista Una clave secreta, por ejemplo de pagos, escrita directamente en el código
Inyección SQL Una consulta a la base armada con lo que escribe el usuario: cualquiera puede manipular la base
Inyección de comandos Un comando del servidor armado con datos del usuario: cualquiera podría ejecutar lo que quiera

Es una primera revisión, no una garantía: el propio README avisa que la versión gratis se pierde muchos problemas reales, porque analiza dentro de una función o de un archivo.

Cómo usarlo

  1. Instalalo. En Linux o macOS, pipx install semgrep lo deja aislado del resto del sistema; también sirve python3 -m pip install semgrep o, en macOS, brew install semgrep. En Windows el soporte está en beta: instalá Python marcando la opción de agregar python.exe al PATH, y en PowerShell corré [System.Environment]::SetEnvironmentVariable('PYTHONUTF8', '1', 'User') y después pipx install semgrep.
  2. Entrá a la carpeta de tu proyecto. Abrí una terminal dentro de la carpeta que querés revisar.
  3. Corré el escaneo. semgrep scan --config p/default . No necesitás crear ninguna cuenta. Si además querés que no envíe métricas de uso, sumá --metrics off: semgrep scan --config p/default --metrics off .
  4. Leé los hallazgos. Arriba aparece la cantidad total («Code Findings»). Cada hallazgo trae el archivo, la línea, una explicación en inglés de cómo arreglarlo y un enlace sg.run/… a la regla que lo detectó.
  5. Corregí y volvé a correrlo. Arreglá cada línea marcada y repetí el comando hasta que no queden hallazgos que te importen.

Qué encontró en una app de prueba

Una app Flask de 20 líneas con cuatro fallas puestas a propósito. El escaneo, sin login, terminó en 3 segundos con 8 hallazgos en app.py:

Línea Falla Reglas que la marcaron
6 Clave de Stripe (sk_live_…) escrita en el código detected-stripe-api-key
12 Consulta SQL armada con request.args sqlalchemy-execute-raw-query, django…tainted-sql-string, flask…tainted-sql-string
17 subprocess.check_output(..., shell=True) con un parámetro del usuario subprocess-injection, dangerous-subprocess-use, subprocess-shell-true
20 app.run(debug=True) debug-enabled

Una misma falla puede aparecer marcada por varias reglas: por eso cuatro fallas dan ocho hallazgos.

Qué sale gratis y qué no

Opción Cuenta Costo
semgrep scan --config p/default . en tu compu No Gratis
semgrep ci (integración continua) Sí, con semgrep login Según plan
Plataforma, Free Edition Sí Gratis hasta 10 colaboradores
Plataforma, Teams: Code o Supply Chain Sí USD 30 por mes por colaborador, cada uno
Plataforma, Teams: Secrets Sí USD 15 por mes por colaborador

Para revisar tu proyecto como en el video no hace falta ningún plan.

Qué tenés que saber

  • Tu código se revisa en tu compu, pero Semgrep baja las reglas de su registro y, salvo que uses --metrics off, envía métricas de uso.
  • --config auto también existe, pero usa la URL de tu proyecto para pedir reglas al registro. --config p/default no lo necesita.
  • Las explicaciones salen en inglés.

Si algo falla

  • Si el comando termina sin error pero ves hallazgos, es normal: semgrep scan por defecto no devuelve código de error aunque encuentre problemas.
  • Si te pide iniciar sesión, fijate que estés usando semgrep scan y no semgrep ci, que es el que pide cuenta.
  • Si no te marca nada, no quiere decir que tu app sea segura: la versión gratis se pierde problemas que cruzan funciones o archivos.
  • Si no querés que se envíen métricas de uso, agregá --metrics off al comando.
  • Si no entendés una explicación, abrí el enlace sg.run/… del hallazgo para ver la regla completa.

README de semgrep/semgrep en GitHub, referencia de la CLI y página de precios de semgrep.dev, guía de inicio de docs.semgrep.dev, más una prueba propia con Semgrep 1.181.0 en Linux; datos revisados el 2026-10-17

Want to follow it with your AI?

Copy the whole guide and paste it into Claude, ChatGPT or Codex: it walks you through it and helps when something doesn't work.

A new tip every day on my socialsTikTok @matidevvInstagram @matidevv

Let's talk about your project

Write to me describing what you need and I will reply. If a call or a meeting works better for you, we can arrange that too.

Message sent

Thanks for writing. I will reply to the email you left, and if a call is easier for you we can arrange one.
Email
maticastrook@gmail.com
Where
San Juan, Argentina · remote
Languages
Native Spanish · technical English