代码之家  ›  专栏  ›  技术社区  ›  lfaraone

python pam模块的安全问题?

  •  14
  • lfaraone  · 技术社区  · 15 年前

    我对编写一个PAM模块很感兴趣,该模块将使用一种流行的Unix登录身份验证机制。我过去的大部分编程经验都是在Python中,我正在与之交互的系统已经有了一个PythonAPI。我到处搜索,发现 pam_python 它允许PAM模块调用python intrepreter,因此允许基本上编写PAM模块 在里面 蟒蛇。

    但是,我已经了解到,当允许用户调用比用户本身具有更高访问级别的python代码时,存在安全风险,例如suid python脚本。这些问题也适用于Python PAM模块吗?

    1 回复  |  直到 9 年前
        1
  •  17
  •   CivFan    9 年前

    您所提到的安全性问题本身并不是“允许用户调用具有高访问级别的python代码”,而是允许用户执行任何形式的 控制 在这种代码的运行过程中——最明显的是通过注入或修改代码本身,但更微妙的是,还通过控制进程的环境(例如,代码从中导入模块的路径)。(如果用户能够控制C-written代码加载的路径,那么类似的问题也适用于C-written代码 .so 例如,虽然操作系统可以更直接地帮助解决这一问题)。

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

    从python编写pam模块 高性能惩罚和 需要安装python,因此 不是写作的最佳选择 将被广泛使用的模块。

    因此,如果您认为您提供的机制很受欢迎是正确的,那么您可能需要用C编写模块代码以避免这些问题。然而,在用C语言确认它之前,在Python中用原型作为有限分布的概念证明是一个可行的策略。