SyzBridge:一款提供了丰富接口的Linux系统安全研究工具

2024-09-01 60 0

关于SyzBridge

SyzBridge是一款功能强大的Linux系统安全研究工具,它能够将 Linux 上游 PoC 适配到下游发行版,并提供了大量丰富的接口,允许广大研究人员在Linux系统上学习、分析和研究Syzbot漏洞。

可利用性评估是网络安全领域的热门话题。大多数可利用性评估工具主要关注 Linux 上游内核,这意味着它们依赖于原始的上游 PoC。然而,只有一小部分(19%)的上游 PoC 可以在下游发行版上触发相同的错误。SyzBridge 提供了一种弥合上游和下游之间差距的功能,将上游 PoC 适配到下游,为可利用性评估工具提供了更多可能性。

功能介绍

1、安全缺陷复现(上游/下游);

2、虚拟机管理;

3、内核跟踪;

4、集成了其他基于Syzboot的工具-SyzScope

工具架构

工具要求

pandas==1.1.5

angr==9.0.5405

pwntools==4.11.0

console==0.9907

toposort==1.7

pytz==2022.1

slack-sdk==3.16.0

beautifulsoup4==4.11.1

requests==2.27.1

google-api-core==2.7.1

google-api-python-client==2.39.0

google-auth==2.6.0

google-auth-httplib2==0.1.0

google-auth-oauthlib==0.5.0

googleapis-common-protos==1.55.0

protobuf==3.19.4

pygsheets==2.0.5

rich==12.5.1

filelock==3.0.12

importlib-resources==6.1.1

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。

接下来,广大研究人员可以运行下列命令完成工具的下载与配置:

sudo apt-get update

sudo apt-get -y install git python3 python3-pip python3-venv sudo

git clone --recurse-submodules https://github.com/seclab-ucr/SyzBridge.git

cd SyzBridge/

python3 -m venv venv

. venv/bin/activate

python3 -m pip install --upgrade pip

pip3 install -r requirements.txt

运行下列命令安装工具所需的代码包并编译关键工具:

python3 syzbridge build --all

工具使用

首先,我们需要设置好SyzBridge的配置文件,下面给出的是一个配置文件模板:

{

    "kernel": {

        "Upstream":{

            # The upstream image and key are generated by syzkaller create-image.sh

            # https://github.com/google/syzkaller/blob/master/tools/create-image.sh

            "ssh_key":"/projects/SyzBridge/tools/img/stretch.img.key",

            "distro_name":"upstream",

            "distro_image":"/projects/SyzBridge/tools/img/stretch.img",

            "type": "upstream",

            "normal_user": "etenal",

            "root_user": "root"

        },

        "Ubuntu-Jammy-22.04":{

            # Refer to "Deploy Distro Image" in the wiki

            "distro_image":"/vendors/ubuntu/kernel-jammy-22.04-Apr_21_2022/ubuntu-snapshot.img",

            "ssh_key":"/.ssh/syzbridge",

            "distro_src":"/vendors/ubuntu/kernel-jammy-22.04-Apr_21_2022/ubuntu-jammy",

            "distro_name":"ubuntu-22.04",

            "distro_code_name": "jammy",

            "distro_version": "5.15.25",

            # Effective cycle use to pick Syzbot bugs based on their reported date

            "effective_cycle_start": "Apr 21 2022",

            "effective_cycle_end": "",

            "type": "distro",

            "normal_user": "etenal",

            "root_user": "root"

        }

    },

    "plugin": {

        "GoogleSheets": {

            "credential": "/tmp/google_sheet.json",

            "private_sheet": "ndss_experiment-ubuntu",

            "main_sheet": "ndss_experiment"

        },

        "Syzscope": {

            "timeout": 14400,

            "max_round": 3,

            "repro_mode": "c"

        },

        "TraceAnalysis": {

            "timeout": 600

        },

        "RawBugReproduce": {

            "timeout": 300

        },

        "BugReproduce": {

            "timeout": 300,

            "skip_regular_reproduce": false

        },

        "SyzFeatureMinimize": {

            "timeout": 300,

            "attempt": 3

        }

    }

}

通过哈希获取指定漏洞信息:

python3 syzbridge syzbot --proj test --config ./template.cfg --get 380acd1f7d59c28809f18bb577d645aab34d23b0

通过关键字和内核获取漏洞信息:

python3 syzbridge syzbot --proj test --config ./template.cfg --filter-by-kernel=upstream --key=KASAN --filter-by-c-prog

获取在发行版结束日期之前报告的漏洞信息:

python3 syzbridge syzbot --proj test --config ./template.cfg --filter-by-distro-cycle-end

SyzBridge 命令

usage: syzbridge [-h]

                 {test,empty,run,image,bitcode,build,poc,syzbot,case,service,fuzz}

                 ...

 

positional arguments:

  {test,empty,run,image,bitcode,build,poc,syzbot,case,service,validateTrace,fuzz}

                        

    test                模块化测试 (仅调试)

    empty              创建一个空项目

    run                 运行分析

    image               构建Linux发行版镜像 [ubuntu|fedora|debian]

    bitcode             构建内核bitcode以执行静态分析

    build               构建关键组件

    poc                 构建PoC

    syzbot              通过哈希或包含多个哈希的文件获取测试样例

    case                获取测试样例信息

    service             持久化运行syzbridge

    fuzz                执行模糊测试

 

optional arguments:

  -h, --help            显示工具帮助信息和退出

工具运行样例

启用某些插件(SyzFeatureMinimize、RawBugReproduce、TraceAnalysis、ModulesAnalysis、BugReproducer):

python3 syzbridge run --proj test --config ./template.cfg --syz-feature-minimize --raw-bug-reproduce --trace-analysis --modules-analysis --bug-reproduce

项目地址

SyzBridge:【GitHub传送门

参考资料

https://github.com/plummm/SyzScope

https://github.com/seclab-ucr/SyzBridge/blob/master/SyzBridge-Camera_Ready.pdf


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

Arkime:一款大规模数据包捕获和索引数据库系统
从蓝队流量角度分析Shiro-550反序列化漏洞
万字长文浅谈三高系统建设方法论和实践
你遇到过哪些奇葩面试题目;如何考察渗透测试与安全管理能力| FB甲方群话题讨论
Amoco:一款针对二进制源码的安全分析工具
CVE-2024-21096:MySQLDump提权漏洞分析

发布评论