Linux下Joern环境配置

一、Joern简介

       Joern 是一个用于静态代码分析的命令行工具。Joern 可以帮助您找到并纠正具有数十万行代码的程序中的安全漏洞,包括难以通过模糊测试检测到的缺陷。它包括以代码属性图为中心的交互式外壳和自动化功能。

二、环境配置

1.jdk配置

注意jdk版本要是jdk11,jdk8亲测不可用。jdk配置可参考Linux下安装JDK11 - 小毅同学 - 博客园

2.Joern安装

方法一:安装预构建的二进制文件

要安装最新版本,只需执行以下命令

mkdir joern && cd joern
curl -L "https://github.com/joernio/joern/releases/latest/download/joern-install.sh" -o joern-install.sh
chmod u+x joern-install.sh
./joern-install.sh --interactive

并按照安装程序说明进行操作。默认情况下,joern 将安装在~/bin/joern.

可以按如下方式测试你的安装:

Linux下Joern环境配置_第1张图片

有可能出现No java installation was detected的错误,输入source /etc/profile解决。进行joern测试时,一定要到joern的路径测试,我的joern路径是/home/lh/bin/joern/joern-cli

方法二:从源代码构建

       要从源代码构建 joern-cli,需要安装 Scala 构建工具 (sbt),可以按照sbt - Download上的说明进行安装。任何 1.x 版本的 sbt 都可以。

git clone https://github.com/joernio/joern.git
cd joern
sbt stage

        这会在当前目录中构建 joern-cli。要构建zip 文件 ( joern-cli.zip),运行sbt createDistribution命令.

三、实例

在开始 Joern 之前,您应该准备好一个可供分析的程序。克隆以下 git 存储库,其中包含一个名为的简单程序X42:

git clone https://github.com/ShiftLeftSecurity/x42.git

其中c程序是这样的:

// X42.c
#include 
#include 
#include 
int main(int argc, char *argv[]) {
  if (argc > 1 && strcmp(argv[1], "42") == 0) {
    fprintf(stderr, "It depends!\n");
    exit(42);
  }
  printf("What is the meaning of life?\n");
  exit(0);
}

启动joern

Linux下Joern环境配置_第2张图片

导入代码,inputPath是c程序所在的路径;projectName是项目名,可以随便命名,方便以后打开该项目。

importCode(inputPath="/home/lh/桌面/x42/c",projectName="x42-c")

得到以下结果,证明环境配置没有问题。

Linux下Joern环境配置_第3张图片

 查看含有“stderr”的代码:

cpg.call.argument.code("stderr").toList

Linux下Joern环境配置_第4张图片

生成代码的抽象语法树AST,需要有graphviz的支持,输入以下指令安装graphviz。

sudo apt-get install graphviz

sudo apt-get install graphviz graphviz-doc

 安装成功后,需要以下指令,生成AST。

cpg.method("main").plotDotAst

 生成的AST如下图所示,图片太宽,只放了部分。

Linux下Joern环境配置_第5张图片

先输入close指令关闭项目,再输入exit,再输入y,保存修改并退出joern。

Linux下Joern环境配置_第6张图片

 其他常用的操作,可以参考Joern的手册,Quickstart | Joern Documentation

你可能感兴趣的:(linux)