【问题标题】:Is compiling untrusted code in CPython considered safe?在 CPython 中编译不受信任的代码是否被认为是安全的?
【发布时间】:2016-05-30 09:12:16
【问题描述】:

在 Python 中,可以编译 Python 脚本而不执行(在 C 中使用 py_compile 模块,Py_CompileString)。

关于尝试对 CPython 进行沙盒处理的问题(以及它的难度)有很多文章,但是,我很想知道在编译 CPython 代码中是否存在已知的安全风险(没有执行其内容)。

换句话说,是否有已知的安全性取决于运行:

python -m py_compile file_from_unknown_source.py

在这种情况下,不良行为者可能能够在解析器或字节码生成器中找到漏洞,我的问题是关于这一点,以及是否有已知的漏洞可以执行此类任务,或者这通常被认为是安全的。


就本题而言,安全意味着:

  • 无法运行任意 Python 代码或 shell 命令。
  • 无法删除、创建或访问文件
    (当然除了编译好的pyc
  • 无法使用系统上的网络连接。

简而言之,除了编译代码或使用无效输入编译失败之外,不要做任何事情。

【问题讨论】:

标签: python security python-3.x


【解决方案1】:

不,这不安全。 CPython 有许多已知的错误,这些错误会导致堆栈溢出和其他令人讨厌的情况。 SIGSEGV 应被视为潜在可利用。

【讨论】:

  • 能否引用一个未解决且只能通过编译触发的问题? (不执行)。
  • 是否存在已知漏洞?还是这更像是一种假设/潜在风险?
猜你喜欢
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 2020-03-31
相关资源
最近更新 更多