< 返回版块

Mike Tang 发表于 2026-04-25 09:09

Pyscan:用 Rust 重写的 Python 安全扫描工具

一位开发者分享了他耗时 3 年开发的项目 Pyscan,这是一个用 Rust 编写的 Python 安全工具。

开发背景

  • 项目持续时间:断断续续开发了 3 年
  • 核心目标:解决传统 Python 安全工具在生产 CI/CD 流程中的性能和内存瓶颈问题

解决的痛点

  • 开发者为了加快 CI/CD 速度会放弃较慢的安全工具,间接导致安全隐患
  • 内存限制使得额外添加安全工具变得不合理

主要功能

  • 自动遍历 Python 项目
  • 支持多种包管理格式(uv、poetry、flit、pdm、requirements.txt、SBOM,甚至源代码)
  • 将依赖项与开源漏洞(OSV)数据库进行交叉对比

性能对比

  • 与基于 Rust 的 uv audit 性能相当,有时甚至更快
  • 开发者坦言:如果已使用 uv,实际上不需要 pyscan

最新版本新特性

  • SBOM 原生支持:可解析 CycloneDX(bom.json)和 SPDX(spdx.json)文件

原文链接:https://www.reddit.com/r/rust/comments/1su92b4/i_rewrote_python_security_tooling_in_rust_meet/

comperr:轻量级过程宏编译错误处理库

一位 Rust 开发者在 r/rust 社区分享了自己开发的实用工具库 comperr,专门用于简化过程宏(proc-macro)中的错误处理。

解决的问题

  • 传统的 compile_error! 宏虽然能报告错误,但错误位置通常只会指向宏调用点,而不是实际出问题的 token
  • 对过程宏开发者来说,这会让诊断信息不够精确,影响调试体验

comperr 的做法

comperr 提供了简洁的 API 来处理编译错误:

  • 单个错误:直接调用 comperr::error(span, "错误信息") 返回错误
  • 多个错误:可创建空错误集合,逐步合并多个错误后统一返回
  • 迭代器收集:支持从迭代器中批量收集错误

技术特点

  • 通过为生成的 token 显式设置 .set_span(),让编译器把错误定位到更准确的位置
  • 仅依赖 proc_macro2
  • 最低支持 Rust 1.85

原文链接:https://www.reddit.com/r/rust/comments/1su94io/comperr_lightweight_crate_for_invoking/

Rust 标准库字符串 join 函数堆溢出漏洞修复

在 Rust 标准库的 [T]::join API 中发现了一个堆溢出漏洞,该漏洞可以通过安全的 Rust 代码触发内存损坏,甚至可能导致代码执行。

问题根源

  • join_generic_copy 对第一个切片元素重复调用了两次 Borrow::borrow()
  • 第一次用于长度计算,第二次用于实际拷贝
  • 对带内部可变性的病态实现来说,两次调用返回的内容可能不一致,从而导致长度预估失真

风险表现

  • 可能触发整数下溢和越界写入
  • 影响公共 API [T]::join
  • 属于可由安全 Rust 代码触发的健全性问题

修复思路

修复目标是让备用容量目标切片的长度仅基于实际分配结果推导,不再依赖受重复 Borrow 调用影响的未经检查减法;即便 Borrow 实现不一致,也最多 panic,而不是发生越界访问。

原文链接:https://github.com/rust-lang/rust/pull/155708

zkmcu - 微控制器零知识证明验证器

zkmcu 是一个用 Rust 编写的 no_std SNARK 和 STARK 验证器家族,专为微控制器设计。

支持的证明系统

  • Groth16 on BN254(EIP-197 格式)
  • Groth16 on BLS12-381(EIP-2537 格式)
  • Winterfell STARK(基于 Goldilocks + Blake3)

硬件目标

首个目标平台是 Raspberry Pi Pico 2 W(RP2350 芯片),同时包含 ARM Cortex-M33 和 RISC-V Hazard3 核心,便于跨指令集架构对比。

性能亮点

在 150 MHz 的 Pico 2 W 上,STARK Fibonacci-1024 验证时间可达 75 ms,Groth16/BN254 为 1176 ms,Groth16/BLS12-381 为 2015 ms,展示了证明体积与验证速度之间的典型权衡。

原文链接:https://www.reddit.com/r/rust/comments/1suc0jx/zkmcu_a_family_of_nostd_snark_and_stark_verifiers/


From Rust中文社区 Mike

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页