【导语:5月21日,Bun团队发布了关于其尚未发布的Rust重写版本的全面安全审计报告,揭示了代码库中unsafe语法节点的分布、来源及处置策略,还与业界同类项目进行了对比,并提出清理路线图。】
这份由AI辅助生成的审计报告显示,Bun的Rust代码库中有13,365个unsafe语法节点,分布在774个文件、51个子系统中。约69.4%(约9,300个)最终可转换为安全代码,仅约30.6%(约4,000个)需保留为unsafe。
从来源分布看,33.9%来自Zig时代的ownership惯用法,29.8%来自FFI边界,10.6%来自事件循环回调机制中同线程重入导致的别名化问题,仅约3%用于真正的性能优化场景。
从处置策略看,这些unsafe块被归为五种结局,包括无需降速即可安全化(46.9%)、添加一处检查后安全化(16.3%)等。
审计发现了五个实际存在的声超(soundness)漏洞,如`RacyCell`上的无条件`Sync`实现等。在与业界同类项目对比中,Bun当前每千行Rust约含13.7个unsafe,按清理计划执行后,预计可降至每千行4.2,接近Wasmtime水平。
团队提出的清理路线图包含八个步骤,依序推进,全部完成后,unsafe块将从13,365降至约4,000。
编辑观点:Bun此次审计是技术复盘,公开分类unsafe代码体现对开源社区负责,为大型代码库Rust化及unsafe代码管理提供借鉴。