PythonのPAMモジュールを搭載したセキュリティ上の懸念?
質問
私はUnixのログインのための一般的な認証メカニズムを利用するだろうPAMモジュールを書くことに興味があります。私の過去のプログラミング経験のほとんどは、Pythonにあった、と私はすでにとの対話だシステムは、PythonのAPIを持っています。私の周りグーグルと pam_python に見出され、PAMモジュールはPythonのintrepreterを呼び出すことを可能にする、したがって、PAMモジュールを可能にします基本的に書き込まれるようにの中にのパイソンます。
しかし、私は、ユーザーがそのようなSUID Pythonスクリプトなど、ユーザ自身、より高いアクセスレベルで実行されるPythonコードを呼び出すことができるようにする場合、セキュリティ上のリスクがあることを読みました。 PythonのPAMモジュールに適用されるこれらの懸念にもありますか?
解決
あなたが言及したセキュリティ上の懸念は高いアクセスレベルで実行され、「ユーザーがPythonコードを呼び出すことができるように」が、ユーザがの制御の任意の形式を行使することができますについては、それ自体が、ではありませんそのようなコードの実行オーバー - 最も明らかコード自体を注入するまたは変更することによって、しかし、より微妙に、またそのプロセスの環境を制御することによって(従って、そのコードは、例えば、モジュールをインポート元のパス)。
- (OSは、このような懸念とより直接的に役立つかもしれないが、ユーザが、例えばロード.so
年代そこから後者の経路を制御することができた場合、同様の懸念がC-書かれたコードに適用されます)
pam_python
がよく、このようなリスクに対して装甲されていることを私には表示され、それはあなたの目的のために安全に使用可能であるべきです。
Pythonの被るからあなたが供給しているメカニズムは人気が出るだろうということだね場合は、書き込みPAMモジュール 大きなパフォーマンスのペナルティと それがインストールされているのPythonが必要なので、 執筆のための最善の選択肢ではありません 広く使用されるモジュールます。
だから、あなたはおそらく、これらの問題を回避するために、Cであなたのモジュールをコーディングすることになるでしょう。しかし、限られた分布とのコンセプトの証明として、Pythonでそれを試作、Cでそれを引き締め前に、実行可能な戦略である。