Chaos Communication Congress (37C3) 技术回顾
上月,我们的两名工程师参加了在汉堡举办的第37届混沌通信大会(37C3),与数千名黑客齐聚一堂,交流技术和安全领域的最新研究成果。与普通技术会议不同,这场年度盛会聚焦技术与社会互动,涵盖政治、娱乐、艺术、可持续性等话题——最重要的是安全议题。首届大会于80年代举办,当时黑客展示了德国BTX系统银行应用的漏洞;今年大会主题“解锁”则强调打破技术壁垒,探索数字权利与隐私的新边界。
本文将回顾我们在37C3的技术贡献——涵盖二进制漏洞利用分析与模糊测试——并重点推荐几场值得关注的演讲。
PWNing技术聚会
Trail of Bits工程师Dominik Czarnota自行组织了两场关于PWNing(即二进制漏洞利用)的技术会议。这些聚会展示了CTF竞赛、逆向工程和漏洞研究中常用的Pwndbg和Pwntools工具。
在第一场会议中,Dominik介绍了Pwndbg——一款GDB插件,通过在每次程序停止时显示有用的上下文信息来增强底层代码调试能力。这些上下文包括被调试程序的状态(寄存器、可执行代码和堆栈内存)以及解引用指针,帮助用户理解程序行为。演示展示了Pwndbg的特性和命令,例如列出内存映射(vmmap)、显示进程信息(procinfo)、搜索内存(search)、查找指向特定内存映射的指针(p2p)、识别栈保护值(canary)以及控制进程执行(nextsyscall、stepuntilasm等)。演示最后发布了Pwndbg速查表,并预告了即将推出的功能,如跟踪GOT函数执行和glibc堆use-after-free分析。这些功能是Trail of Bits冬季实习项目的成果,该项目已举办十三届,邀请实习生研究行业最具挑战性的问题。
第二场会议中,Arusekk和Peace-Maker展示了Pwntools的高级功能——这是一款用于漏洞利用开发的瑞士军刀式Python库。他们演示了接收和发送数据的专业方法(如io.recvregex或io.recvpred);运行漏洞利用脚本时的命令行技巧(如设置DEBUG、NOASLR或LOG_FILE等环境变量或参数);以及其他实用功能,如libcdb命令行工具、shellcraft模块和ROP(面向返回编程)辅助工具。错过会议者可在此查看幻灯片。
新一代模糊测试
在《同时模糊测试所有目标》演讲中,AFL++和LibAFL团队展示了LibAFL模糊测试器的新功能。他们提出了基于QEMU的插桩技术来模糊测试纯二进制目标,并使用QEMU钩子启用检测器以发现漏洞。除了团队基于QEMU的AddressSanitizer实现QASan外,还开发了能发现不止内存破坏漏洞的注入检测器。通过QEMU钩子,可以在TOML配置文件中定义规则来检测SQL、LDAP、XSS或OS命令注入。配置文件检查表明该工具应能轻松扩展至其他注入类型;我们只需知道要挂钩哪些函数以及查找哪些载荷。
尽管内存安全语言(如Rust)的部署将减少内存破坏漏洞,但模糊测试在发现注入或逻辑漏洞等其他漏洞类别方面仍将发挥重要作用,因此看到检测这些漏洞的新工具令人振奋。
该演讲的问答环节提醒我们,oss-fuzz已经有一个利用ptrace系统调用的SystemSanitizer,过去曾帮助发现命令注入漏洞。
Trail of Bits曾与Inria合作,在名为tlspuffin的学术研究项目中使用LibAFL。该项目目标是模糊测试各种TLS实现,发现了wolfSSL中的多个漏洞。
无处不在的侧信道攻击
在题为《完全访问:暴露并利用AACSv2 UHD DRM以获得观看乐趣》的演讲中,Adam Batori提出了针对Intel SGX的侧信道攻击概念。由于Trail of Bits经常审计使用Intel SGX等可信执行环境的项目(如Mobilecoin),该演讲对我们尤其吸引。
在概述物理媒体DRM历史后,Adam详细介绍了sgx.fail背后的研究团队如何从SGX enclave提取加密密钥材料,破解UHD蓝光光盘的DRM,以证明对安全enclave进行现实世界侧信道攻击的可行性。过程中,他讨论了SGX的许多技术特性。
这项工作和演讲引发了关于英特尔决定在消费硬件上停用SGX的讨论。由于低成本消费设备上侧信道攻击的高风险,我们认为将Intel SGX用于DRM目的从开始就注定失败。侧信道攻击只是使用enclave保护数据时常被忽视的挑战之一。
新挑战:Rust逆向工程
Trail of Bits工程师经常审计Rust编写的软件。在《Rust二进制分析:特性逐个看》演讲中,Ben Herzog讨论了Rust编译器的编译输出。理解Rust如何构建二进制文件很重要,例如优化Rust程序或理解安全与非安全Rust代码的交互。演讲聚焦调试编译模式,展示Rust编译器如何为范围迭代生成代码、使用迭代器或优化Rust枚举布局。演讲者还指出Rust字符串不以空字符结尾,这可能导致Ghidra等逆向工程工具产生难以理解的输出。
演讲作者提出了遇到特性相关函数调用时应回答的四个问题:
- 被调用函数的名称是什么(例如next)?
- 函数在什么类型上定义(例如Values<String, Person>)?
- 函数返回什么类型(例如Option)?
- 函数属于哪个特性(例如Iterator<Type=Person>)?
更多细节可查看Ben Herzog的博客文章。
专有密码学的危害
在《TETRA:BURST》演讲中,研究人员披露了TETRA无线电协议中的多个漏洞。该协议被欧洲及其他地区的政府机构、警察、军队和关键基础设施使用。
令人震惊的是,专有密码学在某些行业仍是默认选择。通过要求安全研究人员签署NDA来隐藏规范,大大限制了系统的可审查性。
由于出口管制,TETRA中存在几类算法。较旧的TEA1仍活跃部署中,但仅使用32位密钥长度。尽管规范不再推荐使用它,但实际中仍在积极使用,考虑到这些薄弱协议被用于保护关键基础设施,这尤其成问题。
研究人员通过从在线经销商处获取无线电硬件,演示了漏洞的可利用性。
你真的拥有自己的火车吗?拥有自己的汽车吗?
在《破解波兰火车的“DRM”》演讲中,研究人员报告了被独立火车维修公司招募后遇到的挑战,该公司想确定为什么某些火车在维修后无法运行。
通过逆向工程,研究人员发现了火车中的几个反功能,使它们在各种情况下停止工作(例如,在一定时间内未移动或位于竞争对手维修店的GPS位置时)。演讲涵盖了关于火车软件的有趣技术细节,以及研究人员如何逆向工程固件,并质疑用户应在多大程度上控制他们拥有的车辆或设备。
作为开发者和审计者,我们能从黑客身上学到什么?
黑客拥有独特的问题解决思维,向开发者和审计者展示了在网络安全中创造性非常规思维的重要性。活动强调了正确保护系统的必要性,并从充分理解的威胁模型开始。依赖混淆的不正确或专有方法无法充分保护最终产品。将密码原语隐藏在NDA后等控制措施只会混淆协议工作原理;它们不会使系统更安全,反而增加安全研究人员的工作难度。
大会强调持续学习,展示了网络安全的不断演变本质,敦促专业人士紧跟最新威胁和技术。道德考虑是一个焦点,强调开发者和审计者在工作中尊重用户隐私和数据安全的责任。
37C3上看到的黑客社区协作精神,为科技行业内的开放交流和相互学习树立了榜样。在Trail of Bits,我们通过公开发布博客文章、帮助开发者保护代码的测试手册等资源以及关于零知识证明研究的文档,致力于展示这些价值观。
结语
我们强烈推荐亲自参加37C3,尽管日期不幸安排在圣诞节和新年之间,且大多数演讲可在线直播观看。大会包括许多自组织会议、研讨会和集会,对安全研究人员特别有帮助。我们最初计划在37C3披露最近发布的LeftoverLocals漏洞(影响AMD、高通和苹果等知名GPU供应商),但推迟了发布日期以给GPU供应商更多时间修复漏洞。漏洞披露最终于1月16日发布;我们可能会在明年的38C3上报告发现和披露该漏洞的经验!
如果您喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News