Skip to main content
Glama
shivasurya

code-pathfinder

by shivasurya

Webseite · Dokumentation · Regelverzeichnis · MCP-Server · Blog

Build GitHub Release Apache-2.0 License GitHub Stars Ask DeepWiki


Schnellstart

Installation:

brew install shivasurya/tap/pathfinder

Ein Python-Projekt scannen (Regeln werden automatisch heruntergeladen):

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

Dockerfiles scannen:

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

Keine Konfigurationsdateien, keine API-Schlüssel, keine Cloud-Konten. Ergebnisse in Sekunden im Terminal.


Related MCP server: CodeAudit Agent

Was ist Code Pathfinder?

Code Pathfinder ist eine Open-Source-Engine für statische Analysen, die einen Graphen Ihrer Codebasis erstellt und nachverfolgt, wie Daten durch sie fließen. Sie parst Quellcode in abstrakte Syntaxbäume, erstellt Aufrufgraphen über Dateien hinweg und führt Taint-Analysen durch, um Source-to-Sink-Schwachstellen zu finden, die sich über mehrere Dateien und Funktionsgrenzen erstrecken.

v2.0 führt die dateiübergreifende Datenflussanalyse ein: Verfolgen Sie Benutzereingaben von einem HTTP-Handler in einer Datei durch Hilfsfunktionen bis hin zu einer SQL-Abfrage in einer anderen Datei. Dies ist die Art von Analyse, die Mustervergleichswerkzeuge völlig übersehen.

Dateiübergreifende Taint-Analyse

Die meisten Open-Source-SAST-Tools arbeiten mit einzelnen Dateien. Code Pathfinder v2.0 verfolgt kontaminierte Daten über Dateigrenzen hinweg:

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

Die Engine erstellt einen Variablenabhängigkeitsgraphen (VDG) pro Funktion und verbindet sie dann durch zusammenfassende Informationen zur prozedurübergreifenden Taint-Übertragung. Wenn user_input in einen Funktionsparameter in einer anderen Datei fließt, breitet sich die Kontamination über den Aufrufgraphen bis zur Senke aus.

So funktioniert es

Source Code → Tree-sitter AST → Call Graph → Variable Dependency Graph → Taint Analysis → Findings
                                     ↓
                              Inter-procedural
                              Taint Summaries
                              (cross-file flows)
  1. Parsen: Tree-sitter erstellt ASTs für Python, Dockerfiles und Docker-Compose-Dateien

  2. Indizieren: Extrahiert Funktionen, Aufrufstellen, Parameter und Zuweisungen in einen abfragbaren Aufrufgraphen

  3. Analysieren: Erstellt VDGs pro Funktion, löst prozedurübergreifende Flüsse auf, führt Taint-Analyse durch

  4. Erkennen: Python-basierte Sicherheitsregeln durchsuchen den Graphen nach Source-to-Sink-Pfaden

  5. Berichten: Gibt Ergebnisse als Text, JSON, SARIF (GitHub-Code-Scanning) oder CSV aus

190 Sicherheitsregeln, einsatzbereit

Regeln werden automatisch vom CDN heruntergeladen. Kein Klonen des Repos oder Verwalten von Regeldateien erforderlich.

Sprache

Bündel

Regeln

Abdeckung

Python

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

158

SQL-Injection, RCE, SSRF, Path Traversal, XSS, Deserialisierung, Krypto-Fehlgebrauch, JWT-Schwachstellen

Docker

security, best-practice, performance

37

Root-Benutzer, offengelegte Geheimnisse, Image-Pinning, Multi-Stage-Builds, Layer-Optimierung

Docker Compose

security, networking

10

Privilegierter Modus, Socket-Exposition, Capability-Eskalation, Netzwerk-Isolation

# 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 .

Durchsuchen Sie alle Regeln mit Beispielen und Testfällen im Regelverzeichnis.

MCP-Server für KI-Codierungsassistenten

Code Pathfinder läuft als MCP-Server und gibt Claude Code, Cursor, Cline und anderen KI-Assistenten Zugriff auf Aufrufgraphen, Datenflüsse und Sicherheitsanalysen. Mehr Kontext als LSP, fokussiert auf Sicherheit und Codestruktur.

pathfinder serve --project .

Der MCP-Server stellt Werkzeuge zur Abfrage des Codegraphen bereit: Aufrufer/Calldaten finden, Datenflüsse verfolgen, nach Mustern suchen und Sicherheitsregeln ausführen – alles dem KI-Assistenten während der Codeüberprüfung oder Entwicklung verfügbar.

Eigene Regeln schreiben

Sicherheitsregeln sind Python-Skripte, die das PathFinder SDK verwenden. Definieren Sie Quellen, Senken und Bereiniger – die Datenfluss-Engine übernimmt die Analyse.

Hier ist eine echte Regel aus dem Repository (PYTHON-DJANGO-SEC-001), die SQL-Injection in Django erkennt:

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 .

Erkunden Sie alle 190 Regeln im Verzeichnis rules/ oder durchsuchen Sie das Regelverzeichnis. Lesen Sie den Leitfaden zum Schreiben von Regeln und die Datenflussdokumentation, um eigene Regeln zu schreiben.

Siehe den Leitfaden zum Schreiben von Regeln und die Datenflussdokumentation für weitere Informationen.

Installation

Homebrew (Empfohlen)

brew install shivasurya/tap/pathfinder

pip

Installiert die CLI-Binärdatei und das Python SDK zum Schreiben von Regeln.

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

Vorgefertigte Binärdateien

Laden Sie von GitHub Releases für Linux (amd64, arm64), macOS (Intel, Apple Silicon) und Windows (x64) herunter.

Aus dem Quellcode

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

Verwendung

# 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

GitHub-Aktion

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

Siehe das vollständige Beispiel: .github/workflows/code-pathfinder-scan.yml

Eingabe

Beschreibung

Standard

rules

Pfad zu lokalen Python-Regeldateien oder -verzeichnis

-

ruleset

Entfernte Regelsätze, durch Komma getrennt (z. B. python/all, docker/security)

-

project

Pfad zum Quellcode

.

output

Ausgabeformat: sarif, json oder csv

sarif

output-file

Ausgabedateipfad

pathfinder-results.sarif

fail-on

Fehlschlagen bei Schweregraden (z. B. critical,high)

-

verbose

Ausführliche Ausgabe aktivieren

false

debug

Debug-Diagnose mit Zeitstempeln aktivieren

false

skip-tests

Testdateien überspringen

true

refresh-rules

Zwischengespeicherte Regelsätze zwangsweise aktualisieren

false

disable-metrics

Anonyme Nutzungsmetriken deaktivieren

false

python-version

Zu verwendende Python-Version

3.12

pr-comment

Zusammenfassungskommentar auf Pull-Request veröffentlichen

false

pr-inline

Inline-Review-Kommentare für kritische/hohe Funde veröffentlichen

false

github-token

GitHub-Token (erforderlich, wenn pr-comment oder pr-inline aktiviert ist)

-

no-diff

Diff-bewusstes Scannen deaktivieren (alle Dateien scannen)

false

Entweder rules oder ruleset ist erforderlich.

Unterstützte Sprachen

Sprache

Analyse

Status

Python

Dateiübergreifender Datenfluss, Taint-Analyse, Aufrufgraphen

Stabil

Dockerfile

Anweisungsanalyse, Sicherheitsmuster

Stabil

Docker Compose

Konfigurationsanalyse, Sicherheitsmuster

Stabil

Go

AST-Analyse, Aufrufgraphen

Bald verfügbar

Mitwirken

Beiträge sind willkommen. Lesen Sie den Leitfaden zum Mitwirken für Einrichtungsanweisungen, wie Sie Tests lokal ausführen und den PR-Prozess.

Eine produktinterne Ankündigung veröffentlichen

Produktinterne Ankündigungen (Workshops, Blogbeiträge, Sicherheitshinweise) werden über release/latest.json verwaltet. Fügen Sie einen Eintrag zu announcements[] hinzu, eröffnen Sie einen PR, und sobald er in main gemergt wird, lädt der Veröffentlichungs-Workflow das Manifest innerhalb von etwa 60 Sekunden auf das CDN hoch. Siehe die technische Spezifikation zur Versionsprüfung für das Schema und die version_range-Semantik.

Alle Mitwirkenden müssen die Contributor License Agreement (CLA) unterzeichnen, bevor ein Pull-Request gemergt werden kann.

Lizenz

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