首页 文章

Python PAM模块的安全性问题?

提问于
浏览
14

我和'm interested in writing a PAM module that would make use of a popular authentication mechanism for Unix logins. Most of my past programming experience has been in Python, and the system I'已经有一个Python API . 我用Google搜索并找到pam_python,它允许PAM模块调用python intrepreter,因此允许PAM模块基本上用Python编写 .

但是,我已经读到允许用户调用以比用户本身更高的访问级别运行的Python代码存在安全风险,例如SUID Python脚本 . 这些问题是否也适用于Python PAM模块?

1 回答

  • 17

    您提到的安全问题本身并不是以高访问级别运行的"allowing the user to invoke Python code",而是允许用户对此类代码的运行进行任何形式的控制 - 最明显的是通过注入或更改代码本身,但是,更巧妙的是,还要通过控制该进程的环境(例如,该代码导入模块的路径) . (如果用户能够控制后者加载的路径,那么类似的问题将适用于C编写的代码 - 尽管操作系统可能更直接地帮助解决这个问题) .

    在我看来, pam_python 可以很好地抵御这些风险,所以它应该安全地用于您的目的 . 但请注意the docs指出...:

    从Python编写PAM模块会导致性能损失,并且需要安装Python,因此它不是编写将被广泛使用的模块的最佳选择 .

    因此,如果您提供的机制很受欢迎,那么您可能希望在C中对模块进行编码以避免这些问题 . 然而,在用Python进行原型设计之前,将其作为概念证据进行原型分析,然后在C中确定它是一种可行的策略 .

相关问题