Solana开发者的首个扩展插件

  • Ackee
  • 发布于 5天前
  • 阅读 30

本文介绍了专为Solana开发者设计的VS Code插件,该插件通过实时静态分析和模糊覆盖可视化,将安全层直接引入编辑器。它能够即时反馈代码中的安全问题,无需额外工具或CI/CD延迟,从而帮助开发者在编码阶段尽早发现并修复潜在漏洞。

Solana 开发进展迅速。合约在几天内就从本地测试上线到主网。但是速度带来了风险:错过签名者检查或忽略未经测试的极端情况可能会损失数百万美元。

今天,我们发布了第一个专门为 Solana 开发者构建的 VS Code 扩展。它将两个重要的安全层直接引入到你的编辑器中:实时静态分析和模糊覆盖率可视化。在你编写代码时获得即时反馈,而无需单独的工具或 CI/CD 延迟。

它是什么

Solana VS Code 扩展将以安全为中心的开发工具添加到你现有的工作流程中。它运行两个主要feature:

实时安全分析 可以在你键入时捕获常见的 Solana 相关的漏洞。九个检测器从实际生产审计中的 findings 构建,标记了诸如缺少签名者检查、不安全的数学运算以及不正确的帐户初始化等问题,甚至在你编译之前。

模糊覆盖率可视化 显示你的 Trident 测试实际执行了哪些代码路径。绿色高亮标记已覆盖的行。红色高亮显示未测试的路径。执行计数显示了每行代码的测试彻底程度。

这两个feature都直接集成到 VS Code 中,无需任何配置。打开你的 Solana 项目,该扩展程序会立即生效。

实时安全分析

Rust 扩展可以捕获语法错误。但它无法捕获 Solana 特定的安全问题。

考虑以下代码:

#[derive(Accounts)]
pub struct UpdateConfig<'info> {
    #[account(mut)]
    pub authority: AccountInfo<'info>,
    #[account(mut)]
    pub config: Account<'info, Config>,
}

Rust

Copy

它可以编译。它可以运行。但是存在一个关键漏洞:权限帐户缺少签名者验证。任何人都可以调用此指令并修改配置。

Solana 扩展程序会立即使用红色波浪线和一个精确的诊断来标记它:“权限帐户上缺少签名者检查。”

九个检测器

每个检测器都针对在真实的 Solana protocol 审计中发现的漏洞:

  1. 缺少签名者验证

捕获需要签名者检查但没有签名的帐户。如果没有验证,特权功能将变为公共功能。

  1. 缺少 InitSpace

检测在没有正确空间初始化的情况下创建帐户。防止帐户没有足够分配空间时发生运行时故障。对于使用 Anchor 的 init 约束的程序至关重要。

  1. 不安全的数学运算

标记可能溢出或下溢的算术:

let total = amount1 + amount2;  // Flagged - no overflow protection

Rust

Copy

该扩展建议改为使用 checked_add()checked_sub()checked_mul()

  1. 手动 Lamports 归零

检测不安全的手动 lamports 操作。手动将 lamports 归零可能会绕过安全检查并产生漏洞。该扩展建议使用正确的关闭模式。

  1. 不可变帐户修改

捕获尝试修改标记为不可变的帐户:

#[account]
pub config: Account<'info, Config>,  // 默认情况下不可变
// 在代码中...
config.update();  // Flagged - 尝试修改不可变帐户

Rust

Copy

  1. 无效的指令属性

检测配置不正确的指令属性。防止在编译之前因格式错误的指令定义而导致的运行时错误。

  1. 未使用的指令属性

查找已定义但从未使用过的指令属性。通常表示未完成的实现或复制粘贴错误。干净的代码意味着更少的错误。

  1. 不正确的 sysvar 帐户访问

检测访问 sysvar 帐户的不正确方法。使用错误的访问模式会导致交易失败。该扩展确保你遵循 Solana 最佳实践。

  1. 缺少安全检查注释

标记没有安全文档的关键代码段。对于Audit和代码审查很重要。记录安全敏感操作安全的原因。

它是如何工作的

该扩展程序运行一个基于 Rust 的语言服务器,该服务器解析你的 Solana programs 并应用这九个检测器。分析在每次击键时都会发生。

当检测器发现问题时,你会看到:

  • 有问题的代码下方的红色波浪线
  • 解释问题的诊断消息
  • 通过键盘快捷键快速访问 (Ctrl+Alt+S / Cmd+Alt+S)

默认情况下启用所有检测器。无需设置。

模糊覆盖率可视化

单元测试验证特定场景。模糊测试生成数千个随机输入以查找极端情况。但是如果没有可见性,你将不知道你的模糊器实际测试了什么。

Solana 扩展与 Trident 集成,以准确显示你的模糊测试覆盖了哪些代码路径。

编辑器中的可视化覆盖率

在启用覆盖率的情况下运行 Trident 测试后,在 VS Code 中打开覆盖率视图。你的程序代码将显示带有颜色编码的高亮显示:

  • 绿线:由你的 Trident 测试覆盖
  • 红线:未测试的代码路径
  • 执行计数:每行执行的次数

这会立即显示间隙。错误处理分支显示零覆盖率。复杂的清算序列仍然未经测试。溢出保护未经执行。

真实示例

考虑一个具有存款、取款和清算功能的借贷 protocol

初始覆盖率显示所有存款和取款操作均为绿色。团队感到很自信。核心功能经过了彻底的测试。但是复杂的清算序列显示为红色。模糊器没有执行清算与待处理提款交互的极端情况。

他们为这些场景添加了有针对性的 Trident 流程。重新运行覆盖率。路径变为绿色。然后模糊器找到了它:清算逻辑中的一个关键会计错误,该错误允许在特定时间条件下进行双重支出

如果没有覆盖率可视化,该错误本应已发布到主网。

如何使用它

  1. 编写你的 Trident 模糊测试
  2. 在启用覆盖率收集的情况下运行测试
  3. 使用命令调色板在 VS Code 中打开覆盖率
  4. 识别红色(未测试)路径
  5. 添加针对这些路径的流程
  6. 重新运行并验证覆盖率是否提高
  7. 重复直到覆盖关键路径

可视化会随着你修改测试而实时更新。无需单独的工具或上下文切换。

为什么你需要这个

Solana 开发以高速和高风险的交汇处运行。即使是经验丰富的开发人员也会错过一些东西。代码审查会错过一些东西。单元测试会错过极端情况。

此扩展不会取代审核或全面测试。它在生产之前增加了两个安全检查:

静态分析可以在你键入时捕获常见错误。 在你的编辑器中获得即时反馈,而不是等待 CI/CD 管道或在昂贵的 audit 期间发现问题。

覆盖率可视化显示了模糊测试中的差距。 了解你的测试实际执行的操作,确定它们遗漏的内容,并有目的地进行测试,而不是抱有希望。

可以将其视为深度防御:

  • Layer1:Anchor framework 约束
  • Layer2:静态分析(此扩展)
  • 第 3 层:模糊覆盖率可视化(此扩展)
  • 第 4 层:集成测试
  • 第 5 层:安全审计

此扩展添加了Layer2和第 3 层。所有层协同工作。没有单层是足够的。

由审计员构建

这九个检测器来自生产 Solana 审计中的真实 findings。他们捕获了我们所看到的导致协议损失数百万美元的问题。覆盖率可视化与 Trident 集成,Trident 是我们构建并用于安全测试 Solana programs 的模糊测试框架。

我们构建这些工具是因为我们需要它们。现在它们可供每个 Solana 开发人员使用。

如何安装

该扩展程序现在可在 VS Code Marketplace 上获得。

选项 1:VS Code Marketplace

  1. 打开 VS Code
  2. 转到扩展(Ctrl+Shift+X / Cmd+Shift+X)
  3. 搜索“Solana”
  4. 打开第一个 result(由 Ackee Blockchain Security 开发)
  5. 点击安装

选项 2:命令行

code --install-extension ackee.solana

要求:

  • Visual Studio Code 1.96.0 或更高版本
  • Rust 和 Cargo(最新稳定版)用于安全扫描
  • 工作区中的 Trident 测试用于覆盖率feature

快速启动命令

安装后,通过命令调色板访问feature(Ctrl+Shift+P / Cmd+Shift+P):

  • solana: 扫描工作区以查找安全问题 (Ctrl+Alt+S / Cmd+Alt+S)
  • solana: 重新加载安全检测器 (Ctrl+Alt+R / Cmd+Alt+R)
  • solana: 显示代码覆盖率
  • solana: 关闭代码覆盖率
  • solana: 显示安全扫描输出

安全扫描在你键入时自动运行。覆盖率需要首先运行你的 Trident 测试。

路线图

[即将推出:我们正在积极开发基于社区反馈和我们的 audit 经验的附加feature。关注[@AckeeBlockchain](https://twitter.com/AckeeBlockchain) 获取有关新检测器、增强的覆盖范围feature和集成改进的更新。]**

结论

Solana 开发者不再需要在速度和安全性之间做出选择。

Solana VS Code 扩展 将实时安全分析和模糊覆盖率可视化直接添加到你的工作流程中。在你编写代码时捕获漏洞。查看测试覆盖范围中的差距。充满信心地发布。

它是免费和开源的。适用于任何 Solana 项目。与你现有的工作流程集成。

由 School of Solana 和 Trident 背后的团队构建。来自保护生产协议的审计师的专业安全工具。

立即从 VS Code Marketplace 安装,并在漏洞到达生产环境之前开始捕获它们。

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

0 条评论

请先 登录 后评论
Ackee
Ackee
Cybersecurity experts | We audit Ethereum and Solana | Creators of @WakeFramework , Solidity (Wake) & @TridentSolana | Educational partner of Solana Foundation