26

この質問はExploitable PHP Functionsに似ています。

汚染されたデータは、ユーザー、またはより具体的には攻撃者から取得されます。汚染された変数がシンク関数に到達すると、脆弱性が発生します。たとえば、SQL クエリを実行する関数はシンクであり、GET/POST 変数は汚染のソースです。

Python のすべてのシンク関数は何ですか? 脆弱性またはソフトウェアの弱点をもたらす機能を探しています。リモートでコードが実行される脆弱性に特に関心があります。危険な機能を含むクラス/モジュール全体はありますか? 興味深い Python の脆弱性の例はありますか?

4

5 に答える 5

14

evalそしてexec古典です。ただし、悪用される可能性もopenありfileます。

open('/proc/kcore', 'w').write('0' * 1000 * 1000 * 1000)

次に、、、、osおよびモジュールがありますsys。ファイルシステムに触れるもの、またはデータを実行可能コードに変換するために使用できるもの ( .subprocessdircacheos.system

S. Lott がコメントで指摘したように、ファイルシステムへの書き込みと任意の外部プログラムの実行は Python 固有ではありません。ただし、セキュリティ監査者が検討する価値はあります。これらの機能のほとんどは、セキュリティをあまり気にすることなく安全に使用できます。eval一方、とexecは大きな危険信号です。それらを安全に使用するには細心の注意が必要です。

于 2010-11-17T17:58:06.173 に答える
14

ピクルスのドキュメントから:

Warning

The pickle module is not intended to be secure against erroneous or maliciously constructed data. Never unpickle data received from an untrusted or unauthenticated source.
于 2010-11-17T18:44:40.523 に答える
10

このようなものを探すとき、私は妄想になりがちです。私はメタプログラミングをたくさんする傾向があるので、もっとそうです。

  • ほとんどの副作用コマンド(他の投稿がカバーしています)
    • ファイル操作(、、、、open... )tarfilezipfile
    • ネットワーク呼び出し(、、urllib2... socket
    • データのシリアル化/永続性(、、pickle... shelve
    • プロセス/スレッド管理(、、、、subprocess... )os.forkos.kill
  • ビルトイン
    • getattr
    • setattr
    • delattr
    • eval
    • exec
    • execfile
    • __import__

そしておそらく他の人は私が忘れています。また、sys.path、sys.modulesなどを変更している関数を介したユーザー入力にも注意が必要です。

于 2010-11-24T22:50:14.130 に答える
6

subprocessモジュールには、コマンド/プロセスを実行するこれらの方法を非推奨にする厄介な機能が含まれています。

os.system
os.spawn*
os.popen*
popen2.*
commands.*

Python コードを実行するexecと、式を「評価」して変数を操作するために使用できるevalもあります。

于 2010-11-17T17:52:40.707 に答える
3

指定された文字列を評価して結果を返す関数にはいくつかのinput制限がありますが、それでも悪用される可能性があります。

于 2010-11-24T19:58:07.000 に答える