14

ドットネット自動更新

.net には単純で安全な自動更新ライブラリが欠けているように感じたので、何かを実装してここに掲載しました。誰もがライブラリの使用を検討する前に、私は更新プロセスがピア レビューを受けることに熱心でした。

手順は次のとおりです。

  • クライアント ソフトウェアには、ポーリングする公開キーと URI が入力されます。
  • クライアントはマニフェスト ファイルの URI をポーリングします。
  • マニフェストがダウンロードされ、署名 (別の「.signature」内) を使用して、マニフェストが有効であることを確認します。
  • 保留中の更新のリストがマニフェストから解析されます (ユーザーに表示するため)。
  • インストーラー ファイルがダウンロードされ、対応する「.signature」ファイルで再度検証されます。(ダウンロードしたファイルは ACL で保護されます)
  • インストーラーが実行されます。

軽減された脅威:

軽減されていない脅威:

  • 攻撃者が常に「利用可能なアップデートがありません」と報告するMITM攻撃。(クライアントを脆弱なバージョンに保つ可能性があります)

参考文献:


私は何を逃したのですか?


4

7 に答える 7

8

Dan Kaminsky には、アップデーターに関する適切なガイドラインがあります。

成功するには、更新パッケージが次の条件を満たしている必要があります。

  • 署名済み。
  • あなたによって署名されました。
  • 適切な EKU (拡張キー使用法) を使用して署名
  • 失効していない署名から署名
  • 同じ商品であること
  • 新しいバージョンになる

この質問の説明から、最初の 3 つを持っているようです。

于 2009-09-23T23:19:25.080 に答える
4

企業環境で独自のデプロイヤを構築したので、対処する必要のあるいくつかの使用例を次に示します。

  • デジタル署名のサポート

  • あらゆる種類のプロキシをサポート。一部の大企業では、複雑なプロキシ構成が行われています (たとえば、プロキシ構成スクリプトを使用するなど)。それらすべてをサポートする必要があります。

  • 暗号化のサポート。顧客はおそらく、展開されたバイナリを Web サーバーで利用できるようにしたいと考えており、ある種の認証やアクセス制御を管理したくないでしょう。しかし、許可されていないユーザーがバイナリをダウンロードすることも望んでいません。簡単な解決策は、バイナリを暗号化し、ツールにデプロイさせることです

  • プラグ可能な追加ステップのサポート。企業クライアントは通常、自動展開ツールの使用にあまり慣れていません。彼らはもっとコントロールしたいと思うでしょう。通常、カスタマイズ可能な手順 (ウイルス対策チェックなど) を実行できるようにすることが役立ちます。

  • 消費者のアイデンティティに基づいて、さまざまなバージョンのソフトウェアをサポートします。これは、Q&A プロセスをすべて実行せずに特定のコンシューマーのコピーを非常に高速に更新する (バグを修正するか、追加機能を追加する) 場合 (この状況では、更新を制限する必要がある場合)、企業環境でよく必要になります。この特定の消費者に)

  • 限られた特権の状況をサポートします。ユーザーがコンピューターへの管理者アクセス権を持っていない可能性があるという事実は別として、大企業は多くの場合、特定のツールを使用してユーザーができることを制限しています。従来の「プログラム ファイル」ではなく、ユーザー所有のフォルダー (または一時フォルダー) にデプロイする準備を整えます。

  • ツールは強力な認証機関によって署名されている必要があります。

あなたが言及したMITM攻撃に関しては、公開暗号化を使用することで簡単に解決できます(不明で指摘されているように)

于 2009-09-30T13:35:45.553 に答える
3

まあ、「バージョン更新なし」応答にタイムスタンプも含める(および署名する)ことで、MITMを防ぐことができます。次に、バージョンの変更もタイムスタンプの更新も行わずに 1 か月が経過すると (またはポリシーが何であれ)、ソフトウェアの実行を拒否するか、MITM 攻撃の可能性があることをユーザーに通知する警告ダイアログをポップアップ表示します。

サーバーがダウンした場合にどうするかという問題は解決しません。おそらく、タイムスタンプの変更がない場合と同じように扱います。

于 2009-09-30T04:01:37.923 に答える
1

ここでトロールするつもりはありませんが、あなたはすでに解決された問題を解決しようとしています。SSLを使用する方がはるかに良い選択です。それはあなたの質問にリストされているすべての問題を解決するでしょう。

このシステムはSSL証明書を購入できない人には便利ですが、SSL証明書を取得できる人は、この問題を解決するためにSSL証明書を取得する必要があることを理解しています。

「複雑さはセキュリティの敵」であることを忘れないでください。

于 2009-10-04T00:37:51.327 に答える
0

だから私は何かについてはっきりしていません。ダウンローダーは、マニフェストが署名を介して期待するものであることを確認し、インストールする実際のパッチに対して同じことを行いますか?

于 2009-09-14T06:13:55.417 に答える
0

追加として、ダウンロードしたファイルに MD5 チェックサムも追加します。

追加した:

ここで確認できる唯一の追加事項は、コードの難読化や、セットアップ ファイルをアーカイブしてアーカイブをロックし、ダウンロード後にロックを解除することなどです。そのタイプのこと。しかし、私はあなたが今やったことは100%であるべきだと思います。

追加が必要になるのは、アプリケーションのセキュリティが非常に複雑な場合だけです。今のところ、DLL の改ざんと出所の証明を防ぐことができます。これは、自動アップデーターにとって十分なはずです。

于 2009-09-14T05:31:43.273 に答える