
Una colección de mis reglas de Semgrep para facilitar la investigación de vulnerabilidades.
"La superficie de ataque es la vulnerabilidad. Encontrar un bug allí es solo un detalle."
-- Mark Dowd
"Algunos detalles son más importantes que otros."
-- Fedor G. Pikus
Una colección de mis reglas de Semgrep para facilitar la investigación de vulnerabilidades.
# high priority scan (quick wins)
semgrep --severity ERROR --config "p/0xdea"
# high and medium priority scan (recommended)
semgrep --severity ERROR --severity WARNING --config "p/0xdea"
# full scan (might include marginal findings and more false positives)
semgrep --config "p/0xdea"
Alternativamente, puedes clonar este repositorio de GitHub localmente y ejecutar:
# full scan
semgrep --config semgrep-rules/rules /path/to/source
# specific rule scan
semgrep --config semgrep-rules/rules/c/command-injection.yaml /path/to/source
[!TIP] Usa el modificador
--no-git-ignorepara escanear archivos independientemente del estado de seguimiento de git o de las reglas de.gitignore.
Para una experiencia más ágil, recomiendo guardar la salida del escaneo de Semgrep en formato SARIF y usar SARIF Explorer en VS Code:
semgrep --sarif --sarif-output=/path/to/source/SEMGREP.sarif --config semgrep-rules/rules /path/to/source
code /path/to/source # then open the SEMGREP.sarif file in VS code with SARIF Explorer
Consulta también el ejemplo de salida SARIF incluido.
Probado con Semgrep CLI 1.169.0.
Conjunto de reglas C (y a veces C++) probado en combate.
gets.strcpy, stpcpy, strcat.sprintf y vsprintf.scanf.strncat.strncpy, , y variantes.strlen a short puede ser peligroso.alloca.free.free.free sobre memoria que no está en el heap.malloc, calloc, realloc, etc.putenv con una variable asignada en la pila.system o popen.access, stat, lstat, etc.mktemp, tmpnam, tempnam.signal.setuid y seteuid.memset.rand y srand.scanf.atoi, atol, atof.Estas reglas se consideran potencialmente demasiado ruidosas e inadecuadas para el uso general.
--time contra código del mundo real para detectar reglas lentas que necesiten optimización.memcpysnprintfsizeof sobre un puntero en lugar de su objetivo.strncpy y stpncpy.snprintf y vsnprintf.strlcpy y strlcat.