freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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内核
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录