
A source code static analysis platform for AppSec enthusiasts.

Grepmarx is a web application providing a single platform to quickly understand, analyze and identify vulnerabilities in possibly large and unknown code bases.
SAST (Static Analysis Security Testing) capabilities:
SCA (Software Composition Analysis) capabilities:
Extra
| Scan customization | Analysis workbench | Rule pack edition |
|---|---|---|
![]() | ![]() | ![]() |
Grepmarx is provided with a configuration to be executed in Docker and Gunicorn.
Make sure you have docker-composer installed on the system, and the docker daemon is running. The application can then be easily executed in a docker container. The steps:
Get the code
$ git clone https://github.com/Orange-Cyberdefense/grepmarx.git
$ cd grepmarx
Start the app in Docker
$ sudo docker-compose pull && sudo docker-compose build && sudo docker-compose up -d
Visit http://localhost:5000 in your browser. The app should be up & running.
Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX. A supervisor configuration file is provided to start it along with the required Celery worker (used for security scans queuing).
Install using pip
$ pip install gunicorn supervisor
Start the app using gunicorn binary
$ supervisord -c supervisord.conf
Visit http://localhost:8001 in your browser. The app should be up & running.
In order to run a scan you will need to manually add at least one entry in Administration/Repository. Here are a few examples of Semgrep/Opengrep rule repositories which can be used:
https://github.com/opengrep/opengrep-rules: the standard library for Opengrep ruleshttps://github.com/patched-codes/semgrep-rules: a collection of permissively licensed Semgrep ruleshttps://github.com/trailofbits/semgrep-rules: semgrep rules developed by Trail of Bitshttps://github.com/Decurity/semgrep-smart-contracts: semgrep rules that look for patterns of vulnerabilities in smart contractshttps://github.com/0xdea/semgrep-rules: semgrep rules by 0xdeahttps://github.com/mindedsecurity/semgrep-rules-android-security: Semgrep rules derived from the OWASP MASTG specifically for Android applicationshttps://github.com/akabe1/akabe1-semgrep-rules: collection of akabe1's custom Semgrep ruleshttps://github.com/s0rcy/semgrep-rules: collection of s0rcy's personal Semgrep rules for security analysis and researchMake sure you agree & comply with the LICENSE file of the rules repositories you use!
At this stage, all you have to do is create Rules Packs according to your needs and then launch your scans.
Get the code
$ git clone https://github.com/Orange-Cyberdefense/grepmarx.git
$ cd grepmarx
Install virtualenv modules
$ virtualenv env
$ source env/bin/activate
Install Python modules
$ # SQLite Database (Development)
$ pip3 install -r requirements.txt
$ # OR with PostgreSQL connector (Production)
$ # pip install -r requirements-pgsql.txt
Install additionnal requirements
# Dependency scan requirements (cdxgen)
$ sudo apt install -y npm openjdk-17-jdk maven gradle golang composer
$ sudo npm install -g @cyclonedx/cdxgen
# Application Inspector dependencies
$ sudo apt install -y dotnet-runtime-8.0
Make sure nodejs version is >= 20.X, otherwise cdxgen will fail.
A Redis server is required to queue security scans. Install the
redispackage with your favorite distro package manager, then:
$ redis-server
Set the FLASK_APP environment variable
$ export FLASK_APP=run.py
$ # Set up the DEBUG environment
$ # export FLASK_ENV=development
Start the celery worker process
Change concurrency for increase the simultaneous scans number
$ celery -A app.celery_worker.celery worker --pool=prefork --loglevel=info --detach --concurrency=1 -Q scans
Start the application (development mode)
$ # --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
Access grepmarx in browser: http://127.0.0.1:5000/
Grepmarx - Provided by Orange Cyberdefense.