Trail of Bits Blog 中文 笔记

Trail of Bits Blog 中文

blog.trailofbits.com 是 Trail of Bits 的官方博客,这是一家提供渗透测试、安全编码和软件安全评估等服务的网络安全公司。博客似乎专注于分享与网络安全相关的知识和见解,文章和帖子涵盖了软件安全、威胁建模、漏洞分析和安全编码实践等多种主题。网站的设计简洁、整洁,布局直接,使用户可以轻松浏览和找到特定的文章或感兴趣的主题。网站上有一个搜索功能,允许用户快速找到特定的文章或主题。此外,文章还按主题分类,使用户可以轻松浏览相关内容。博客还特邀了网络安全领域的专家撰写客座博文,为网站提供了多样化的视角和见解。总之,Trail of Bits 博客似乎是一个有价值的资源,为那些想了解更多关于网络安全的人和想了解该领域最新发展和趋势的人。

笔记线程

Uniswap v4 引入了钩子(hooks),使开发者能够自定义池的行为,例如动态费用和外部集成。这将安全责任转移到了应用层和钩子代码上,正如 Cork 和 Bunni 漏洞所示,两者造成的损失合计超过 2000 万美元。这些漏洞源于应用层逻辑,而非 Uniswap v4 核心协议的缺陷。对审计报告的深入分析揭示了钩子代码中七种常见的失败模式。PoolManager 现在持有所有池的状态,而钩子作为独立合约在特定的生命周期点执行。池的身份包含其钩子地址,因此信任错误的 PoolKey 会影响所交互的池。基于会话的模型类似于闪电贷,确保在交易结束时货币差额结算为零。钩子开发者必须验证各项假设,包括调用者授权、合法池、自定义会计逻辑以及外部集成的安全性。一个关键的失败模式是未检查调用者,从而允许直接恶意调用钩子函数。使用 BaseHook、SafeCallback 以及 onlyPoolManager 有助于强制执行调用者检查。另一个问题是误将任何池视为合法;钩子必须绑定到规范池,或维护允许列表并重新检查 PoolIds。自定义会计错误可能导致价值静默泄露,因为结算仅检查总体差额,而不验证内部钩子会计的准确性。开发者必须将逻辑放置在针对预期状态的正确钩子中,因为 beforeSwap 使用换汇前的数据,而 afterSwap 使用换汇后的数据。钩子地址本身编码了权限;开发者必须保持这些位与已实现函数同步,以避免错误。最后,钩子故障可能阻塞池的操作;关键逻辑不应回滚并阻断用户流程,且必须谨慎处理外部依赖,以防止拒绝服务。
CdXz5zHNQW_VfsrNpCh6P.webp
Codex的目标特性通过让虫子狩猎独立朝着成功条件努力来增强,但要获得好结果,需要合适的提示、范围和每次结果数量。在“Patch the Planet”项目中,Codex指向了广泛使用的代码库,如Rust、curl和zlib,发现了所有提交的Rust漏洞,包括一个合理漏洞和一个编译错误。工程师们最终总结出三种使用目标功能的技巧,包括让Codex写目标、定义结果而非路径,以及为每个代理分配一个结果。让Codex来写目标之所以有效,是因为它比人类事先能指定更了解目标和自身倾向,并且能将威胁模型转化为具体、可测试的成功标准。定义结果,而非路径,意味着花费代币来定义结果,几乎没有告诉模型如何达到目标,一个好的目标能命名结果,精确定义它,并强制坚持。如果每个代理只分配一个结果,如果两个竞争结果放在一个提示词中,优化会不均衡,最好完全将覆盖范围从提示中移除,让Codex识别最有前景的攻击面。目标漏洞搜索最有效的资源是威胁模型文件,它精确定义了有效漏洞的样貌,但不解释如何找到它们。该功能目标是增强漏洞搜寻工作的强大工具,但其有效性仍依赖专家知道该去哪里查找、验证结果,以及维护者希望看到的有效漏洞披露。总体来看,该目标功能在发现漏洞方面取得了成功,包括Rust中的所有漏洞,并且有潜力打造一个定制的安全基础设施,使安全研究人员需要数周时间在一天内完成。
CdXz5zHNQW_28XGJVPJIa.webp
该公司发布了 Mewt,一个开源的变异测试引擎,用于识别测试套件中的漏洞,现已将其扩展以支持 DAML,即用于 Canton Network 应用程序的语言。Mewt 读取 DAML 代码,生成变异体,并将其通过现有测试套件运行,以统计存活变异体的数量。该数量反映了测试套件的检查程度,相较于传统的代码覆盖率报告,能提供更准确的测试有效性度量。代码覆盖率报告可能具有误导性,因为它仅表明代码是否被执行,而无法判断若代码未按预期工作,测试是否会失败。相反,变异测试通过破坏代码并检查测试是否失败来对测试进行评级,从而提供更全面的测试有效性度量。Mewt 对 DAML 的支持包括两种针对授权原语的新变异,而授权原语是 DAML 合约中常见的漏洞来源。该工具可轻松集成到现有工作流中,其输出能清晰指出缺失且需要编写的测试。通过使用 Mewt,开发人员可确保其测试全面且有效,降低代码中漏洞和错误的风险。公司计划继续改进 Mewt,包括增加更多变异类型,并提升其检测等价变异体的能力(即不影响代码行为的变更)。总体而言,Mewt 为开发人员提供了一个强大的工具,以提升测试的质量与有效性;其对 DAML 的支持是确保 Canton Network 应用程序可靠性与安全性的关键一步。使用 Mewt 有助于开发人员在开发早期识别并修复漏洞,从而降低交付高质量软件所需的总体成本和时间。
研究人员发现,某些 RSA 私钥的比特位严重偏向 0,这种特性可被检测并导致快速分解。与 badkeys 项目的 Hanno Böck 合作,他们发现了数百个具有此特性的唯一密钥,并分析历史数据以追踪该问题的演变。这些密钥中 0 比特的分布模式往往高度结构化,从而使得能够开发基于多项式的密码分析技术以利用该模式。研究人员识别出两类具有重复 0 比特块的 RSA 模数模式,其中一种模式尚未得到解释,另一种则归因于旧版 CompleteFTP 文件传输软件中大整数代码的类型不匹配。CompleteFTP 的漏洞还生成了易受攻击的短袖 DSA 密钥;研究人员通过互联网扫描恢复了 603 个唯一的 RSA 私钥和 74 个 DSA 密钥。badkeys 项目是一个开源服务,用于检查公钥是否存在已知漏洞;通过对真实世界密钥数据集的搜索,研究人员发现了大量在野外存在且具有上述模式的密钥。研究人员逆向工程了 CompleteFTP 的漏洞,发现其根源在于 limbs 的大小与随机数生成器(RNG)输出大小之间的不匹配。在 CompleteFTP 团队发布了一个自动检查易受攻击密钥并在需要时提示用户重新生成密钥的更新后,该漏洞已被遏制。研究人员还开发了一种通过将整数表示为多项式来进行整数分解的技术,该技术可用于分解一般的 RSA 模数。这些漏洞的发现凸显了实践研究的重要性,以及持续监控密码学实现以识别和解决潜在弱点的需求。
CdXz5zHNQW_iFKnuRveAb.webp
CdXz5zHNQW_sN7fPOqey7.webp
Trailmark 是一个新的开源库,能够将源代码转换为可查询的调用图。该图表示函数、类及其关系,并包含语义元数据。Claude 技能可以通过 Python API 直接与该图交互。传统的安全分析通常依赖发现列表,但攻击者以图的方式思考,这使得防御者处于劣势。Trailmark 旨在为 Claude 等 AI 模型提供基于图的推理能力。变异测试是一种通过引入微小代码变更来评估测试质量的方法,会产生大量存活的变异体。这些变异体的扁平列表无法区分等价变异体、死代码或真正具有意义的变异体。Trailmark 使 Claude 能够根据安全相关性对这些变异体进行分诊,例如从不可信输入的可到达性角度进行分析。该库分三个阶段处理代码:使用 tree-sitter 进行解析以生成抽象语法树(AST),索引到高性能图中,并查询调用者、被调用者和攻击面等信息。Trailmark 支持十七种编程语言,并提供八个预构建的 Claude Code 技能。这些技能可协助完成变异体分诊、测试向量生成和协议图绘制等任务。例如,"genotoxic"技能利用图分析对存活变异体进行分类;"vector-forge"技能则生成测试向量以填补已识别的覆盖率缺口。Trailmark 还集成了静态分析器和审计工具的发现结果,并将其映射到代码图上。在加密库的内部使用中,我们发现等价变异体在测试充分的代码中往往占多数,而扁平列表会遗漏这一细节。图分析还揭示了架构瓶颈,例如 libhydrogen 中单个置换原语影响了所有加密操作。对于缺乏标准化测试向量的新颖构造,变异测试通过识别测试未能约束代码行为的位置而证明其价值。在各种代码库中,出现了常见模式:算术模块具有较大的爆炸半径,编解码器解析器是模糊测试的理想目标,而基于属性的测试往往稀疏。最终,Trailmark 作为连接不同分析工具的纽带,使更针对性的安全评估成为可能。