
Eine Plattform zur statischen Quellcode-Analyse für AppSec-Enthusiasten.

Grepmarx ist eine Webanwendung, die eine einheitliche Plattform bietet, um schnell Schwachstellen in möglicherweise großen und unbekannten Codebasen zu verstehen, zu analysieren und zu identifizieren.
SAST-Funktionen (Statische Anwendungssicherheitstests):
SCA-Funktionen (Software Composition Analysis):
Zusätzlich
| Scan-Anpassung | Analyse-Workbench | Regelpaket-Bearbeitung |
|---|---|---|
![]() | ![]() | ![]() |
Grepmarx wird mit einer Konfiguration zur Ausführung in Docker und Gunicorn bereitgestellt.
Stellen Sie sicher, dass docker-compose auf dem System installiert ist und der Docker-Daemon läuft. Die Anwendung kann dann einfach in einem Docker-Container ausgeführt werden. Die Schritte:
Code holen
$ git clone https://github.com/Orange-Cyberdefense/grepmarx.git
$ cd grepmarx
App in Docker starten
$ sudo docker-compose pull && sudo docker-compose build && sudo docker-compose up -d
Rufen Sie http://localhost:5000 in Ihrem Browser auf. Die App sollte laufen.
Gunicorn 'Green Unicorn' ist ein Python-WSGI-HTTP-Server für UNIX. Eine Supervisor-Konfigurationsdatei wird bereitgestellt, um ihn zusammen mit dem erforderlichen Celery-Worker (für die Warteschlange von Sicherheitsscans) zu starten.
Mit pip installieren
$ pip install gunicorn supervisor
App mit dem gunicorn-Binärprogramm starten
$ supervisord -c supervisord.conf
Rufen Sie http://localhost:8001 in Ihrem Browser auf. Die App sollte laufen.
Um einen Scan durchzuführen, müssen Sie mindestens einen Eintrag in Administration/Repository manuell hinzufügen. Hier sind einige Beispiele für Semgrep/Opengrep-Regel-Repositories, die verwendet werden können:
https://github.com/opengrep/opengrep-rules: die Standardbibliothek für Opengrep-Regelnhttps://github.com/patched-codes/semgrep-rules: eine Sammlung von unter freizügigen Lizenzen stehenden Semgrep-Regelnhttps://github.com/trailofbits/semgrep-rules: von Trail of Bits entwickelte Semgrep-Regelnhttps://github.com/Decurity/semgrep-smart-contracts: Semgrep-Regeln, die nach Mustern von Schwachstellen in Smart Contracts suchenhttps://github.com/0xdea/semgrep-rules: Semgrep-Regeln von 0xdeahttps://github.com/mindedsecurity/semgrep-rules-android-security: Semgrep-Regeln, die aus dem OWASP MASTG speziell für Android-Anwendungen abgeleitet sindhttps://github.com/akabe1/akabe1-semgrep-rules: Sammlung von akabe1s benutzerdefinierten Semgrep-Regelnhttps://github.com/s0rcy/semgrep-rules: Sammlung von s0rcys persönlichen Semgrep-Regeln für Sicherheitsanalyse und ForschungStellen Sie sicher, dass Sie mit der LIZENZDATEI der von Ihnen verwendeten Regel-Repositories einverstanden sind und diese einhalten!
Zu diesem Zeitpunkt müssen Sie nur noch Regelpakete nach Ihren Bedürfnissen erstellen und dann Ihre Scans starten.
Code holen
$ git clone https://github.com/Orange-Cyberdefense/grepmarx.git
$ cd grepmarx
Virtuelle Umgebungsmodule installieren
$ virtualenv env
$ source env/bin/activate
Python-Module installieren
$ # SQLite-Datenbank (Entwicklung)
$ pip3 install -r requirements.txt
$ # ODER mit PostgreSQL-Connector (Produktion)
$ # pip install -r requirements-pgsql.txt
Zusätzliche Anforderungen installieren
# Abhängigkeitsscan-Anforderungen (cdxgen)
$ sudo apt install -y npm openjdk-17-jdk maven gradle golang composer
$ sudo npm install -g @cyclonedx/cdxgen
# Application Inspector-Abhängigkeiten
$ sudo apt install -y dotnet-runtime-8.0
Stellen Sie sicher, dass die Node.js-Version >= 20.X ist, sonst schlägt cdxgen fehl.
Ein Redis-Server ist erforderlich, um Sicherheitsscans in die Warteschlange zu stellen. Installieren Sie das
redis-Paket mit Ihrem bevorzugten Distribution-Paketmanager, dann:
$ redis-server
Die Umgebungsvariable FLASK_APP setzen
$ export FLASK_APP=run.py
$ # Set up the DEBUG environment
$ # export FLASK_ENV=development
Der Celery-Worker-Prozess wird gestartet
Ändern Sie die Parallelität, um die Anzahl der gleichzeitigen Scans zu erhöhen
$ celery -A app.celery_worker.celery worker --pool=prefork --loglevel=info --detach --concurrency=1 -Q scans
Die Anwendung starten (Entwicklungsmodus)
$ # --host=0.0.0.0 - expose the app on all network interfaces (default 127.0.0.1)
$ # --port=5000 - specify the app port (default 5000)
$ flask run --host=0.0.0.0 --port=5000
grepmarx im Browser aufrufen: http://127.0.0.1:5000/
Grepmarx – Bereitgestellt von Orange Cyberdefense.