19 hours ago
- Fil-C通过指针的能力系统确保内存安全,动态跟踪允许的对象,并禁止越界、释放后使用及其他不安全访问。
- InvisiCaps是最新的能力模型,取代了PLUT、SideCaps和MonoCaps,在64位系统上提供64位指针,并将性能开销降低至约4倍。
- InvisiCaps支持有意义的联合体使用、线程安全以及灵活的内存类型重新解释,同时不牺牲安全性。
- 每个飞行指针都有一个可信的下界(用于边界检查)和一个不可信的intval(原始C指针值);程序无法修改下界。
- 当指针存储到堆时,intval放入对象负载中,下界放入单独的辅助分配中,使能力对程序不可见。
- 原子指针使用原子箱实现无锁操作,而非原子指针采用更便宜的辅助分配方法。
- 释放后使用通过将上界设置为与下界相等来确定性检测,访问时会触发恐慌。
- 该模型极度兼容,甚至支持未定义行为惯用法,灵感来自SoftBound和CHERI,但具有更好的线程安全性和兼容性。