自学内容网 自学内容网

BinAbsInspector部署、使用与原理分析


前言

  本博客的主要内容为BinAbsInspector的部署、使用与原理分析。本博文内容较长,因为涵盖了BinAbsInspector的几乎全部内容,从部署的详细过程到如何使用BinAbsInspector进行漏洞检测,以及对BinAbsInspector进行漏洞检测的原理分析,相信认真读完本博文,各位读者一定会对BinAbsInspector有更深的了解。以下就是本篇博客的全部内容了。


1、概述

  BinAbsInspector是一个用于二进制静态分析的工具,旨在自动化地进行反向工程并扫描二进制文件中的漏洞。它是一个长期的研究项目,由Keenlab孵化而来。BinAbsInspector基于经典的程序分析理论“抽象解释”,并利用Ghidra提供的中间表示Pcode进行分析。与传统的基于汇编代码的静态分析工具不同,BinAbsInspector工作于Pcode层面,支持x86、x64、armv7和aarch64等多种架构的二进制文件。BinAbsInspector的设计思想主要包括以下几个方面:

  • 抽象解释理论:BinAbsInspector的设计思想源自于上世纪70年代诞生的经典程序分析理论“抽象解释”,通过对程序行为进行抽象估算,从而实现对程序的静态分析。
  • Pcode分析:BinAbsInspector利用Ghidra提供的Pcode作为分析的基础,通过对Pcode的操作语义进行抽象和分析,实现了对程序行为的模拟和推断。
  • 抽象域和运算:BinAbsInspector设计了合适的抽象域和运算,完成了Pcode的操作语义,实现了流敏感和上下文敏感的过程间分析,同时加入了静态污点分析的能力。
  • 抽象环境和KSet:BinAbsInspector将程序的运行时环境划分为不同的抽象区域,并记录了程序点可能存活的抽象变量和对应的抽象值,使用了KSet来处理抽象变量可能的多个取值情况。
  • 上下文感知和不动点计算:BinAbsInspector在分析过程中考虑了上下文的影响,并采用了不动点计算的算法来完成程序的静态分析。

  通过以上设计,BinAbsInspector能够对二进制程序进行全面的静态分析,包括内存破坏漏洞、命令注入漏洞等多种漏洞的检测,为软件安全提供了有效的辅助手段。此外BinAbsInspector工具基于Java语言开发。

2、安装与使用

软件环境硬件环境约束条件
Ubuntu 22.04.1 LTS(内核版本5.15.0-43-generic)使用2个处理器,每个处理器2个内核,共分配4个内核BinAbsInspector v0.1
具体的软件环境可见“2.1、源码安装”章节所示的软件环境内存8GB具体的约束条件可见2.1、源码安装章节所示的软件版本约束
暂无硬盘200GB暂无
暂无BinAbsInspector部署在VMware Pro 17上的Ubuntu 22.04.1系统上(主机系统为Windows 11),硬件环境和软件环境也是对应的VMware Pro 17的硬件环境和软件环境暂无

2.1、源码安装

2.1.1、部署系统依赖组件

2.1.1.1、部署基础依赖组件

  执行如下命令来下载安装一些基础依赖组件。

$ sudo apt-get update
$ sudo apt-get install make -y
$ sudo apt-get install gcc -y
$ sudo apt-get install g++ -y
$ sudo apt-get install git -y
$ sudo apt install python3-pip -y
2.1.1.2、部署Ghidra 11.0.3

  Ghidra是由美国国家安全局研究局创建和维护的软件逆向工程(SRE)框架。该框架包括一套功能完整、高端的软件分析工具,使用户能够分析包括Windows、MacOS和Linux在内的各种平台上的编译代码。其功能包括反汇编、汇编、反编译、图形化和脚本编写,以及数百种其他功能。Ghidra支持各种处理器指令集和可执行格式,并可以在用户交互和自动化模式下运行。用户还可以使用Java或Python开发自己的Ghidra扩展组件和/或脚本。

  为支持美国国家安全局的网络安全任务,Ghidra被打造成解决复杂的SRE工作中的扩展性和团队合作问题,并提供可定制和可扩展的SRE研究平台。国家安全局已将Ghidra SRE功能应用于各种涉及分析恶意代码并为寻求更好了解网络和系统潜在漏洞的SRE分析人员提供深入见解的问题中。以下就是部署Ghidra的全部流程。

2.1.1.2.1、部署JDK 17

  JDK 17是Java开发工具包(Java Development Kit)的第17个版本,是由Oracle Corporation开发和发布的。它包括了Java编程语言的最新功能、改进和更新,以及相关的开发工具和库。JDK 17是Java的长期支持版本(LTS),为开发人员提供稳定性和可靠性,支持各种平台和应用场景。以下是部署JDK 17的全部流程。

  1. 首先来到当前用户的根目录,并下载JDK 17的压缩包:
$ cd ~
$ wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
  1. 然后将其解压,并将解压后的内容移动到“/usr/local/”目录中:
$ tar -zxvf jdk-17_linux-x64_bin.tar.gz
$ sudo mv jdk-17.0.11/ /usr/local/
  1. 然后配置环境变量:
$ sudo gedit /etc/profile
  1. 在打开的文件中,做如下图红框和红箭头处所示的修改,最后保存修改后退出:
    在这里插入图片描述

  2. 然后执行如下命令来使修改生效:

$ source /etc/profile
  1. 然后执行如下命令来查看JDK 17是否部署成功:
$ java --version
  1. 可以发现,JDK 17部署成功:
    在这里插入图片描述
2.1.1.2.2、部署Gradle 7.4.2

  Gradle是一种现代化的构建工具,用于自动化构建、测试和部署软件项目。它基于Groovy和Kotlin语言,采用了声明式的DSL(领域特定语言)语法,使得构建脚本更易于编写和维护。Gradle支持多项目构建、依赖管理、增量构建等功能,被广泛应用于Java、Android和其他各种类型的项目中。以下就是部署Gradle 7.4.2的全部流程了。

  1. 首先来到当前用户的根目录中,并下载Gradle的压缩包,最后将其解压:
$ cd ~
$ wget -c https://services.gradle.org/distributions/gradle-7.4.2-bin.zip -P /tmp
$ sudo unzip -d /opt/gradle /tmp/gradle-7.4.2-bin.zip
  1. 然后打开以下文件以设置环境变量:
$ sudo gedit /etc/profile.d/gradle.sh
  1. 在打开的文件中,输入如下内容,最后保存修改后退出:
export GRADLE_HOME=/opt/gradle/gradle-7.4.2
export PATH=${GRADLE_HOME}/bin:${PATH}
  1. 然后赋予上面配置的文件的权限,并将其中的环境变量加载:
$ sudo chmod +x /etc/profile.d/gradle.sh
$ source /etc/profile.d/gradle.sh
  1. 然后使用如下命令查看Gradle 7.4.2是否部署成功:
$ gradle --version
  1. 可以发现,Gradle 7.4.2已经部署成功了:
    在这里插入图片描述
2.1.1.2.3、部署Ghidra 11.0.3

  当我们做完以上的准备工作后,就可以来部署Ghidra 11.0.3了。以下就是部署Ghidra 11.0.3的全部流程。

  1. 首先来到当前用户的根目录中,并下载Ghidra 11.0.3的源代码,最后进入其目录中:
$ cd ~
$ git clone https://github.com/NationalSecurityAgency/ghidra.git
$ cd ghidra/
  1. 然后加载依赖项到存储库中:
$ gradle -I gradle/support/fetchDependencies.gradle init
  1. 然后使用Gradle 7.4.2构建Ghidra 11.0.3:
$ gradle buildGhidra
  1. 出现如下图所示的内容,即代表Ghidra 11.0.3部署成功:
    在这里插入图片描述

  2. 然后来到如下目录中,该目录就存储了构建Ghidra 11.0.3的结果,并将构建结果解压:

$ cd ~/ghidra/build/dist/
$ unzip ghidra_11.1_DEV_20240428_linux_x86_64.zip
  1. 然后查看一下解压后的结果:
$ ll
  1. 可以发现,如下图红框和红箭头处所示的内容就是我们构建Ghidra 11.0.3的最终结果:
    在这里插入图片描述

  2. 然后来到构建好的目录中,赋予对应脚本的执行权限:

$ cd ghidra_11.1_DEV/
$ chmod +x ghidraRun
$ chmod +x support/launch.sh
  1. 然后执行如下命令来启动Ghidra。后续都来到该目录中使用该命令启动Ghidra,不再赘述:
$ ./ghidraRun
  1. 然后按如下图所示进行选择:
    在这里插入图片描述

  2. 然后会出现如下图所示的界面,稍等即可:
    在这里插入图片描述

  3. 然后按如下图所示进行选择:
    在这里插入图片描述

  4. 然后就会来到Ghidra的主界面,这就代表我们已经将Ghidra部署成功了。后续若要使用Ghidra,均按照这些步骤将其启动,不再赘述:
    在这里插入图片描述

2.1.1.3、部署Z3 4.8.15

  Z3是由微软研究院开发的一款强大的自动定理证明器,用于解决数学逻辑、计算机科学和软件工程领域的问题。它能够自动判断给定的一阶逻辑公式是否成立,并且可以求解一些复杂的约束问题,如整数线性规划、位向量运算等。Z3广泛应用于程序分析、形式验证、符号执行、模型检测等领域,被认为是当今最先进的自动定理证明器之一。以下是部署Z3 4.8.15的全部流程:

  1. 首先来到当前用户根目录中,并下载Z3 4.8.15的预构建包,最后将其解压:
$ cd ~
$ wget https://github.com/Z3Prover/z3/releases/download/z3-4.8.15/z3-4.8.15-x64-glibc-2.31.zip
$ unzip z3-4.8.15-x64-glibc-2.31.zip
  1. 然后执行如下命令,将目标目录中的所有以“.so”结尾的文件都拷贝到“/usr/local/lib/”目录和“/lib”中:
$ sudo cp z3-4.8.15-x64-glibc-2.31/bin/*.so /usr/local/lib/
$ sudo cp z3-4.8.15-x64-glibc-2.31/bin/*.so /lib
  1. 然后编辑如下文件来设置对应的环境变量:
$ gedit ~/.bashrc
  1. 在打开的文件的末尾添加如下内容,最后保存修改后退出:
    在这里插入图片描述

  2. 然后执行如下命令重新加载设置好的环境变量:

$ source ~/.bashrc
  1. 然后执行如下命令来验证Z3 4.8.15是否部署成功:
$ z3 --version
  1. 可以发现,Z3 4.8.15已经部署成功:
    在这里插入图片描述

2.1.2、使用源码安装系统

  当我们部署完系统的依赖组件后,就可以来正式使用源代码部署BinAbsInspector了,下面就是使用源代码部署BinAbsInspector的全部流程。

  1. 首先来到当前用户的根目录中,并下载BinAbsInspector的源代码,最后进入其目录中:
$ cd ~
$ git clone https://github.com/KeenSecurityLab/BinAbsInspector.git
$ cd BinAbsInspector/
  1. 然后执行如下命令来构建BinAbsInspector:
$ gradle buildExtension
  1. 最后出现如下图所示的内容,即代表BinAbsInspector构建成功:
    在这里插入图片描述

  2. 然后来到如下目录中,该目录就存储了构建BinAbsInspector的结果,并将构建结果解压:

$ cd ~/BinAbsInspector/dist/
$ unzip ghidra_11.1_DEV_20240428_BinAbsInspector.zip 
  1. 然后查看一下解压后的结果:
$ ll
  1. 可以发现,如下图红框和红箭头处所示的内容就是我们构建BinAbsInspector的最终结果:
    在这里插入图片描述

  2. 然后我们将构建好的BinAbsInspector作为拓展安装到Ghidra中,首先按照“2.1.1.2.3、部署Ghidra 11.0.3”章节所示的内容启动Ghidra:

$ cd ~/ghidra/build/dist/ghidra_11.1_DEV/
$ ./ghidraRun
  1. 然后按如下图所示进行选择:
    在这里插入图片描述

  2. 然后按如下图所示进行选择:
    在这里插入图片描述

  3. 然后选择之前构建好的BinAbsInspector目录,并将其导入:
    在这里插入图片描述

  4. 然后按如下图所示进行选择:
    在这里插入图片描述

  5. 然后按如下图所示进行选择:
    在这里插入图片描述

  6. 然后关闭Ghidra,再将其重新打开:

$ cd ~/ghidra/build/dist/ghidra_11.1_DEV/
$ ./ghidraRun
  1. 然后按如下图所示进行选择:
    在这里插入图片描述

  2. 然后按如下图所示进行选择,可以发现,我们之前构建好的BinAbsInspector已经被加载到Ghidra中了。此时我们就将BinAbsInspector部署完毕了:
    在这里插入图片描述

  注:实际执行中遇到的问题及解决方法

  A 问题1:

  1. 在步骤2构建BinAbsInspector的时候,可以会出现如下图所示的问题:
    在这里插入图片描述

  2. 出现该问题是因为我们没有配置Ghidra的环境变量,为了解决该问题,我们首先打开Shell配置文件:

$ gedit ~/.bashrc
  1. 在打开的文件的最后一行添加如下图所示的内容(此处设置的目录就是在“2.1.1.2.3、部署Ghidra 11.0.3”章节中最终构建出的Ghidra 11.0.3目录),然后保存修改后退出:
    在这里插入图片描述

  2. 然后执行如下命令使刚才的配置生效:

source ~/.bashrc
  1. 此时我们就解决了该问题,我们只需要回到步骤2重新继续向下操作即可

2.2、使用方法

2.2.1、准备测试程序

  1. 首先写一个测试程序:
$ cd ~
$ touch test.c
$ gedit test.c
  1. 在打开的文件中输入如下内容,这段程序的CWE编号为134,我们看使用BinAbsInspector是否能检测出该CWE编号为134,然后保存修改后退出:
#include <stdio.h>

int main(int argc, char **argv){
    char buf[128];
    snprintf(buf,128,argv[1]);
    return 0;
}
  1. 然后对以上内容进行编译,并执行编译后的二进制程序:
$ gcc ./test.c -o test
$ ./test
  1. 发现测试程序可以成功执行(没报错就代表成功执行了):
    在这里插入图片描述

2.2.2、创建Ghidra项目

  1. 首先来到构建好的Ghidra的目录中,执行对应脚本启动Ghidra:
$ cd ~/ghidra/build/dist/ghidra_11.1_DEV/
$ ./ghidraRun
  1. 然后按照如下图所示进行选择,以创建一个新的项目:
    在这里插入图片描述

  2. 然后按如下图所示进行选择:
    在这里插入图片描述

  3. 然后设置项目存储路径以及项目名称:
    在这里插入图片描述

  4. 此时项目就被创建成功了:
    在这里插入图片描述

  5. 然后按照如下图所示进行选择,以导入测试文件:
    在这里插入图片描述

  6. 然后选择刚刚编译好的测试文件导入:
    在这里插入图片描述

  7. 然后开始使用Ghidra对其进行反汇编:
    在这里插入图片描述

  8. 然后按如下图所示进行选择:
    在这里插入图片描述

  9. 可以发现,测试文件已经成功导入到Ghidra中了,并对其进行了反汇编:
    在这里插入图片描述

2.2.3、使用BinAbsInspector检测CWE漏洞

  1. 首先双击打开之前得到的反汇编结果:
    在这里插入图片描述

  2. 然后会出现如下图所示的界面,我们按照如下图所示进行选择,对测试文件进行分析:
    在这里插入图片描述

  3. 然后使用默认分析配置对其进行分析:
    在这里插入图片描述

  4. 最终的分析结果如下图所示:
    在这里插入图片描述

  5. 然后按照如下图所示进行选择,开始准备使用BinAbsInspector对测试文件进行漏洞检测:
    在这里插入图片描述

  6. 然后找到我们导入的BinAbsInspector,对其双击,以使用BinAbsInspector对测试文件进行分析:
    在这里插入图片描述

  7. 然后会出现如下图所示的内容,在这里我们使用默认配置对测试文件进行漏洞检测即可:
    在这里插入图片描述

  8. 稍等一下,对CWE漏洞的扫描就完成了。可以发现,本次扫描发现了一个CWE漏洞:
    在这里插入图片描述

  9. 可以发现,BinAbsInspector可以检测出测试代码中的CWE-134漏洞,并且打印了详细信息,即警告显示有一个潜在的外部控制的格式字符串问题,可能导致安全漏洞。警告信息指出,该问题出现在将argv作为源传递给了snprintf()函数。此外,还将有问题的代码片段使用红色标注了:
    在这里插入图片描述

3、测试用例

  BinAbsInspector官方给我们提供了很多的测试用例,并且包含多种架构,如X86_64、ARM32LE和AARCH64LE等。我们可以将官方提供的这些测试用例下载到本地进行测试。

$ cd ~
$ git clone https://github.com/KeenSecurityLab/BinAbsInspector-binaries.git
$ cd BinAbsInspector-binaries/
$ ll

  可以发现,这里存在诸多架构的测试用例。由于我们的系统版本为X86_64,所以我们使用X86_64版本的测试用例进行下面的测试。

在这里插入图片描述

  我们首先进入这个名为“X86_64”的目录查看一下该架构的测试用例都有哪些,查看是否满足我们的测试要求。

$ cd X86_64/
$ ll

  可以发现,每个测试用例对应一类漏洞或者CWE,并且标注了CWE编号,下面我们就将使用BinAbsInspector对这些存在漏洞的测试用例进行测试。

在这里插入图片描述

3.1、检测CWE-190漏洞

  CWE190指整数溢出漏洞或环绕漏洞。这种漏洞发生在程序尝试将超出整数类型范围的值分配给变量时。攻击者可以利用这个漏洞来改变程序的行为,导致未预期的结果,例如越界访问数组或拒绝服务。以下是使用BinAbsInspector对该漏洞进行检测的具体步骤。

  1. 首先按照“2.2.2、创建Ghidra项目”章节所述的步骤创建一个名为“CWE-190”的Ghidra项目:
    在这里插入图片描述

  2. 然后再按照“2.2.2、创建Ghidra项目”章节所述的步骤将刚刚准备好的名为“cwe_190_x64_gcc.out”的测试用例导入到该Ghidra项目中:
    在这里插入图片描述

  3. 然后再按照“2.2.3、使用BinAbsInspector检测CWE漏洞”章节所述的步骤对该测试文件进行漏洞检测:
    在这里插入图片描述

  4. 稍等一下,对CWE漏洞的扫描就完成了。可以发现,本次扫描发现了六个CWE漏洞:
    在这里插入图片描述

  5. 可以发现,BinAbsInspector可以检测出测试代码中的CWE-190(六个CWE漏洞的编号都为190)漏洞,并且打印了详细信息,此外还将有问题的代码片段使用红色标注了:
    在这里插入图片描述

3.2、检测CWE-416漏洞

  CWE416指释放后继续使用漏洞。这种漏洞发生在程序尝试在释放内存后继续引用该内存区域时。攻击者可以利用这个漏洞来执行任意代码,可能导致程序崩溃或被入侵。以下是使用BinAbsInspector对该漏洞进行检测的具体步骤。

  1. 首先按照“2.2.2、创建Ghidra项目”章节所述的步骤创建一个名为“CWE-416”的Ghidra项目:
    在这里插入图片描述

  2. 然后再按照“2.2.2、创建Ghidra项目”章节所述的步骤将刚刚准备好的名为“cwe_416_x64_gcc.out”的测试用例导入到该Ghidra项目中:
    在这里插入图片描述

  3. 然后再按照“2.2.3、使用BinAbsInspector检测CWE漏洞”章节所述的步骤对该测试文件进行漏洞检测:
    在这里插入图片描述

  4. 稍等一下,对CWE漏洞的扫描就完成了。可以发现,本次扫描发现了三个CWE漏洞:
    在这里插入图片描述

  5. 可以发现,BinAbsInspector可以检测出测试代码中的CWE-416(三个CWE漏洞的编号都为416)漏洞,并且打印了详细信息,此外还将有问题的代码片段使用红色标注了:
    在这里插入图片描述

3.3、检测CWE-787漏洞

  CWE787指缓冲区溢出(越界写入)漏洞。这种漏洞发生在程序尝试向数组或缓冲区写入超出其边界的数据时。攻击者可以利用这个漏洞来修改关键数据,执行任意代码,或导致程序崩溃。以下是使用BinAbsInspector对该漏洞进行检测的具体步骤。

  1. 首先按照“2.2.2、创建Ghidra项目”章节所述的步骤创建一个名为“CWE-787”的Ghidra项目:
    在这里插入图片描述

  2. 然后再按照“2.2.2、创建Ghidra项目”章节所述的步骤将刚刚准备好的名为“cwe_787_x64_gcc.out”的测试用例导入到该Ghidra项目中:
    在这里插入图片描述

  3. 然后再按照“2.2.3、使用BinAbsInspector检测CWE漏洞”章节所述的步骤对该测试文件进行漏洞检测:
    在这里插入图片描述

  4. 稍等一下,对CWE漏洞的扫描就完成了。可以发现,本次扫描发现了两个CWE漏洞:
    在这里插入图片描述

  5. 可以发现,BinAbsInspector可以检测出测试代码中的CWE-787(两个CWE漏洞的编号都为787)漏洞,并且打印了详细信息,此外还将有问题的代码片段使用红色标注了:
    在这里插入图片描述

4、总结

4.1、部署架构

  // TODO

4.2、具体功能

  经过以上的学习,我们清楚了BinAbsInspector做一个用于二进制静态分析的工具,可以自动化的对目标二进制进行反向功能并对其进行漏洞扫描,但是BinAbsInspector究竟可以对哪些类型的漏洞进行扫描呢?为了解决该问题,故对BinAbsInspector进行分析,并将其可以检测的CWE类型做如下总结。

  • CWE78 (OS Command Injection):操作系统命令注入
    当应用程序未正确验证或过滤用户输入时,攻击者可以利用这个漏洞在应用程序的上下文中执行恶意操作系统命令。这可能导致数据泄露、系统被入侵或其他安全问题。
  • CWE119 (Buffer Overflow - generic case):缓冲区溢出(通用情况)
    这种漏洞通常发生在程序尝试写入超出分配给缓冲区的内存空间的数据时。攻击者可以利用这个漏洞覆盖栈上的关键数据,修改程序的执行流程,或执行任意代码。
  • CWE125 (Buffer Overflow (Out-of-bounds Read)):缓冲区溢出(越界读取)
    这种漏洞发生在程序尝试读取超出数组或缓冲区边界的数据时。攻击者可以利用这个漏洞来读取或泄露敏感信息,或者导致程序崩溃。
  • CWE134 (Use of Externally-Controlled Format string):使用外部控制的格式字符串
    当程序将用户提供的字符串作为格式化字符串传递给格式化输出函数时,如果没有适当地验证和过滤,攻击者可以利用这个漏洞执行格式字符串攻击,可能导致信息泄露或程序崩溃。
  • CWE190 (Integer overflow or wraparound):整数溢出或环绕
    这种漏洞发生在程序尝试将超出整数类型范围的值分配给变量时。攻击者可以利用这个漏洞来改变程序的行为,导致未预期的结果,例如越界访问数组或拒绝服务。
  • CWE367 (Time-of-check Time-of-use (TOCTOU)):检查-使用时间窗口问题
    这种漏洞发生在程序在检查某些条件后,但在使用这些条件时,条件已经发生了改变。攻击者可以利用这个漏洞执行一系列的攻击,例如文件竞争条件,可能导致安全漏洞。
  • CWE415 (Double free):双重释放
    这种漏洞发生在程序尝试释放已经被释放的内存区域时。攻击者可以利用这个漏洞来导致程序崩溃,或者执行任意代码。
  • CWE416 (Use After Free): 释放后继续使用
    这种漏洞发生在程序尝试在释放内存后继续引用该内存区域时。攻击者可以利用这个漏洞来执行任意代码,可能导致程序崩溃或被入侵。
  • CWE426 (Untrusted Search Path):不受信任的搜索路径
    这种漏洞发生在程序在加载或执行外部资源时,未正确验证或限制搜索路径。攻击者可以利用这个漏洞来执行恶意代码或读取敏感文件,可能导致安全问题。
  • CWE467 (Use of sizeof() on a pointer type):对指针类型使用sizeof()
    这种漏洞发生在程序尝试对指针类型使用sizeof()运算符来获取其大小时。这可能导致获取不正确的大小,从而导致程序错误行为或安全问题。
  • CWE476 (NULL Pointer Dereference):空指针解引用
    这种漏洞发生在程序尝试在空指针上执行操作时。攻击者可以利用这个漏洞来导致程序崩溃或执行任意代码。
  • CWE676 (Use of Potentially Dangerous Function):使用潜在危险函数
    这种漏洞发生在程序使用可能具有安全风险的函数时,例如strcpy()gets()。攻击者可以利用这个漏洞来执行缓冲区溢出等攻击,可能导致安全问题。
  • CWE787 (Buffer Overflow (Out-of-bounds Write)):缓冲区溢出(越界写入)
    这种漏洞发生在程序尝试向数组或缓冲区写入超出其边界的数据时。攻击者可以利用这个漏洞来修改关键数据,执行任意代码,或导致程序崩溃。

4.3、实现方法

  // TODO

5、参考文献

  1. BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具
  2. KeenSecurityLab/BinAbsInspector: BinAbsInspector: Vulnerability Scanner for Binaries
  3. NationalSecurityAgency/ghidra: Ghidra is a software reverse engineering (SRE) framework
  4. Ubuntu 安装jdk17详细配置教程(傻瓜式教程)
  5. 如何在 Ubuntu 22.04 上安装 Gradle
  6. Z3Prover/z3: The Z3 Theorem Prover
  7. Linux环境编译安装Ghidra教程
  8. NSA开源逆向工具Ghidra入门使用教程
  9. “精”准把握静态分析|科恩二进制文件自动化静态漏洞检测工具正式开源
  10. BinAbsInspector安装
  11. KeenSecurityLab/BinAbsInspector-binaries
  12. Java error · Issue #56 · KeenSecurityLab/BinAbsInspector

总结

  以上就是本篇博文的全部内容,可以发现,BinAbsInspector的部署与使用过程并不复杂,我们本篇博客对其进行了详细的分析。相信读完本篇博客,各位读者一定对BinAbsInspector有了更深的了解。


原文地址:https://blog.csdn.net/IronmanJay/article/details/143018472

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!