写点什么

在 Python 代码中安全隔离依赖项的沙箱技术

作者:qife
  • 2025-08-07
    福建
  • 本文字数:555 字

    阅读完需:约 2 分钟

Python 依赖项的安全沙箱隔离技术

运行不可信源代码仍是未解决的难题,尤其在 Python/JavaScript 等动态语言中。本文作者通过两个尖锐问题引出主题:


  1. 为什么导入 requests 库进行 HTTP 请求时,该库能获得 sudo 终端权限?

  2. 为什么 logging 模块在只需写入文件时,却能发起网络/LDAP 请求(如 Log4Shell 漏洞)?

技术方案

作者开发了secimport工具,其核心原理是通过 DTrace 监控 Python 模块的系统调用。关键技术点包括:


  1. 危险操作拦截


import secimportpickle = secimport.secure_import("pickle")# 恶意pickle数据将触发进程终止pickle.loads(b"\x80\x04...Exploited!...")  # [1] 28027 killed
复制代码


  1. 网络访问控制


requests = secure_import('requests', allow_networking=False)requests.get('https://google.com')  # 触发进程终止
复制代码


  1. Shell 防护


subprocess = secure_import("subprocess", allow_shells=False)subprocess.check_call('ps')  # 触发进程终止
复制代码

实现架构

  1. DTrace 探针:通过 dscript 脚本实时监控 syscall

  2. 关联数组:高效匹配模块与系统调用

  3. 策略模板:自动生成沙箱配置文件(存储于/tmp/.secimport/

对比现有方案

应用场景

  • 保护 PyPI 潜在恶意包

  • 限制过度权限(如 logging 模块)

  • 模型部署安全(PyTorch+eBPF 扩展)


项目已开源:GitHub仓库更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
在Python代码中安全隔离依赖项的沙箱技术_Python安全_qife_InfoQ写作社区