Skip to main content
Glama
shivasurya

code-pathfinder

by shivasurya

Sitio web · Documentación · Registro de reglas · Servidor MCP · Blog

Build GitHub Release Licencia Apache-2.0 Estrellas de GitHub Preguntar a DeepWiki


Inicio rápido

Instalación:

brew install shivasurya/tap/pathfinder

Escanea un proyecto Python (las reglas se descargan automáticamente):

pathfinder scan --ruleset python/all --project .

Escanea Dockerfiles:

pathfinder scan --ruleset docker/all --project .

Sin archivos de configuración, sin claves API, sin cuentas en la nube. Resultados en tu terminal en segundos.


Related MCP server: CodeAudit Agent

¿Qué es Code Pathfinder?

Code Pathfinder es un motor de análisis estático de código abierto que construye un grafo de tu base de código y rastrea cómo fluyen los datos a través de él. Analiza el código fuente en Árboles de Sintaxis Abstracta, construye grafos de llamadas entre archivos y ejecuta análisis de contaminación para encontrar vulnerabilidades de origen a sumidero que abarcan múltiples archivos y límites de funciones.

v2.0 introduce análisis de flujo de datos entre archivos: rastrea la entrada del usuario desde un manejador HTTP en un archivo a través de funciones auxiliares hasta una consulta SQL en otro archivo. Este es el tipo de análisis que las herramientas de coincidencia de patrones pasan por alto por completo.

Análisis de Contaminación entre Archivos

La mayoría de las herramientas SAST de código abierto operan en archivos individuales. Code Pathfinder v2.0 rastrea datos contaminados a través de los límites de los archivos:

app.py:5    user_input = request.get("query")     ← Source: user-controlled input
  ↓ calls
db.py:12    cursor.execute(query)                  ← Sink: SQL execution

El motor construye un Grafo de Dependencia de Variables (VDG) por función, luego los conecta mediante resúmenes de transferencia de contaminación interprocedimental. Cuando user_input fluye hacia un parámetro de función en otro archivo, la contaminación se propaga a través del grafo de llamadas hasta el sumidero.

Cómo funciona

Source Code → Tree-sitter AST → Call Graph → Variable Dependency Graph → Taint Analysis → Findings
                                     ↓
                              Inter-procedural
                              Taint Summaries
                              (cross-file flows)
  1. Analizar: Tree-sitter construye ASTs para Python, Dockerfiles y archivos Docker Compose

  2. Indexar: Extrae funciones, sitios de llamada, parámetros y asignaciones en un grafo de llamadas consultable

  3. Analizar: Construye VDGs por función, resuelve flujos interprocedimentales, ejecuta análisis de contaminación

  4. Detectar: Las reglas de seguridad basadas en Python consultan el grafo para encontrar rutas de origen a sumidero

  5. Informar: Muestra los hallazgos como texto, JSON, SARIF (Escaneo de Código de GitHub) o CSV

190 Reglas de Seguridad, Listas para Usar

Las reglas se descargan desde CDN automáticamente. No es necesario clonar el repositorio ni gestionar archivos de reglas.

Lenguaje

Paquetes

Reglas

Cobertura

Python

django, flask, aws_lambda, cryptography, jwt, lang, deserialization, pyramid

158

Inyección SQL, RCE, SSRF, path traversal, XSS, deserialización, mal uso criptográfico, vulnerabilidades JWT

Docker

security, best-practice, performance

37

Usuario root, secretos expuestos, fijación de imagen, builds multi-etapa, optimización de capas

Docker Compose

security, networking

10

Modo privilegiado, exposición de sockets, escalada de capacidades, aislamiento de red

# Scan with a specific bundle
pathfinder scan --ruleset python/django --project .

# Scan with multiple bundles
pathfinder scan --ruleset python/flask --ruleset python/jwt --project .

# Scan a single rule
pathfinder scan --ruleset python/PYTHON-DJANGO-SEC-001 --project .

# Scan all rules for a language
pathfinder scan --ruleset python/all --project .

Explora todas las reglas con ejemplos y casos de prueba en el Registro de reglas.

Servidor MCP para Asistentes de Codificación con IA

Code Pathfinder funciona como un servidor MCP, proporcionando a Claude Code, Cursor, Cline y otros asistentes de IA acceso a grafos de llamadas, flujos de datos y análisis de seguridad. Más contexto que LSP, centrado en seguridad y estructura del código.

pathfinder serve --project .

El servidor MCP expone herramientas para consultar el grafo de código: encontrar llamantes/llamados, rastrear flujos de datos, buscar patrones y ejecutar reglas de seguridad, todo disponible para el asistente de IA durante la revisión o el desarrollo de código.

Escribir Reglas Personalizadas

Las reglas de seguridad son scripts de Python que utilizan el SDK de PathFinder. Define fuentes, sumideros y sanitizadores; el motor de flujo de datos maneja el análisis.

Aquí hay una regla real del repositorio (PYTHON-DJANGO-SEC-001) que detecta inyección SQL en Django:

from codepathfinder import calls, flows, QueryType
from codepathfinder.presets import PropagationPresets

class DBCursor(QueryType):
    fqns = ["sqlite3.Cursor", "psycopg2.extensions.cursor"]
    match_subclasses = True

@python_rule(
    id="PYTHON-DJANGO-SEC-001",
    name="Django SQL Injection via cursor.execute()",
    severity="CRITICAL",
    cwe="CWE-89",
)
def detect_django_cursor_sqli():
    return flows(
        from_sources=[
            calls("request.GET.get"),
            calls("request.POST.get"),
        ],
        to_sinks=[
            DBCursor.method("execute").tracks(0),
            calls("cursor.execute"),
        ],
        sanitized_by=[calls("escape"), calls("escape_string")],
        propagates_through=PropagationPresets.standard(),
        scope="global",  # cross-file taint analysis
    )
# Run your custom rules
pathfinder scan --rules ./my_rules/ --project .

Explora las 190 reglas en el directorio rules/ o navega por el Registro de reglas. Consulta la guía de escritura de reglas y la documentación de flujo de datos para escribir las tuyas propias.

Consulta la guía de escritura de reglas y la documentación de flujo de datos para más información.

Instalación

Homebrew (Recomendado)

brew install shivasurya/tap/pathfinder

pip

Instala el binario CLI y el SDK de Python para escribir reglas.

pip install codepathfinder

Docker

docker pull shivasurya/code-pathfinder:stable-latest

docker run --rm -v "$(pwd):/src" \
  shivasurya/code-pathfinder:stable-latest \
  scan --ruleset python/all --project /src

Binarios Precompilados

Descarga desde GitHub Releases para Linux (amd64, arm64), macOS (Intel, Apple Silicon) y Windows (x64).

Desde el Código Fuente

git clone https://github.com/shivasurya/code-pathfinder
cd code-pathfinder/sast-engine
gradle buildGo
./build/go/pathfinder --help

Uso

# Scan with text output (default)
pathfinder scan --ruleset python/all --project .

# JSON output
pathfinder scan --ruleset python/all --project . --output json --output-file results.json

# SARIF output (GitHub Code Scanning)
pathfinder scan --ruleset python/all --project . --output sarif --output-file results.sarif

# CSV output
pathfinder scan --ruleset python/all --project . --output csv --output-file results.csv

# Fail CI on critical/high findings
pathfinder scan --ruleset python/all --project . --fail-on=critical,high

# MCP server mode
pathfinder serve --project .

# Verbose output with statistics
pathfinder scan --ruleset python/all --project . --verbose

Acción de GitHub

name: Code Pathfinder Security SAST Scan

on:
  pull_request:

permissions:
  security-events: write
  contents: read
  pull-requests: write

jobs:
  security-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: Run Security Scan
        uses: shivasurya/code-pathfinder@v2.1.1
        with:
          ruleset: python/all, docker/all, docker-compose/all
          verbose: true
          pr-comment: ${{ github.event_name == 'pull_request' }}
          pr-inline: ${{ github.event_name == 'pull_request' }}
          github-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v4
        if: always()
        with:
          sarif_file: pathfinder-results.sarif

Consulta el ejemplo completo: .github/workflows/code-pathfinder-scan.yml

Entrada

Descripción

Por defecto

rules

Ruta a archivos de reglas Python locales o directorio

-

ruleset

Conjunto(s) de reglas remoto(s), separados por comas (ej. python/all, docker/security)

-

project

Ruta al código fuente

.

output

Formato de salida: sarif, json o csv

sarif

output-file

Ruta del archivo de salida

pathfinder-results.sarif

fail-on

Fallar en severidades (ej. critical,high)

-

verbose

Habilitar salida detallada

false

debug

Habilitar diagnósticos de depuración con marcas de tiempo

false

skip-tests

Omitir archivos de prueba

true

refresh-rules

Forzar actualización de conjuntos de reglas en caché

false

disable-metrics

Deshabilitar métricas de uso anónimas

false

python-version

Versión de Python a usar

3.12

pr-comment

Publicar comentario resumen en pull request

false

pr-inline

Publicar comentarios de revisión en línea para hallazgos críticos/altos

false

github-token

Token de GitHub (requerido cuando pr-comment o pr-inline está habilitado)

-

no-diff

Deshabilitar escaneo consciente de diferencias (escanear todos los archivos)

false

Se requiere rules o ruleset.

Lenguajes Soportados

Lenguaje

Análisis

Estado

Python

Flujo de datos entre archivos, análisis de contaminación, grafos de llamadas

Estable

Dockerfile

Análisis de instrucciones, patrones de seguridad

Estable

Docker Compose

Análisis de configuración, patrones de seguridad

Estable

Go

Análisis AST, grafos de llamadas

Próximamente

Contribuir

Las contribuciones son bienvenidas. Lee la Guía de Contribución para instrucciones de configuración, cómo ejecutar pruebas localmente y el proceso de PR.

Publicar un anuncio dentro del producto

Los anuncios dentro del producto (talleres, publicaciones de blog, avisos de seguridad) se gestionan a través de release/latest.json. Añade una entrada a announcements[], abre un PR, y una vez que se fusione en main, el flujo de trabajo de publicación sube el manifiesto al CDN en aproximadamente 60 segundos. Consulta la especificación técnica de verificación de actualización de versión para el esquema y la semántica de version_range.

Todos los contribuyentes deben firmar el Acuerdo de Licencia de Contribuyente (CLA) antes de que cualquier pull request pueda ser fusionado.

Licencia

Apache-2.0

A
license - permissive license
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    -
    quality
    C
    maintenance
    MCP server for AI coding agents that builds a complete code structure graph and semantic vector index, enabling fast querying of code entities, relationships, and impact analysis.
    78
    8
  • A
    license
    -
    quality
    A
    maintenance
    A production-ready MCP server that enables AI assistants to intelligently understand, analyze, edit, navigate, and review software projects with multi-workspace support, Git integration, and semantic search.
    MIT

View all related MCP servers

Related MCP Connectors

  • Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.

  • Hosted MCP server for structured code review passes on human- and AI-written code. Free tier.

  • Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shivasurya/code-pathfinder'

If you have feedback or need assistance with the MCP directory API, please join our Discord server