本文介绍了专为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 审计中发现的漏洞:
捕获需要签名者检查但没有签名的帐户。如果没有验证,特权功能将变为公共功能。

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

标记可能溢出或下溢的算术:
let total = amount1 + amount2; // Flagged - no overflow protection
Rust
Copy
该扩展建议改为使用 checked_add()、checked_sub() 或 checked_mul()。

检测不安全的手动 lamports 操作。手动将 lamports 归零可能会绕过安全检查并产生漏洞。该扩展建议使用正确的关闭模式。
捕获尝试修改标记为不可变的帐户:
#[account]
pub config: Account<'info, Config>, // 默认情况下不可变
// 在代码中...
config.update(); // Flagged - 尝试修改不可变帐户
Rust
Copy
检测配置不正确的指令属性。防止在编译之前因格式错误的指令定义而导致的运行时错误。
查找已定义但从未使用过的指令属性。通常表示未完成的实现或复制粘贴错误。干净的代码意味着更少的错误。

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

标记没有安全文档的关键代码段。对于Audit和代码审查很重要。记录安全敏感操作安全的原因。
该扩展程序运行一个基于 Rust 的语言服务器,该服务器解析你的 Solana programs 并应用这九个检测器。分析在每次击键时都会发生。
当检测器发现问题时,你会看到:
默认情况下启用所有检测器。无需设置。
单元测试验证特定场景。模糊测试生成数千个随机输入以查找极端情况。但是如果没有可见性,你将不知道你的模糊器实际测试了什么。
Solana 扩展与 Trident 集成,以准确显示你的模糊测试覆盖了哪些代码路径。
在启用覆盖率的情况下运行 Trident 测试后,在 VS Code 中打开覆盖率视图。你的程序代码将显示带有颜色编码的高亮显示:
这会立即显示间隙。错误处理分支显示零覆盖率。复杂的清算序列仍然未经测试。溢出保护未经执行。

考虑一个具有存款、取款和清算功能的借贷 protocol。
初始覆盖率显示所有存款和取款操作均为绿色。团队感到很自信。核心功能经过了彻底的测试。但是复杂的清算序列显示为红色。模糊器没有执行清算与待处理提款交互的极端情况。
他们为这些场景添加了有针对性的 Trident 流程。重新运行覆盖率。路径变为绿色。然后模糊器找到了它:清算逻辑中的一个关键会计错误,该错误允许在特定时间条件下进行双重支出。
如果没有覆盖率可视化,该错误本应已发布到主网。
可视化会随着你修改测试而实时更新。无需单独的工具或上下文切换。
Solana 开发以高速和高风险的交汇处运行。即使是经验丰富的开发人员也会错过一些东西。代码审查会错过一些东西。单元测试会错过极端情况。
此扩展不会取代审核或全面测试。它在生产之前增加了两个安全检查:
静态分析可以在你键入时捕获常见错误。 在你的编辑器中获得即时反馈,而不是等待 CI/CD 管道或在昂贵的 audit 期间发现问题。
覆盖率可视化显示了模糊测试中的差距。 了解你的测试实际执行的操作,确定它们遗漏的内容,并有目的地进行测试,而不是抱有希望。
可以将其视为深度防御:
此扩展添加了Layer2和第 3 层。所有层协同工作。没有单层是足够的。
这九个检测器来自生产 Solana 审计中的真实 findings。他们捕获了我们所看到的导致协议损失数百万美元的问题。覆盖率可视化与 Trident 集成,Trident 是我们构建并用于安全测试 Solana programs 的模糊测试框架。
我们构建这些工具是因为我们需要它们。现在它们可供每个 Solana 开发人员使用。
该扩展程序现在可在 VS Code Marketplace 上获得。
选项 1:VS Code Marketplace
选项 2:命令行
code --install-extension ackee.solana
要求:
安装后,通过命令调色板访问feature(Ctrl+Shift+P / Cmd+Shift+P):
安全扫描在你键入时自动运行。覆盖率需要首先运行你的 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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!