freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

SyzBridge:一款提供了丰富接口的Linux系统安全研究工具
2024-08-20 23:25:36

关于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

# linux # poc # 系统安全 # linux安全 # Linux内核
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录