Ind*_*ire 7 python ctypes cpython segmentation-fault python-2.7
我正在尝试将Python用于运行Linux的Arm处理器上的嵌入式应用程序(从X86/Linux交叉编译的CPython 2.7.3).在我开始确保设备安全以防止篡改之前,它确实运行良好.首先,我将rootfs设置为只读,以防止rootfs因突然断电而损坏,并防止未经授权的用户修改我们的主代码.仍然,python和我们的ctypes库继续正常工作./ tmp目录被映射到tmpfs(ramdrive).强化的另一个步骤是在tmpfs分区上设置noexec标志,以防止用户以某种方式上传任何可能导致本地root利用的代码.设置了这两个选项后,导入ctypes会立即产生段错误:
root@ATX4:~# python
Python 2.7.3 (default, Jul 16 2013, 17:15:57)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
Segmentation fault
Run Code Online (Sandbox Code Playgroud)
有趣的是,下面的任何更改都允许ctypes正常工作:
知道是什么导致了这个吗?现在,我已经在没有noexec的情况下进行了/ dev/shm mount,并且只是将其限制为尽可能少的用户.
我无法用 Python 2.7.6 重现这个;
我怀疑这可能是一个有效的错误。
考虑到 ctypes 可能需要创建一个唯一的回调(可执行的 C 级函数)。它将是mmap一些设置了执行位的匿名(可以)或共享文件(不行)。
内存错误处理总是很困难,而且开发人员很容易就逃脱了。
| 归档时间: |
|
| 查看次数: |
432 次 |
| 最近记录: |