MesaPy — 安全快速的Python开源项目

  • A+
所属分类:网络安全工具

MesaPy — 安全快速的Python开源项目

Python 是现代大数据/机器学习的重要基础,但是 Python 包含超过 30 万行 C 代码,含有很多安全漏洞和隐患,在高安全高可靠性场景下面临着严重的安全威胁。MesaPy 是一个内存安全的 Python 实现,基于 PyPy 并继承了 PyPy 显著的特点:卓越的运行速度(得益于 JIT 编译器)、高效的内存使用率、良好的兼容性、以及强大的并发处理(支持stackless 协程)。除此之外,MesaPy 专注于安全,通过 1. 使用内存安全语言重写外部库2. 加强 RPython 类型系统保障内存安全3. 形式化验证保障内部 C 代码的内存安全等方法,全面提升 Python 解释器的安全性,避免内存问题引发的高危安全漏洞。基于这些安全特性,MesaPy 也支持运行在 Intel SGX 中,开发者可以使用 Python 轻松地开发 SGX 应用,运行于可信运行环境中。

MesaPy 四大安全特性

MesaPy 拥有内存安全安全增强形式化验证SGX 支持四大安全特性,以下是详细介绍:

•   内存安全: 因为 MesaPy 基于由 RPython 实现的 PyPy,相比CPython,多数内置的 Python 库都具有相对安全的运行时。但是 PyPy 仍然依赖由非内存安全的 C 编写的外部库,这些外部库会引入潜在的内存安全问题。为了解决这些外部依赖中隐藏的内存安全问题,我们使用内存安全语言 Rust 重写了外部依赖库。同时,我们努力兼容原有的 API,确保开发者无需修改或少量修改,就可以无缝的享受 Rust 带来的内存安全保证。

•   安全增强:MesaPy 解释器由 RPython 语言实现,RPython 与 Python 语法类似,但是为强类型语言(通过 RPython 翻译器翻译为后端中间代码后编译执行)。其中 RPython 的 list 类型没有运行时数组越界的检查,这会导致使用中出现内存问题。我们通过修改 RPython 的 list 类型,使其可以运行时动态检查数组访问越界,保证数组访问的内存安全。

•   形式化验证:MesaPy 项目中的 Python 解释器不可避免的使用了 C 代码,为了保证这些代码的安全性,我们使用多款形式化验证工具对其进行内存安全属性的验证。其中包括缓冲区溢出(buffer overflow, buffer over-read),空指针解引用(nullpointer dereference)以及内存泄漏(memory leakage) 问题。现阶段,我们通过使用形式化验证的方法,验证 RPython 的翻译器本身,JIT 编译器后端,以及 RPython library 中部分的 C 代码。现在验证还在进行中,感兴趣的朋友可以根据文档尝试验证相关函数,帮助我们完善 MesaPy 的形式化验证。验证所需的 mock 函数,验证脚本,以及验证初步结果都已在开源代码中。

•   SGX 支持:在以上三点安全保证的基础之上,MesaPy 也同样支持 Intel SGX(一个可信的执行环境)。我们通过对 MesaPy 的精简和对 Python 内置库的改造,使开发者能够使用 Python 写出运行在 SGX 里的应用。MesaPy 对于SGX 的支持不仅加速了 SGX 应用的开发效率,同时也能保证运行在可信执行环境中应用的内存安全。针对 SGX 的支持还在开发当中,我们已经拥有一个可在 SGX 里执行的 Python 解释器,对于常用库的移植工作仍在进行,敬请期待后续更新。

MesaPy 项目仍在进行中,以上安全特性正在不断优化,代码都已开源在 GiHub,我们希望与开源社区共同构建 MesaPy 的未来。对于 MesaPy 更多的介绍,包括功能、路线图、安全特性的详细介绍等相见.

下载地址

部分内容被隐藏
评论刷新后查看
CE安全网
网络安全宣传推广

发表评论

您必须登录才能发表评论!