lfa*_*one 14 python security pam suid
我有兴趣编写一个PAM模块,该模块将利用Unix登录的流行认证机制.我过去的大多数编程经验都是用Python编写的,我正在与之交互的系统已经有了一个Python API.我用google搜索并找到了pam_python,它允许PAM模块调用python intrepreter,因此允许PAM模块基本上用 Python 编写.
但是,我已经读到允许用户调用以比用户本身更高的访问级别运行的Python代码存在安全风险,例如SUID Python脚本.这些问题是否也适用于Python PAM模块?
Ale*_*lli 17
您提到的安全问题本身并不是"允许用户调用Python代码",它以高访问级别运行,但允许用户对此类代码的运行进行任何形式的控制 - 最明显的通过注入或更改代码本身,但更巧妙的是,还可以通过控制该进程的环境(例如,该代码导入模块的路径).(如果用户能够控制后者加载的路径,则类似的问题将适用于C编写的代码.so- 尽管操作系统可能更直接地帮助解决此类问题).
在我看来,它pam_python可以很好地抵御这些风险,因此它应该可以安全地用于您的目的.但是,请注意文档指出......:
从Python编写PAM模块会导致性能损失,并且需要安装Python,因此它不是编写将被广泛使用的模块的最佳选择.
因此,如果您提供的机制很受欢迎,那么您可能希望在C中对模块进行编码以避免这些问题.然而,在用Python进行原型设计之前,将其作为概念证据进行原型分析,然后在C中确定它是一种可行的策略.