Semgrep es una herramienta de análisis estático, rápida y de código abierto que busca código, encuentra errores y aplica medidas de seguridad y estándares de codificación seguros. Semgrep admite más de 30 idiomas y puede ejecutarse en un IDE, como verificación previa a la confirmación y como parte de flujos de trabajo de CI/CD.
Semgrep es un grep semántico para código. Mientras que ejecutar grep "2"
solo coincidiría con la cadena exacta 2 , Semgrep coincidiría con x = 1; y = x + 1
cuando se busca 2 . Las reglas de Semgrep se parecen al código que ya escribe; sin árboles de sintaxis abstracta, lucha de expresiones regulares o DSL dolorosos.
Tenga en cuenta que en contextos de seguridad, Semgrep OSS perderá muchos aspectos positivos, ya que solo puede analizar código dentro de los límites de una única función o archivo. Si desea utilizar Semgrep por motivos de seguridad ( SAST , SCA o escaneo de secretos ), se recomienda encarecidamente la plataforma Semgrep AppSec, ya que agrega las siguientes capacidades críticas:
La plataforma Semgrep AppSec funciona de forma inmediata con más de 20 000 reglas patentadas en SAST, SCA y secretos. El equipo de investigación de seguridad de Semgrep escribe y mantiene las reglas profesionales y son muy precisas, lo que significa que los equipos de AppSec pueden sentirse seguros de llevar los hallazgos directamente a los desarrolladores sin ralentizarlos.
Semgrep analiza el código localmente en su computadora o en su entorno de compilación: de forma predeterminada, el código nunca se carga . Comience →.
El código Semgrep admite más de 30 idiomas, incluidos:
Apex · Bash · C · C++ · C# · Clojure · Dart · Dockerfile · Elixir · HTML · Go · Java · JavaScript · JSX · JSON · Julia · Jsonnet · Kotlin · Lisp · Lua · OCaml · PHP · Python · R · Ruby · Rust · Scala · Scheme · Solidez · Swift · Terraform · TypeScript · TSX · YAML · XML · Genérico (ERB, Jinja, etc.)
Semgrep Supply Chain admite 12 idiomas en 15 administradores de paquetes, que incluyen:
C# (NuGet) · Dart (Pub) · Go (módulos Go, go mod
) · Java (Gradle, Maven) · Javascript/Typescript (npm, Yarn, Yarn 2, Yarn 3, pnpm) · Kotlin (Gradle, Maven) · PHP (Compositor) · Python (pip, pip-tool, Pipenv, Poetry) · Ruby (RubyGems) · Rust (Cargo) · Scala (Maven) · Rápido (SwiftPM)
Para obtener más información, consulte Idiomas admitidos.
Para los nuevos usuarios, recomendamos comenzar con la plataforma Semgrep AppSec porque proporciona una interfaz visual, un proyecto de demostración, flujos de trabajo de exploración y clasificación de resultados, y agiliza la configuración en CI/CD. Los escaneos aún son locales y el código no se carga. Alternativamente, también puede comenzar con la CLI y navegar por la salida del terminal para ejecutar búsquedas únicas.
Regístrese en semgrep.dev
Explore los resultados de la demostración para aprender cómo funciona Semgrep
Escanee su proyecto navegando a Projects > Scan New Project > Run scan in CI
Seleccione su sistema de control de versiones y siga los pasos de incorporación para agregar su proyecto. Después de esta configuración, Semgrep escaneará su proyecto después de cada solicitud de extracción.
[Opcional] Si desea ejecutar Semgrep localmente, siga los pasos en la sección CLI.
Si hay algún problema, solicite ayuda en Semgrep Slack.
# For macOS
$ brew install semgrep
# For Ubuntu/WSL/Linux/macOS
$ python3 -m pip install semgrep
# To try Semgrep without installation run via Docker
$ docker run -it -v "${PWD}:/src" semgrep/semgrep semgrep login
$ docker run -e SEMGREP_APP_TOKEN=<TOKEN> --rm -v "${PWD}:/src" semgrep/semgrep semgrep ci
semgrep login
para crear su cuenta e iniciar sesión en Semgrep.Iniciar sesión en Semgrep le da acceso a:
Vaya al directorio raíz de su aplicación y ejecute semgrep ci
. Esto escaneará su proyecto para buscar vulnerabilidades en su código fuente y sus dependencias.
Intente escribir su propia consulta de forma interactiva con -e
. Por ejemplo, una comprobación de Python == donde los lados izquierdo y derecho son iguales (potencialmente un error): $ semgrep -e '$X == $X' --lang=py path/to/src
El ecosistema Semgrep incluye lo siguiente:
Semgrep OSS: el motor de análisis de programas de código abierto en el corazón de todo. Adecuado para casos de uso ad hoc con una alta tolerancia a los falsos positivos: piense en consultores, auditores de seguridad o pentesters.
Plataforma Semgrep AppSec: organice y escale fácilmente el escaneo SAST, SCA y Secrets en toda una organización, sin riesgo de abrumar a los desarrolladores. Personalice qué hallazgos ven los desarrolladores, dónde los ven e intégrelos con proveedores de CI como GitHub, GitLab, CircleCI y más. Incluye niveles gratuitos y de pago.
Código Semgrep (SAST): realice un progreso real en su acumulación de vulnerabilidades con SAST que minimiza el ruido y permite a los desarrolladores solucionar rápidamente los problemas por sí mismos, incluso si no tienen conocimientos de seguridad. Las barreras de seguridad fáciles de implementar y las instrucciones de solución paso a paso personalizadas significan que los desarrolladores realmente solucionan los problemas, ya que no se sienten ralentizados.
Semgrep Supply Chain (SSC): un escáner de dependencia de alta señal que detecta vulnerabilidades alcanzables en bibliotecas y funciones de código abierto de terceros.
Semgrep Secrets (escaneo de secretos): detección de secretos que utiliza análisis semántico, análisis de entropía mejorado y validación para mostrar con precisión credenciales confidenciales en el flujo de trabajo del desarrollador.
Asistente de Semgrep (AI): Assistant es un ingeniero de AppSec impulsado por IA que ayuda tanto a los desarrolladores como a los equipos de AppSec a priorizar, clasificar y remediar los hallazgos de Semgrep a escala. Los seres humanos están de acuerdo con las decisiones de clasificación automática del Asistente el 97 % de las veces y califican la orientación de remediación generada como útil el 80 % de las veces. Para obtener una descripción general de cómo funciona el Asistente, lea esta descripción general.
Recursos adicionales:
Únase a cientos de miles de desarrolladores e ingenieros de seguridad que ya utilizan Semgrep en empresas como GitLab, Dropbox, Slack, Figma, Shopify, HashiCorp, Snowflake y Trail of Bits.
Semgrep está desarrollado y respaldado comercialmente por Semgrep, Inc., una empresa de seguridad de software.
Las reglas de Semgrep se parecen al código que ya escribe; sin árboles de sintaxis abstracta, lucha de expresiones regulares o DSL dolorosos. Aquí hay una regla rápida para encontrar declaraciones print()
de Python.
Ejecútelo en línea en Semgrep's Playground haciendo clic aquí.
Visite Documentos > Ejemplos de reglas para casos de uso e ideas.
Caso de uso | regla semgrep |
---|---|
Prohibir API peligrosas | Impedir el uso de ejecutivo |
Rutas de búsqueda y autenticación. | Extraer rutas de primavera |
Hacer cumplir el uso de valores predeterminados seguros | Configurar de forma segura las cookies de Flask |
Datos contaminados que fluyen hacia los sumideros | Flujo de datos ExpressJS en sandbox.run |
Hacer cumplir las mejores prácticas del proyecto | Utilice afirmarEqual para == comprobaciones, comprobar siempre las llamadas de subproceso |
Codificar el conocimiento específico del proyecto | Verificar transacciones antes de realizarlas |
Auditar puntos de acceso de seguridad | Encontrar XSS en Apache Airflow, credenciales codificadas |
Archivos de configuración de auditoría | Encuentre usos de ARN de S3 |
Migrar desde API obsoletas | DES está en desuso, API de Flask en desuso, API de Bokeh en desuso |
Aplicar correcciones automáticas | Utilice listenAndServeTLS |
Visite Documentos > Extensiones para aprender a usar Semgrep en su editor o realizar una confirmación previa. Cuando se integra en CI y se configura para escanear solicitudes de extracción, Semgrep solo informará los problemas introducidos por esa solicitud de extracción; ¡Esto le permite comenzar a usar Semgrep sin solucionar o ignorar problemas preexistentes!
Explore la documentación completa de Semgrep en el sitio web. Si es nuevo en Semgrep, consulte Documentos > Introducción o el tutorial interactivo.
El uso de la configuración remota desde el Registro (como --config=p/ci
) informa métricas de reglas seudónimas a semgrep.dev.
El uso de configuraciones de archivos locales (como --config=xyz.yml
) no habilita las métricas.
Para deshabilitar las métricas de las reglas del Registro, use --metrics=off
.
La política de privacidad de Semgrep describe los principios que guían las decisiones de recopilación de datos y el desglose de los datos que se recopilan y no se recopilan cuando las métricas están habilitadas.
Para actualizar, ejecute el siguiente comando asociado con cómo instaló Semgrep:
# Using Homebrew
$ brew upgrade semgrep
# Using pip
$ python3 -m pip install --upgrade semgrep
# Using Docker
$ docker pull semgrep/semgrep:latest