首页
/ 探索安全的代码执行新境界:CodeJail

探索安全的代码执行新境界:CodeJail

2024-05-20 11:54:23作者:沈韬淼Beryl

项目介绍

在软件开发中,有时我们需要运行不可信的代码以进行测试或评估,例如学生提交的作业代码。CodeJail 是一个专为此类场景设计的开源项目,它提供了一种安全的方式,在沙箱环境中执行Python或其他语言的代码,确保系统免受恶意代码的影响。

项目技术分析

CodeJail 的核心是利用 AppArmor 安全模块来限制程序的执行环境。AppArmor 是一种强制访问控制框架,可确保只允许特定的操作,防止不法行为。此外,CodeJail 还基于虚拟环境(virtualenv)隔离和权限管理来创建安全的沙箱执行环境。它的沙箱由四个主要部分组成:

  1. Sandbox Environment:预装了Python及核心包。
  2. Sandbox Packages:额外所需的包,如评分脚本。
  3. Untrusted Packages:用户的代码及其可能修改的数据。
  4. OS Packages:系统的标准库。

CodeJail 提供两种运行模式:安全模式和不安全模式。未配置安全设置时,默认为不安全模式,适合无需严格安全控制的开发者机器。

项目及技术应用场景

CodeJail 主要适用于在线教育平台、代码审核工具以及任何涉及运行用户提交代码的场景。比如:

  • 在线编程教育平台:用于安全评估学生的代码,并返回结果。
  • 开源项目贡献者测试:自动运行贡献者的代码以验证其安全性。

项目特点

  1. 安全性:通过AppArmor和资源限制(CPU时间与内存),CodeJail为代码执行提供了强大的安全保障。
  2. 灵活性:支持Python和其他语言,且能在安全和非安全模式下运行,适应不同的开发环境需求。
  3. 自动化配置:能自动检测并配置Python执行环境,简化集成过程。
  4. 用户账户管理:使用两个用户账户策略,确保代码执行过程的安全隔离。
  5. 模块化设计:代码结构清晰,方便扩展和定制沙箱环境。

安装与使用

安装CodeJail涉及到创建新的虚拟环境、添加用户、配置sudoers文件和AppArmor等步骤。一旦完成,你可以通过Python终端测试其安全执行功能,确保不可达数据(如/etc/passwd)不能被访问。

总的来说,CodeJail 是一款强大的工具,旨在帮助开发者和教育工作者在不牺牲安全性的情况下运行不可信的代码。如果你正面临如何安全地处理用户提交的代码的问题,那么CodeJail无疑是一个值得尝试的选择。现在就加入CodeJail的社区,体验更为安全的代码执行环境吧!

登录后查看全文

项目优选

收起
kernelkernel
deepin linux kernel
C
33
16
docsdocs
暂无描述
Markdown
843
5.64 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
835
1.26 K
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.03 K
2.44 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
839
1.67 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
507
540
flutter_flutterflutter_flutter
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.13 K
304
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
496
337
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.24 K
1.36 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.15 K
844