MesaLock Linux 是百度安全实验室开源的一个通用 Linux 发行版本,其目标是用 Rust、Go 等内存安全语言重写用户空间应用(user space applications),以在用户空间中逐步消除高危的内存安全漏洞。这将极大的降低整个系统的攻击面,并且使得剩余的攻击面可审计、可收敛。
MesaLock Linux 在保留 Linux 硬件兼容性的前提下,实质性地提升了 Linux 生态的安全性。MesaLock Linux 的主要目标应用场景是容器(例如:docker 镜像),以及高安全性嵌入式环境,以后随着逐渐成熟,也可以向服务器或其他场景延伸。
为提供完善的功能,并保证强健的安全性,MesaLock Linux 将遵循 Rust SGX SDK 项目中提出的混合代码内存安全架构三原则:
-
隔离并模块化由非内存安全代码编写的组件,并最小化其代码量。
-
由非内存安全代码编写的组件不应减弱安全模块的安全性,尤其是公共 API 和公共数据结构。
-
由非内存安全代码编写的组件需清晰可辨识并且易于更新。
目前 MesaLock Linux 项目主要包括三个方面:
-
mesalock-distro:提供了 MesaLock Linux 发行版的编译程序,提供了 Live ISO 和 rootfs 两种发行方式。Live ISO 可以在虚拟机中启动或者直接在设备上运行,rootfs 主要为 docker 容器使用。
-
packages:这里面包括了 MesaLock Linux 提供的软件包的编译脚本,我们提供了使用内存安全的编程语言 Go 和 Rust 编写的一些常用软件,包括 shell、coreutils、findutils、文本编辑器等等。
-
minit, mgetty, giproute2:我们同时提供了用 Rust/Go 编写了启动 MesaLock Linux 过程中的核心组件。
除此之外,还提供了相关的文档,包括编译和使用 MesaLock Linux,编写新的软件包。
因为 MesaLock Linux 提供了 Docker 容器的运行环境,如果想要简单快速的尝试 MesaLock Linux,你只需运行:
$ docker run -p 8000:8000 --rm -it mesalocklinux/mesalock-linux
以上命令将进入 MesaLock Linux 的 shell,可以开始使用 MesaLock 中的其他工具。当然,也可以试用我们提供的 demo 程序,由 Rocket(Rust 编写的 web framework)写的网络微服务。demo 存放在 /root/mesalock-demo 目录下 。因为 docker 将 container 中的 8000 端口转发到 host 机器的 8000 端口,运行 /root/mesalock-demo/rocket-hello-world/hello_world,即可以在 host 机器上访问 demo。
MesaLock Linux 项目及其子项目选择使用 BSD 开源协议下开源。BSD 开源协议是一个给于使用者很大自由的协议,希望有更多的人来使用 MesaLock Linux,保护整个 Linux 系统的安全生态。同时,安全生态的可持续发展也离不开开源社区、工业界、学术界的共同参与,非常欢迎大家的贡献和支持。支持 MesaLock Linux 的途径有很多,例如:
-
尝试使用 MesaLock Linux,反馈使用感受和改进的建议等
-
参与贡献 MesaLock Linux 的开发流程、完善文档、帮助解答常见问题等
-
参与贡献 MesaLock Linux 维护的核心工具代码,比如说 minit、mgetty 等
-
尝试使用 Go、Rust 这类内存安全的编程语言编写用户空间应用,非常欢迎新的应用加入 MesaLock Linux 大家庭
-
参与审计 MesaLock Linux 及其子项目和相关软件包的代码安全