6

Fortify のセキュリティ レビューにより、いくつかのパス操作の脆弱性が報告されました。ほとんどは明白で簡単な修正でしたが、次の修正方法がわかりません。

string[] wsdlFiles = System.IO.Directory.GetFiles(wsdlPath, "*.wsdl");

「wsdlPath」はテキストボックスから入力します。これしか直らないものなの?パスが存在することなどを検証できますが、それが脆弱性にどのように役立つのでしょうか?

4

4 に答える 4

8

内容がユーザーによって決定されるテキスト ボックスからデータが常に取得され、コードがそのユーザーのアクセス許可を使用して実行される場合、唯一の脅威は、ユーザーが自分自身を攻撃することです。それは興味深い脅威ではありません。

ツールが警告しようとしている脆弱性は、信頼性の低い悪意のあるコードがその文字列の内容を判断できる場合、悪意のあるコードがユーザーのマシンに関する事実を発見する試みを開始できることです。セキュリティの脆弱性がインストールされ、パッチが適用されていないことをたまたま知っていますか?」または「このマシンに「admin」という名前のユーザーはいますか?」等々。

于 2012-04-10T18:11:25.007 に答える
1

このコードを使用すると、その機能を使用するために認証および承認されたすべてのユーザーが、サーバー上のファイル システムにアクセスできます。アクセスは、Web アプリケーションを実行するサービス アカウントの資格情報を使用して行われます。

返されたデータの使用方法によっては、悪意のあるユーザーがより多くの情報を取得したり、意図しない方法でサーバーを動作させたりする可能性があります。

許可されるパスのセットを、慎重に選択された 1 つまたは少数のディレクトリのみで構成されるように制限する必要があります。クラス内の関数を使用してPath、文字列をパスに結合します。これらの関数は、ユーザーの入力などを処理c:\allowedpath\..\windows\system32します。

于 2012-04-10T18:16:42.953 に答える
1

OS API の unfiltered に何かを直接フィードしないでください。入力をサニタイズして、パスが含まれていないことを確認する必要があります (つまり、「../../../somefile」国際文字に関連するバグ)。

于 2012-04-10T17:24:29.933 に答える