
Uma plataforma de análise estática de código fonte para entusiastas de AppSec.

O Grepmarx é uma aplicação web que oferece uma plataforma única para compreender, analisar e identificar rapidamente vulnerabilidades em bases de código possivelmente grandes e desconhecidas.
Funcionalidades SAST (Static Analysis Security Testing - Testes de Segurança de Análise Estática):
Funcionalidades SCA (Software Composition Analysis - Análise de Composição de Software):
Extra
| Personalização da varredura | Workbench de análise | Edição de pacote de regras |
|---|---|---|
![]() | ![]() | ![]() |
O Grepmarx é fornecido com uma configuração para ser executado em Docker e Gunicorn.
Certifique-se de ter o docker-compose instalado no sistema e o daemon docker em execução. A aplicação pode então ser facilmente executada em um contêiner docker. As etapas:
Obter o código
$ git clone https://github.com/Orange-Cyberdefense/grepmarx.git
$ cd grepmarx
Iniciar a aplicação no Docker
$ sudo docker-compose pull && sudo docker-compose build && sudo docker-compose up -d
Visite http://localhost:5000 no seu navegador. A aplicação deve estar em funcionamento.
Gunicorn 'Green Unicorn' é um servidor HTTP Python WSGI para UNIX. Um arquivo de configuração do supervisor é fornecido para iniciá-lo junto com o worker Celery necessário (usado para fila de varreduras de segurança).
Instalar usando pip
$ pip install gunicorn supervisor
Iniciar a aplicação usando o binário gunicorn
$ supervisord -c supervisord.conf
Visite http://localhost:8001 no seu navegador. A aplicação deve estar em funcionamento.
Para executar uma varredura, você precisará adicionar manualmente pelo menos uma entrada em Administration/Repository. Aqui estão alguns exemplos de repositórios de regras Semgrep/Opengrep que podem ser usados:
https://github.com/opengrep/opengrep-rules: a biblioteca padrão para regras Opengrephttps://github.com/patched-codes/semgrep-rules: uma coleção de regras Semgrep com licenças permissivashttps://github.com/trailofbits/semgrep-rules: regras semgrep desenvolvidas pela Trail of Bitshttps://github.com/Decurity/semgrep-smart-contracts: regras semgrep que buscam padrões de vulnerabilidades em contratos inteligenteshttps://github.com/0xdea/semgrep-rules: regras semgrep por 0xdeahttps://github.com/mindedsecurity/semgrep-rules-android-security: regras Semgrep derivadas do OWASP MASTG especificamente para aplicações Androidhttps://github.com/akabe1/akabe1-semgrep-rules: coleção de regras Semgrep personalizadas de akabe1https://github.com/s0rcy/semgrep-rules: coleção de regras Semgrep pessoais de s0rcy para análise e pesquisa de segurançaCertifique-se de concordar e cumprir o arquivo LICENSE dos repositórios de regras que você usa!
Neste ponto, tudo o que você precisa fazer é criar Pacotes de Regras de acordo com suas necessidades e então iniciar suas varreduras.
Obter o código
$ git clone https://github.com/Orange-Cyberdefense/grepmarx.git
$ cd grepmarx
Instalar módulos virtualenv
$ virtualenv env
$ source env/bin/activate
Instalar módulos Python
$ # SQLite Database (Development)
$ pip3 install -r requirements.txt
$ # OR with PostgreSQL connector (Production)
$ # pip install -r requirements-pgsql.txt
Instalar requisitos adicionais
# 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
Certifique-se de que a versão do nodejs seja >= 20.X, caso contrário, o cdxgen falhará.
Um servidor Redis é necessário para enfileirar varreduras de segurança. Instale o pacote
rediscom o gerenciador de pacotes da sua distribuição favorita, então:
$ redis-server
Defina a variável de ambiente FLASK_APP
$ export FLASK_APP=run.py
$ # Set up the DEBUG environment
$ # export FLASK_ENV=development
Inicie o processo do worker celery
Altere a concorrência para aumentar o número de varreduras simultâneas
$ celery -A app.celery_worker.celery worker --pool=prefork --loglevel=info --detach --concurrency=1 -Q scans
Inicie a aplicação (modo de desenvolvimento)
$ # --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
Acesse grepmarx no navegador: http://127.0.0.1:5000/
Grepmarx - Fornecido por Orange Cyberdefense