Joern ist eine Plattform zur Analyse von Quellcode, Bytecode und binären ausführbaren Dateien. Es generiert Code-Property-Graphs (CPGs), eine grafische Darstellung des Codes für die sprachübergreifende Code-Analyse. Codeeigenschaftsdiagramme werden in einer benutzerdefinierten Diagrammdatenbank gespeichert. Dies ermöglicht das Mining von Code mithilfe von Suchanfragen, die in einer Scala-basierten domänenspezifischen Abfragesprache formuliert sind. Joern wurde mit dem Ziel entwickelt, ein nützliches Werkzeug zur Schwachstellenerkennung und -forschung in der statischen Programmanalyse bereitzustellen.
Website: https://joern.io
Dokumentation: https://docs.joern.io/
Spezifikation: https://cpg.joern.io
overflowdb.traversal.Traversal
. Diese Änderung ist nicht vollständig abwärtskompatibel. Eine ausführliche Beschreibung finden Sie hier. wget https://github.com/joernio/joern/releases/latest/download/joern-install.sh
chmod +x ./joern-install.sh
sudo ./joern-install.sh
joern
██╗ ██████╗ ███████╗██████╗ ███╗ ██╗
██║██╔═══██╗██╔════╝██╔══██╗████╗ ██║
██║██║ ██║█████╗ ██████╔╝██╔██╗ ██║
██ ██║██║ ██║██╔══╝ ██╔══██╗██║╚██╗██║
╚█████╔╝╚██████╔╝███████╗██║ ██║██║ ╚████║
╚════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝
Version: 2.0.1
Type `help` to begin
joern>
Wenn das Installationsskript aus irgendeinem Grund fehlschlägt, versuchen Sie es
./joern-install --interactive
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern joern
So führen Sie joern im Servermodus aus:
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern joern --server
Für Almalinux 9 muss die CPU SSE4.2 unterstützen. Verwenden Sie für kvm64-VMs stattdessen die Almalinux 8-Version.
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern-alma8 joern
Einmal täglich wird automatisch ein neues Release erstellt. Mitwirkende können den Veröffentlichungsworkflow auch manuell ausführen, wenn sie die Veröffentlichung früher benötigen.
Vielen Dank, dass Sie sich die Zeit genommen haben, zu Joern beizutragen! Hier sind ein paar Richtlinien, um sicherzustellen, dass Ihre Pull-Anfrage so schnell wie möglich zusammengeführt wird:
[javasrc2cpg] Addition Operator Fix
.sbt scalafmt Test/scalafmt
aussbt
in Ihrem lokalen Jörn-Repository, führen Sie compile
aus und lassen Sie es geöffnet – so können wir im nächsten Schritt den BSP-Build verwendenBSP project
geöffnet werden soll (d. h. nicht als sbt project
!)Build -> build project
oder einen Test ausführen ms-vscode-remote.remote-containers
Folder contains a Dev Container configuration file. Reopen to folder to develop in a container.
Reopen in Container
um den Ordner im Container, der durch die Datei .devcontainer/Dockerfile
erstellt wurde, erneut zu öffnenscalameta.metals
und wählen Sie import build
in BUILD COMMANDS
ausimport build
erfolgreich war, können Sie mit dem Schreiben von Code für Joern beginnen Schnelle Möglichkeit, QueryDB zu entwickeln und zu testen:
sbt stage
./querydb-install.sh
./joern-scan --list-query-names
Der letzte Befehl druckt alle verfügbaren Abfragen – fügen Sie Ihre eigene in querydb hinzu und führen Sie die obigen Befehle erneut aus, um zu sehen, dass Ihre Abfrage bereitgestellt wurde. Weitere Details finden Sie in der separaten Querydb-Readme-Datei