不受信任代码的受限执行

我注意到这个问题已在此新闻组中进行了讨论
这些年来定期,我似乎明白了 -
python中的全面安全/限制执行不信任代码
目前很难实现。
如果安全要求有些放松怎么办?我会的
想要防止代码打开/损坏文件,格式化
驱动器或类似的灾难性利用。我不是特别
关心应用程序冻结或崩溃。也不是
检查和利用应用程序的对象。我想要的就是
确保如果有人使用我的应用程序和第三方
插件,最糟糕的情况是他们不能使用我的
使用该插件应用。
这是可行的吗?
谢谢你的帮助!
manu

# 回答1


10月30日,6:35*am," emanuele d'Arrigo" 你好。一种观点是您可以使用自定义Python做到这一点
安装,删除或限制导入语句,删除
或限制OS模块,文件类型等。这是一些
有问题的代码:
[]
外交代码可以进入"文件"类型。如果没有它,
那不是问题。
否则,您可以通过修改来删除对其的访问
但是,这是获得" cust"列表。也许您可以使用
用于改变整数的价值的技术。保密
发表。这会给您任何想法吗?
# 回答2


10月30日,3:50*下午,亚伦·布雷迪(Aaron Brady) 你好。 *一种观点是您可以使用自定义Python做到这一点
安装,删除或限制导入语句,删除
或限制OS模块,文件类型等 *这是一些
有问题的代码:
[]
外交代码可以进入"文件"类型。 *如果没有它,
那不是问题。
否则,您可以通过修改来删除对其的访问
但是,这是获得" cust"列表。 *也许您可以使用
用于改变整数的价值的技术。 *保密
发表。 *这会给您任何想法吗?
我指的是削减了这个特定的黑客
脆弱性。它清空了"对象"的" tp_subclasses"字段,但是
谁知道还有什么能做到的?
从_ctypes导入_cast_addr
_data_cast = c.pyfunctype(c.py_object,c.py_object,c.py_object,
c.py_object)(_ cast_addr)
x = _data_cast(对象,无,c.c_void_p)
y = _typeobject.from_address(x.Value)
y.tp_subclasses = 0#<---在这里完成的肮脏工作(尴尬)
断言(1)。
不过,奇怪的是,
_data_cast(对象,无,_ typeobject)
不起作用。
# 回答3


10月30日,8:50*PM,Aaron Brady 没有!并不真地!这些是我当前水平以外的Python怪癖
知识! 我怀疑我会简单地从我的申请中删除可能性
用户编写自己的插件。否则我只是依靠
有人接受Oppo的可能性 做某事
恶意。毕竟,有很多申请
将责任留在插件手中的架构
开发人员和插件用户。
不管怎么说,还是要谢谢你!
manu
# 回答4


在消息中

Emanuele D'Arrigo写道:
我认为最可靠的解决方案是利用
已经必须提供保护恶意代码的系统:使用
Chroot监狱。或使用自己的操作系统运行完整的虚拟化机器
安装。然后,代码可以自由执行自己想做的事情,它根本不会
看到任何敏感的东西可能会妥协。
# 回答5


11月1日,12:44*上午,劳伦斯·德奥利维罗(Lawrence D'Oliveiro)写道:
[叹息]对于小型应用程序,这听起来有些过分杀伤。我猜
有人应该想出一个沙盒版本的python,那可以是
用作为参数和所有操作系统提供的目录执行的目录执行
呼叫从未超过该级别。
manu
# 回答6


" emanuele d'Arrigo" []
这正是Chroot监狱 * *,除非您不需要等待
对于Python的特殊版本。您什么都不会获得任何东西
您描述的是,您不会通过建立一个chroot来
为此目的使用现有功能监狱。
- -
\您不能拥有一切;你会把它放在哪里?
`\ Wright |
_o__)|
本·芬尼
# 回答7


在文章<87 **********@benfinney.id.au>中
Ben Finney []
这正是Chroot监狱 * *,除非您不需要等待
对于Python的特殊版本。
更重要的是,内核处于更好的位置,可以理解如何
路径名映射到物理文件系统中的位置
申请可以。 Python应该试图理解这意味着什么
穿越符号链接?安装点?
# 回答8


感谢那些回答和抱歉没有回答的人。
好的,收到了信息:Chroot监狱。我知道Chroot可以使用
Unix般的OS作为内核提供的设施。如果我正在开发
说,Linux甚至MacOSX,甚至很容易。我的目标操作系统
但是是XP和Vista。我确实找到了各种类似Chroot的功能
这些操作系统的虚拟化平台,但绝对是
过度杀伤要求用户安装虚拟化
用于运行小应用程序的软件。我正在阅读此页面
在我看来,我唯一的两个选择是pypy-c和jython。将
您同意或有更多的途径可以探索我的操作系统
要求?
manu
# 回答9


" emanuele d'Arrigo" 如果您试图重新拟合安全执行不信任的代码
那些操作系统y ou比 尝试选择正确的Python实现。 祝你好运。 - - \如果我还没有看到别人,那是因为巨人是| \站在我的肩膀上。 _o__)| 本·芬尼

标签: python

添加新评论