#free-threading

共收录 1 条相关安全情报。

← 返回所有主题
👥 作者: Baihong Chen, Hadley Westover, Wen Li

该论文关注 CPython 移除全局解释器锁(GIL,即 free-threaded 构建)后带来的新安全问题:原生 C 扩展代码原本不必面对 C 语言类型之外的并发语义,如今却会在「获取」与「使用」之间遭遇对象的并发撤销。作者指出,一个原生使用点实际依赖的运行时属性(被借用的对象、存储指针、遍历状态、租约等)可能因其他线程的变更或重入而被撤销,即使其属主对象仍然存活,从而导致原生内存错误和解释器运行时状态损坏。现有工作存在报告粒度错位:数据竞争分析只跟踪冲突访问,Python/C 生命周期分析只跟踪单个对象状态,二者都无法把隐含的「属主—主体—存储」关系与后续使用点在同一并发/重入语境下串联起来。为此作者提出 CONCURDEP,一种源码级静态分析框架,核心洞见是显式建模「原生使用点所要求的运行时属性」,并追问在依赖的存活区间内,哪一个目标匹配事件能够撤销该属性。系统包含三部分:恢复运行时语义依赖;通过事件感知的原生并发依赖图把依赖与事件相连;在共享引擎与六个机制插件中执行属性特定的状态与保护转移。评估显示其在 180 个配对语义一致性用例上全部正确分类;对三个生产级 CPython 版本的分析中位耗时 22.13–27.66 秒、峰值常驻内存 670–784 MiB;源码审计确认 4,273 个唯一生产指纹中的 1,094 个(25.60% 确认率)。消融实验表明,去掉派生关系恢复会使每个版本丢失 25–44 个被表示的根,去掉跨入口事件则丢失 73–94 个。研究共识别出跨 free-threaded 与传统 GIL 构建的 144 个不同缺陷,其中 95 个此前未公开报告。结论是:当依赖、事件与属性语义被显式表达时,可在发布规模上暴露跨越 API 边界与执行模式的严重后果。

💡 推荐理由: 无 GIL 是 CPython 的重大架构转向,C 扩展的并发正确性将直接影响解释器与下游生态的稳定性。该工作把「依赖失效」作为可静态推理的报告单元,并给出可复现的规模化分析结果与大量未公开缺陷,对运行时与扩展维护者具有直接工程价值。

🎯 建议动作: 研究跟进;评估将该分析框架纳入 C 扩展与自研运行时的代码审计流程

排序因子: 来自 arXiv 其他板块 (+2) | Community 数据源 (+1) | LLM 评分加成 (+0.5)