paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Securing Verified IO Programs Against Unverified Code in F*

在 F* 中保护经验证的 IO 程序免受未验证代码影响
POPL 8(POPL)2024匹配度 2/10 · 该论文属于形式化验证与安全编译方向,虽与用户关注的“形式化验证”有边缘交集,但完全不涉及 LLM/Agent、静态分析、浮点程序分析或贝叶斯程序分析等核心方向。引用 5 inbox
Cezar-Constantin Andrici, Ștefan Ciobâcă, Cătălin Hriţcu, Guido Martínez, Exequiel Rivas, Éric Tanter, Théo Winterhalter
crossref: 2026-09-10

AI 速览

一句话:提出并验证 SCIO⋆ 安全编译框架,通过高阶契约与引用监控,使已验证 IO 程序与不可信上下文链接后仍满足全局轨迹性质。

论文针对已验证 IO 程序与未验证对抗代码链接时,其精化类型及历史 IO 前后条件等逻辑假设可能失效的问题,提出安全编译框架 SCIO⋆。源语言为 F* 子集,程序通过含精化类型和 IO 事件前后条件的高阶接口与 IO 上下文交互;目标语言是更小 F* 子集,编译后程序与缺少这些逻辑接口的对抗上下文链接。为弥合接口差距,SCIO⋆ 形式化验证地结合高阶契约与引用监控:编译用契约把逻辑假设转为边界动态检查,并可依赖监控状态中的历史 IO 事件;链接还强制上下文经安全 IO 库执行 IO,在每次操作前动态实施访问控制。作者在 F* 中证明 SCIO⋆ 可靠强制全局轨迹性质,并构造性地满足 Robust Relational Hyperproperty Preservation(RRHP)这一强安全编译准则;最后以 Web 服务器示例说明。

问题
如何安全编译并以不可信上下文链接已验证的 IO 程序,使其精化类型、前后条件等逻辑假设在对抗环境中仍被可靠强制?
方法
提出 SCIO⋆,将 F* 源程序编译到更小 F* 目标子集,用经 F* 验证的高阶契约在边界插入动态检查,并强制上下文通过带引用监控的安全 IO 库执行 IO,以在操作前实施访问控制。
评估
在 F* 中机器验证 SCIO⋆ 可靠强制全局轨迹性质并满足 Robust Relational Hyperproperty Preservation(RRHP)安全编译准则,并以 Web 服务器示例展示。
原文摘要(Abstract)

We introduce SCIO ⋆ , a formally secure compilation framework for statically verified programs performing input-output (IO). The source language is an F ⋆ subset in which a verified program interacts with its IO-performing context via a higher-order interface that includes refinement types as well as pre- and post-conditions about past IO events. The target language is a smaller F ⋆ subset in which the compiled program is linked with an adversarial context that has an interface without refinement types, pre-conditions, or concrete post-conditions. To bridge this interface gap and make compilation and linking secure we propose a formally verified combination of higher-order contracts and reference monitoring for recording and controlling IO operations. Compilation uses contracts to convert the logical assumptions the program makes about the context into dynamic checks on each context-program boundary crossing. These boundary checks can depend on information about past IO events stored in the state of the monitor. But these checks cannot stop the adversarial target context before it performs dangerous IO operations. Therefore linking in SCIO ⋆ additionally forces the context to perform all IO actions via a secure IO library, which uses reference monitoring to dynamically enforce an access control policy before each IO operation. We prove in F ⋆ that SCIO ⋆ soundly enforces a global trace property for the compiled verified program linked with the untrusted context. Moreover, we prove in F ⋆ that SCIO ⋆ satisfies by construction Robust Relational Hyperproperty Preservation, a very strong secure compilation criterion. Finally, we illustrate SCIO ⋆ at work on a simple web server example.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot2592,
  title = {Securing Verified IO Programs Against Unverified Code in F*},
  author = {Cezar-Constantin Andrici and Ștefan Ciobâcă and Cătălin Hriţcu and Guido Martínez and Exequiel Rivas and Éric Tanter and Théo Winterhalter},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {POPL},
  year = {2024},
  doi = {10.1145/3632916}
}