为什么SDK审计对Web3安全至关重要

本文讨论了Web3安全中SDK审计的重要性,强调了SDK作为连接dApp、钱包和区块链网络的关键层,其安全性常常被忽视。文章详细解释了SDK审计的定义、与智能合约和OpSec审计的区别,以及SDK审计的具体流程和评估领域,并列举了现实世界中SDK漏洞的案例,突出了进行SDK审计的必要性。

为什么SDK审计对Web3安全至关重要

你审计智能合约,那你的SDK呢?一个未经检查的漏洞可能会危及你的整个生态系统。了解为什么SDK审计是不可协商的。

介绍

在快节奏的Web3世界中,大多数项目都优先考虑智能合约审计和运营安全。然而,一个关键层经常被忽视:SDK,即连接dApp、钱包和区块链网络的软件开发工具包。SDK审计是一项重要的安全服务,可确保你的开发者工具没有可能危及用户、资金或你的声誉的漏洞。

在本指南中,我们将分解什么是SDK审计,为什么它们很重要,以及它们是如何进行的。这将帮助你理解为什么将SDK审计添加到你的安全策略中不仅是明智的,而且是必要的。

什么是SDK审计

image

软件开发工具包(SDK)审计是对开发者用于构建、扩展或集成Web3应用程序的库和工具进行的严格安全评估。SDK充当前端接口和区块链网络之间的桥梁,处理关键操作,例如钱包连接、交易创建和智能合约交互——通常在链下管理或中继敏感的用户数据。

由于SDK在区块链的链上共识之外运行,因此它们不受保护智能合约的安全检查的约束。因此,受损的SDK可以轻松绕过原本强大的链上安全保护措施。如果攻击者利用不安全的SDK,多个dApp可能会同时暴露,导致大规模的违规、资金损失或不可逆转的声誉损害。

优先考虑SDK审计的关键原因

  • 覆盖范围广:由于许多开发者共享同一个SDK,因此单个漏洞可能会在无数项目中像滚雪球一样蔓延。
  • 关键职责:SDK通常管理交易签名、用户身份验证和通信渠道——攻击者喜欢利用的核心功能。
  • 用户信任:即使你的链上代码是完美的,你的链下工具中的安全漏洞也会迅速损害用户的信心。
  • 法规遵从性:尤其是在受监管的行业中,全面的安全措施(包括SDK审计)既能证明尽职调查,又能证明符合高治理标准。

SDK审计与智能合约和OpSec审计有何不同

image

SDK审计侧重于保护与区块链系统交互的链下工具。虽然智能合约和OpSec审计涵盖了关键领域,但SDK审计填补了它们之间的关键空白——保护了连接你的应用程序、用户和区块链的粘合剂。

想要更深入地了解?

在Three Sigma,我们不仅专注于SDK审计,我们还编写了全面的指南来解释什么是智能合约审计和OpSec审计:

什么是智能合约审计以及如何选择合适的安全合作伙伴

加密OpSec指南(第1部分):私钥、钓鱼和安全

SDK审计中评估的关键组件和领域

image

当我们在 Three Sigma 审计SDK时,我们遵循一个多阶段流程,旨在发现显而易见和深层嵌入的漏洞。通过集成标准检查表、全面的代码审查和有针对性的测试策略,我们确保你的SDK符合行业最佳安全实践。以下是我们评估的核心方面:

1. 识别标准漏洞

SDK可能会遭受各种已知的弱点:

  • DoS(拒绝服务)易感性:验证大型或格式错误的输入不会崩溃或压垮系统。
  • 恶意库注入:检查依赖项中是否存在受损或植入的包。
  • 输入验证缺陷:确保所有外部/用户提供的数据都经过适当的清理,以防止注入。
  • 存储问题:捕获可能导致漏洞的未初始化、未使用或不安全的变量。

2. 业务逻辑检查

即使SDK通过了标准漏洞检查,逻辑缺陷仍然会带来重大风险:

  • 工作流和数据流图:映射每个功能以检测潜在的漏洞、后门或隐藏的威胁。
  • 数学和计算审查:确认加密或交易操作中的算术精度,以避免溢出。
  • 访问控制和角色:确保权限、角色和许可得到强有力的执行,不会发生意外升级。

3. 依赖关系和集成分析

由于大多数SDK依赖于外部库:

  • 第三方包:我们验证每个库是否是最新的、没有已知的CVE,并得到适当的维护。
  • 集成测试:确认与外部API或服务的稳定、安全通信。
  • 供应链安全:发现间接引入的恶意或高风险依赖项。

4. 手动审查和安全检查表

逐行手动代码审查仍然不可或缺:

  • 协议分解:构建交互方案以可视化所有数据和功能流。
  • 后门和死锁检查:搜索隐藏的代码路径和无限循环。
  • 自动化工具和静态分析:使用专门的安全扫描程序来补充人工监督。
  • 存储和文档:调查敏感数据是如何存储的,并确保清晰、一致的文档。

5. 测试阶段和验证

此阶段验证或反驳先前审查中标记的潜在问题:

  • 边缘案例测试:专门的测试针对可疑功能或已知的有问题输入。
  • 模糊和突变测试:生成随机或扭曲的数据以提示意外行为。
  • 集成和单元测试:检查加密模块、第三方调用和核心功能是否可靠地执行。
  • 交叉兼容性检查:对于跨多种语言(例如,Rust和TypeScript)的SDK,确认它们在不同环境中的行为一致。

6. 高级加密元素检查

加密模块需要更高的审查级别:

  • 密钥管理:确保私钥保持加密或安全存储。
  • 算法使用:验证SDK是否避免使用过时或专有的加密,而是支持成熟的标准(例如,secp256k1、SHA-256)。
  • OWASP和CCSSA (C4) 基准:在相关的情况下,使加密组件与公认的安全框架保持一致。

7. 综合报告和建议

完成后,我们将提供一份深入的报告,详细说明:

  • 已识别的风险和漏洞:按严重程度和潜在影响进行分类。
  • 缓解策略:用于修补或缓解每个问题的具体说明。
  • 长期安全性:关于改进文档、测试覆盖率和可持续开发实践的建议。

通过采用这种彻底的审计方法,Three Sigma 提供了对你的SDK安全态势的全面评估——确保你可以主动解决弱点并保持对潜在漏洞的强大防御。

真实世界SDK漏洞示例和经验教训

image

以下是流行的SDK中被利用的漏洞的实际案例。每个场景都突出了一个独特的风险领域——从依赖关系攻击到加密疏忽——并强调了对链下安全进行严格审计的关键需求。

不安全的依赖关系/供应链攻击

Solana Web3.js库 (2024) – 当攻击者控制了一个npm发布者账户时,官方的Solana JavaScript SDK受到了损害。他们发布了两个@solana/web3.js的恶意更新,其中注入了后门代码,能够窃取私钥并从使用这些版本的任何应用程序(例如机器人)中提取资金。这种供应链攻击没有影响Solana区块链本身,但它 targeted 了链下SDK;在短暂窗口期内不知情地更新的项目暴露了他们的密钥。

Ledger Connect Kit (2023) – Ledger的Connect Kit SDK(用于将硬件钱包链接到dApp)通过npm供应链攻击被短暂劫持。Ledger的一位前开发者的npm凭据遭到 phishing,导致恶意发布了包含嵌入式恶意软件的包(v1.1.5-1.1.7)。篡改的SDK更改了交易逻辑——它“允许黑客操纵用户可见的功能,导致他们无意中将资金发送给攻击者”而不是他们预期的接收者。Ledger的团队在几个小时内发现了并修复了该问题,但它突显了受损的依赖项如何注入未经授权的代码并重定向加密资产。

API漏洞和逻辑缺陷

WalletConnect Verify API (2023) – WalletConnect,一种流行的Web3钱包连接协议,引入了一个“Verify API”来警告用户有关可疑的dApp域。但是,此Web API中的逻辑缺陷(反射型XSS漏洞)允许攻击者将恶意脚本注入到验证提示中。在实践中,攻击者可以制作一个 phishing 页面,该页面触发API的警告,但其 payload 会欺骗用户批准意外的交易(例如,在不知不觉的情况下授予token限额)。根本原因是API的域处理中的输出清理不足,导致Web3上下文中出现经典的Web漏洞。

加密弱点

Profanity Vanity Address Tool (2022) – Profanity,一种用于生成“vanity”以太坊地址的链下工具,被发现具有严重的加密弱点。它没有依赖于安全的熵,而是仅使用32位随机种子来生成256位私钥——大大降低了有效的密钥空间。这使得攻击者能够对 vanity 地址的生成过程进行逆向工程,并在正确生成的密钥所需时间的很小一部分内恢复私钥。

该缺陷使攻击者能够通过模拟确定性密钥生成逻辑将公共地址映射回其原始的低熵种子。这导致了几个钱包的 compromise,最值得注意的是导致DeFi做市商Wintermute损失约 1.6亿美元

权限和访问控制问题

Stellar Freighter Wallet (2023) – Freighter浏览器钱包SDK(用于Stellar)包含一个访问控制错误,允许任何网站在未经用户同意的情况下与特权钱包功能进行交互。具体来说,由于扩展程序中不正确的消息处理,恶意站点可以发送与钱包自己的UI无法区分的伪造请求,从而欺骗Freighter在后台显示用户的密钥恢复短语。这意味着攻击者只需诱使用户访问网页即可提取私钥(恢复短语)——无需点击或批准。

Coin98 Wallet Extension (2023) – 类似的逻辑缺陷影响了Coin98浏览器钱包。它的内部API公开了一个开发人员标志,当设置该标志(isDev:true)时,钱包会将传入消息视为已授权的UI操作。攻击者的网页可以发送此类消息来解锁钱包,甚至无需任何用户批准即可触发交易。实际上,这种访问控制漏洞允许远程、隐形地提取资金——钱包会签署并广播交易,就好像用户已确认它们一样。

错误处理和数据泄漏

Coinbase WaaS SDK (Lindell17 Vulnerability, 2023) – 研究人员发现了几个实施Lindell17双方ECDSA签名协议的钱包SDK中的一个缺陷。该问题 (CVE-2023-33242) 源于不正确的错误处理:如果签名尝试失败,协议的实现不会安全地中止,而是泄漏了一小部分私钥。有能力诱发签名错误的攻击者可以重复触发失败并每次尝试收集密钥的1位,最终在约256次尝试后重建整个256位私钥。根本原因是忽略中止条件而偏离了发布的协议,从而通过侧信道错误数据导致敏感信息泄露。

这些漏洞虽然多种多样,但有一个共同的主题:它们可以通过勤勉的监督来预防。 为了保护你的dApp并保护用户资产,彻底的SDK审计至关重要。

image

结论

安全的软件开发工具包是任何成功的Web3应用程序的基石。即使是最防弹的智能合约和最完善的基础设施也可能因链下代码中的弱点而受到损害。SDK审计弥合了这一关键差距,确保你依赖的开发工具不会默默地危及用户资产、品牌声誉和法规遵从性。

通过彻底检查你的SDK的架构、代码质量、加密模块和依赖项,你可以预防漏洞并围绕你的核心功能构建堡垒。 SDK审计不仅仅是一种防御措施,它还是一项战略投资,可以培养用户信任、加快监管部门的批准并保持项目的长期价值。

准备好加强你的Web3工具包了吗?

安排与Three Sigma的SDK审计 并立即保护你的去中心化生态系统的基础。

经常问的问题 (FAQ)

1. 如果我的智能合约已经很安全,为什么我还需要SDK审计?

保护你的链上代码至关重要,但 SDK在链下运行 并且可能会引入与智能合约中发现的漏洞一样严重的漏洞。 通过审计你的SDK,你可以确保将用户连接到区块链的工具同样强大和值得信赖。

2. 我应该多久安排一次SDK审计?

理想情况下,每次代码更新后都应执行SDK审计,尤其是在你添加新功能、修改关键逻辑或引入新依赖项时。 许多团队仍然选择定期进行全面审计(例如,每年或每两年一次的审查),以在不断变化的威胁之前保持领先地位。 但是,每次代码更改后都进行 较小的 targeted 审计 是确保持续安全并最大限度地降低新引入漏洞的风险的最佳方法。

3. SDK审计的典型时间表是什么?

时间表因 范围复杂性 而异。 较小的SDK可以在几天内完成审查,而具有多个集成的更广泛的代码库可能需要 两到三周 或更长时间。

4. SDK审计是否涵盖第三方库或仅涵盖内部代码?

全面的SDK审计包括 所有依赖项、集成和第三方库。 这种方法有助于检测 供应链风险——恶意代码注入最常见的向量之一。

5. 审计会中断我正在进行的开发吗?

大多数审计员 在现有代码存储库上工作 并且不需要访问生产系统,因此中断是最小的。 如果需要修复,你可以按照最终审计报告中的建议安排补丁发布或 hotfix。

6. SDK审计是否有助于法规遵从性?

是的。 金融、游戏和企业 项目通常依赖第三方审计来证明风险管理方面的尽职调查。 通过证明 链上和链下组件 都符合严格的安全标准,SDK审计可以加强合规工作。

7. 审计后我会收到详细的安全报告吗?

当然。 你将获得一份 综合报告,其中概述了每个已识别的问题、其严重性评级、潜在影响以及明确的补救建议。 此最终文档还包括一份 executive summary,可以轻松地与利益相关者和非技术团队成员分享。

8. 如果我的SDK是闭源或专有的怎么办?

闭源代码仍然可以被审计。 声誉良好的审计员通常会签署 保密协议 (NDA) 以保护你的知识产权。 审计侧重于识别漏洞,不需要代码可以公开访问。

9. 我可以在问题修复后请求重新验证吗?

是的。 许多审计公司(包括Three Sigma)提供 重新验证服务(有时称为“后续审计”),以确保补丁和更新完全解决了任何报告的漏洞。

10. SDK审计是否包括性能优化?

虽然主要目标是 安全性,但SDK审计可以高亮显示性能瓶颈,尤其是在它们带来拒绝服务 (DoS) 风险时。 但是,更深入的性能优化通常需要 单独的评估 或专门的审查。

  • 原文链接: threesigma.xyz/blog/SDK/...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Three Sigma
Three Sigma
Three Sigma is a blockchain engineering and auditing firm focused on improving Web3 by working closely with projects in the space.