En un artículo anterior exploramos qué es Semgrep y cómo esta herramienta revolucionó el análisis estático moderno permitiendo detectar vulnerabilidades de forma rápida y eficiente.
Sin embargo, una de sus características más potentes no es solamente ejecutar reglas predefinidas, sino la posibilidad de construir reglas personalizadas adaptadas a nuestras propias necesidades de seguridad.
En este artículo vamos a aprender cómo crear nuestras primeras custom rules en Semgrep utilizando YAML, patrones de código y casos prácticos orientados a AppSec.
¿Qué son las reglas en Semgrep?
Semgrep funciona a través de reglas declarativas.
Cada regla describe:
- Qué patrón buscar
- Qué lenguaje analizar
- Qué mensaje mostrar
- Qué severidad asignar
Desglose:

id : Identificador único.
pattern : Patrón a detectar.
message : Mensaje mostrado al detectar coincidencia.
languages : Lenguaje soportado.
severity : Nivel de criticidad.
Referencia útil: Semgrep Rule Syntax Docs
Ejemplo práctico
Dentro de un directorio de trabajo agregamos un archivo llamado rule.yaml y agregamos nuestra regla custom.

Para ejecutar semgrep desde una implementación de docker ejecutamos el siguiente comando.
$ sudo docker run –rm -it \
-v «${PWD}/custom/:/opt/» \
-v «/home/dmaldonado/proyecto:/src/» \
semgrep/semgrep:latest \
semgrep scan –config /opt/rule.yaml /src
En la ejecución de este docker, necesitamos cargar dos volúmenes, el primero es donde se encuentra el directorio donde se encuentra rule.yaml, con las reglas creadas para revisar. El segundo volúmen cargamos donde se encuentra el proyecto con todos los archivos .py

Conclusión
La verdadera potencia de Semgrep no está únicamente en sus reglas públicas, sino en la posibilidad de adaptar el motor de análisis a las necesidades específicas de cada organización.
Crear reglas personalizadas permite automatizar revisiones de seguridad, detectar patrones inseguros propios del negocio y fortalecer procesos DevSecOps de manera escalable.
0 comentarios