BleedingTooth漏洞复现:从蓝牙协议栈漏洞到Linux内核攻防实战

UE4官方MySQL插件开发指南 本文还有配套的精品资源,点击获取 简介:MySQL插件是UE4官方提供的工具,用于在游戏中集成MySQL数据库,实现数据存储、查询和管理。本指南将介绍MySQL插件的工作原理、使用流程、源码软件结构、数据库管理、安全性和性能优化等方面的内容,帮助开发者熟练运用该插件,构建数据驱动的UE4应用。 1. MySQL插件工作原理 MySQL插件是一种扩展MySQL... 阅读详情

1. 项目概述与核心价值

最近在安全研究圈里,BleedingTooth这个系列漏洞的热度又起来了。这其实是一组存在于Linux内核蓝牙协议栈(BlueZ)中的高危漏洞,最早在2020年被披露。当时谷歌安全研究团队放出的细节,特别是CVE-2020-12351和CVE-2020-12352的组合利用,号称能在蓝牙4.0环境下实现“零点击”远程代码执行,听起来就挺吓人的。所谓“零点击”,意味着攻击者不需要目标用户进行任何交互,比如点击链接或接收文件,只要蓝牙开着且在有效范围内,就可能被悄无声息地攻破。

我之所以花时间重新折腾这个“老”漏洞的复现,原因有几个。首先,虽然漏洞披露已有几年,但受影响的设备基数庞大,从物联网设备到服务器,再到桌面Linux系统,只要使用了特定版本的BlueZ,都可能存在风险。其次,理解这类底层协议栈的漏洞,对于构建更稳固的系统安全认知非常有帮助。它不像Web漏洞那样有直观的界面,而是深入到操作系统内核和无线通信协议的交界处,复现过程能让你对蓝牙协议的工作机制、内核内存管理有更深刻的理解。最后,复现一个相对复杂的漏洞利用链,本身就是对研究能力的一次综合锻炼,涉及环境搭建、代码分析、调试技巧等多个环节。

这篇文章,我会以一个实践者的角度,带你从头到尾走一遍BleedingTooth漏洞的复现过程。我不会只给你几个命令了事,而是会详细解释每个步骤背后的“为什么”,分享我在搭建环境、编译利用代码、调试过程中踩过的坑和总结的技巧。目标读者是对系统安全、漏洞研究感兴趣的开发者或安全爱好者,你需要具备基本的Linux操作、C语言理解和编译调试能力。即使你是新手,跟着步骤走,也能在可控的实验室环境中,亲眼看到这个漏洞是如何从理论变成实际攻击的。

2. 漏洞原理深度解析

要成功复现一个漏洞,光会跑脚本是不够的,必须理解它到底“坏”在哪里。BleedingTooth实际上包含了多个CVE编号的漏洞,我们复现的重点是其中最危险的两个:CVE-2020-12351和CVE-2020-12352。它们组合起来,构成了一个从信息泄露到远程代码执行的完整攻击链。

2.1 CVE-2020-12351:越界读取漏洞

这个漏洞的本质是Linux内核蓝牙模块( net/bluetooth/hci_event.c )在处理L2CAP(逻辑链路控制和适配协议)信号时,存在一个越界读取(Out-of-Bounds Read)缺陷。攻击者可以精心构造一个畸形的L2CAP配置请求包,诱使内核的 l2cap_parse_conf_req 函数读取超出预定缓冲区范围的内存数据。

简单来说,想象一下内核有一张表格(缓冲区)用来记录蓝牙连接的各种参数。正常的数据包会告诉内核:“请把A信息填到表格的第1到第5格。”而恶意数据包可能会说:“请把A信息填到表格的第1到第100格。”但表格实际上只有50格,内核在忠实地执行这个“越界”读取指令时,就会把第51到第100格(这些格子可能存放着其他进程的敏感数据,甚至是内核地址)的内容也读出来,并通过蓝牙信号发回给攻击者。这就导致了内核内存信息的泄露。

泄露的信息里,最关键的是所谓的“内核指针”。你可以把它理解成内存中重要数据结构的“家庭住址”。拿到这个地址,攻击者就对内核内存布局有了一定的了解,为后续更精准的攻击(比如绕过安全防护机制)打下了基础。这个漏洞本身不会直接执行代码,但它为下一个漏洞提供了至关重要的“情报”。

2.2 CVE-2020-12352:堆溢出漏洞

在通过CVE-2020-12351拿到一些“情报”后,攻击者就可以利用CVE-2020-12352发起致命一击。这是一个位于 net/bluetooth/l2cap_core.c 文件中的堆缓冲区溢出漏洞,具体发生在处理L2CAP配置响应时。

蓝牙设备在建立连接或重新配置参数时,会交换配置请求和配置响应。内核在解析对方发来的配置响应时,需要根据响应中的选项类型和长度,将数据复制到内核中预先分配好的一块堆内存里。问题出在,内核代码没有充分验证一个名为 mtu (最大传输单元)的选项数据的长度。攻击者可以发送一个声称自己 mtu 值非常大的配置响应(比如65535),但实际跟随的数据却很短。内核在复制数据时,会按照声明的巨大长度去分配内存,但复制操作本身却可能因为逻辑错误,写入超出实际分配缓冲区大小的数据。

这就好比你去邮局寄包裹,你说要一个能装下冰箱的大箱子(声明大长度),邮局给了你一个对应的空位。但你实际只放进去一本书(实际数据很短),然而由于邮局内部处理单据的流程有bug,工作人员却按照“冰箱箱子”的尺寸,在你的包裹位和隔壁的包裹位里都塞满了无关的填充物(溢出数据),把隔壁包裹(其他内核数据结构)给破坏了。通过精心构造这些“填充物”(shellcode或ROP链),攻击者就能劫持程序执行流程,最终在内核态执行任意代码。

2.3 组合利用的逻辑链条

单独来看,CVE-2020-12352的堆溢出利用条件比较苛刻,因为攻击者需要知道精确的内存布局来布置攻击载荷。而CVE-2020-12351的越界读取恰好提供了泄露内存布局信息的能力。因此,典型的BleedingTooth攻击链是:

  1. 攻击者主动与目标设备建立蓝牙连接。
  2. 利用CVE-2020-12351发送恶意L2CAP配置请求,触发越界读取,从目标内核中泄露包含堆内存布局的关键地址信息。
  3. 根据泄露的地址信息,精心构造针对CVE-2020-12352的恶意L2CAP配置响应数据包。
  4. 发送该恶意响应包,触发堆缓冲区溢出,覆盖关键函数指针或返回地址,实现内核权限的代码执行。

注意 :漏洞影响特定版本的BlueZ(Linux蓝牙协议栈实现)和内核。通常,Linux内核版本在5.9之前且启用了蓝牙支持的系统都可能受影响。我们的复现环境需要精确匹配存在漏洞的版本。

3. 实验环境搭建与配置

漏洞复现的第一道坎,就是搭建一个合适且安全的实验环境。我们不建议在任何生产环境或日常使用的主

利用ArcGIS的模型构建器实现批量投影栅格和批量克里金插值 博主要批量投影几百个栅格,但是ArcGIS中的投影栅格的批处理工具需要手动一条条设置参数,还是麻烦,因此学习了使用模型构建器(ModelBuilder)来批量投影栅格,可以导入需投影栅格的文件夹,然后迭代投影,并按栅格原名逐个输出到指定目录。 1.在工具箱里构建模型 在arctool box里右键点击空白处,选择【添加工具箱】,点击ArcGIS默认工作目录的工具箱进行添加,然后Toolbox就会被添加到ArcToolbox页面,右键点击Toolbox,选择“新建”-“模型” 2.编写模型 (1). 阅读详情

相关推荐

Understand-Anything:AI驱动的代码知识图谱,实现项目全局洞察与高效导航

在软件开发中,理解复杂代码库的结构和依赖关系是提升开发效率的关键。传统代码阅读方式往往陷入局部视角,难以快速把握系统全貌。知识图谱技术通过将代码实体(如文件、类、函数)及其关系(调用、继承、依赖)可视化,为代码理解提供了全局视角。这项技术的核心价值在于将静态代码转化为动态、可交互的认知地图,极大降低了系统学习与维护成本。在实际工程中,它广泛应用于新成员快速入职、遗留系统梳理、架构影响分析等场景。本文介绍的Understand-Anything工具,正是基于这一理念,通过多智能体分析管道,自动构建代码的结构图

weixin_42615290的博客 877

新手避坑指南:用SARScape 5.6.2处理Sentinel-1数据做SBAS-InSAR,这些参数设置错了白忙活

本文详细介绍了使用SARScape 5.6.2处理Sentinel-1数据做SBAS-InSAR时的关键参数设置技巧,帮助新手避免常见错误。重点解析了连接图生成、干涉工作流、DEM处理等环节的12个关键参数,包括Max Normal Baseline、Unwrapping Coherence Threshold等,提供实测安全值范围和优化建议,确保处理效率和结果准确性。

weixin_30694389的博客 555

APK静态分析(取证角度)——理论部分

APP是指应用程序(Application),是指能够在手机、平板电脑、电脑等移动设备上运行的软件。APP可以帮助用户进行各种功能操作,如社交媒体、游戏、购物、学习、工作等。用户可以通过应用商店或者在线下载安装APP,然后在设备上使用它们。APP的种类非常丰富,能够满足用户不同的需求和兴趣。

currify的博客 3195

Appstore开发者必读:3.2(f)违规预警与高效申诉指南

本文为AppStore开发者提供了应对3.2(f)违规通知的完整指南。文章深度解析了3.2(f)条款下的隐瞒性、关联性与真实性违规类型,并提供了黄金48小时内的自查、申诉信撰写与提交全流程策略。同时,文章强调遵循App Review Guidelines,建立内部合规清单与保持账号独立,是预防违规、维护开发者账号安全的关键。

weixin_29214559的博客 258

DOTS 性能基石:为什么传统 Unity 代码难以满足现代游戏需求?(DOTS 系列教程 · 第1篇)

本文探讨了Unity游戏开发中的性能优化问题,指出性能问题不应在最后才考虑,而应贯穿整个开发过程。文章分析了性能问题的三大表现(渲染开销、物理模拟、游戏逻辑),并解释了依赖硬件升级的不可行性。重点剖析了传统Unity代码性能低下的六大根源:垃圾回收卡顿、编译器优化不足、多核利用不足、数据结构和代码缓存不友好、过度抽象等问题。最后指出Unity项目中常见的反模式,如主线程垄断、内存碎片化等,为后续学习DOTS高性能架构解决方案奠定基础。

分享知识,拥抱变化 143

YOLOv11 改进 - 下采样 | 轻量化突破:ADown 下采样让 YOLOv11 参量减、精度升

本文介绍了一种轻量级的特征下采样模块 ADown,它结合平均池化与最大池化策略,实现更有效的信息保留与压缩。在传统卷积网络中,特征下采样常造成信息损失,而 ADown 通过双通道并行结构优化了下采样效果,提升了模型的表达能力。在 YOLOv11 中引入 ADown 替换原有的下采样模块后,网络在保持高效性的同时,显著提升了目标检测的精度与稳定性。文章详细介绍了 ADown 的核心代码实现、模块注册流程以及 YOLOv11-ADown 模型的配置和训练方法,为轻量化目标检测模型的优化提供了实用参考。

魔改工程师的博客 1465

银行监管报送系统系列介绍(二十一):银行监管报送系统总览

为保护法院案件当事人、利害关系人的合法权益,全面落实《最高人民法院、中国银行业监督管理委员会关于人民法院与银行业金融机构开展网络执行查控和联合信用惩戒工作的意见》(法【2014】266号),最高人民法院和银监会联合下发了《人民法院、银行业金融机构网络执行查控工作规范》(法【2015】321号),要求银行金融机构配合最高人民法院开展 “总对总”网络执行查控工作,并建立相应的业务系统,实现与法院的网络对接,协助法院完成对被执行人银行账户存款及其他金融资金的网络查询、冻结与扣划工作。

银行信息系统应用架构详解 2846

【PyTorch】CNN(一维卷积Conv1D)实现时间序列预测

本文介绍了一维卷积神经网络(Conv1D)在时间序列预测中的应用,展示了其基本原理及实现方式。通过合适的数据预处理和模型调参,Conv1D可以有效地捕捉时间序列数据中的模式,从而进行精准预测。

走向CTO的路上... 1168

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 机器学习中6大核心数据类型实战处理指南
下一篇: WAF绕过实战:从SQL注入基础到高级混淆技巧
cri5768
博客等级 码龄12年 18粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值