Tool
Joern
Static code analysis platform that parses source code, JVM bytecode and executables into code property graphs held in a graph database and queried with a Scala-based language from an interactive shell or server mode. Frontends cover C/C++, Java, JavaScript, Python, Kotlin, PHP, Go, Ruby, Swift, C#, Rust and ABAP source, JVM bytecode and APK/DEX files through Soot, and binaries loaded through an embedded Ghidra, which the documentation lists as x86/x64 support. It adds a static taint-tracking engine, the joern-scan query database of vulnerability patterns, and export of AST, CFG, PDG or whole-graph views to DOT, GraphML, GraphSON or Neo4j CSV.
Requirements & limits
- Release at review: v4.0.660, published 2026-10-19; the README says releases are created automatically once a day, and the reviewed master commit is three commits ahead of that tag. Each release ships joern-cli zips for Linux, macOS and Windows on x86_64 and arm64 plus joern-install.sh, and the README also documents ghcr.io/joernio/joern Docker images, with an AlmaLinux 8 variant for CPUs without SSE4.2.
- The README requires JDK 21 and says other versions have not been properly tested; gcc and g++ are optional, for discovering C/C++ system headers. Source builds use sbt, with an experimental partial Bazel setup. Inputs are the user's own source trees, class, JAR, APK or DEX files, or executables.
- Binary support is the ghidra2cpg frontend, built on a bundled Ghidra 12.2 package. It has specific passes for MIPS and ARM/AArch64 and routes every other processor through its x86 pass; its README notes that varargs are not handled properly. The documentation's maturity table rates C/C++ and Java very high, JavaScript, Python and x86/x64 via Ghidra high, JVM bytecode, Kotlin, PHP, Go and Swift medium, and Ruby and C# medium-low; the Rust and ABAP frontends in the reviewed tree are not rated there.
- Apache-2.0; CITATION.cff still names version 2.0, released 2024-01-18. The project describes itself as a tool for vulnerability discovery and static program analysis research; query and taint results describe the generated graph, not observed runtime behavior. No REA connection is established, and nothing was built, installed or run for this review.
About this entry
- Type
- Tool
- Category
- Native analysis tools
- Relationship
- Foundation tool
- Targets
- App · Binary
Sources reviewed
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · joernio/joern · Revision 7f886b3
- https://docs.joern.io/
- joern-cli/frontends/ghidra2cpg/README.md GitHub · joernio/joern · Revision 7f886b3
- joern-cli/frontends/ghidra2cpg/src/main/scala/io/joern/ghidra2cpg/Ghidra2Cpg.scala#L135-L146 GitHub · joernio/joern · Revision 7f886b3
- joern-cli/frontends/jimple2cpg/src/main/scala/io/joern/jimple2cpg/Jimple2Cpg.scala#L102-L104 GitHub · joernio/joern · Revision 7f886b3
- joern-cli/build.sbt#L44-L57 GitHub · joernio/joern · Revision 7f886b3
- project/Versions.scala#L20 GitHub · joernio/joern · Revision 7f886b3
- joern-cli/src/main/scala/io/joern/joerncli/JoernExport.scala#L34-L50 GitHub · joernio/joern · Revision 7f886b3
- CITATION.cff GitHub · joernio/joern · Revision 7f886b3
- LICENSE GitHub · joernio/joern · Revision 7f886b3
- https://github.com/joernio/joern/releases/tag/v4.0.660
More in Native binaries
- Speakeasy · Tool
- LazyIDA · Tool
- Tiny Tracer · Tool
- DownUnderCTF: masked-squares flag checker · Case study
- Show Your Work: a measured dissection of REA's evidence architecture · Case study
- Windows loader: static malware analysis with REA and Codex · Case study