16

このページによると:

No central approval process for adding packages. When you upload a package to the NuGet Package Gallery (which doesn’t exist yet), you won’t have to wait around for days or weeks waiting for someone to review it and approve it. Instead, we’ll rely on the community to moderate and police itself when it comes to the feed. This is in the spirit of how CodePlex.com and RubyGems.org work.

This makes me feel uneasy. Before I download a Firefox add-on, I know it should not contain malicious code, because AFAIK all add-ons on addons.mozilla.org are reviewed by Mozilla. Before I download a open source project from codeplex.com or code.google.com, I know it should be safe because anyone can check it's source code. And I can also use WOT (web of trust) to check how other people think about the project.

But before I download a package from NuGet official package source. Take this one for example. I do no know who made this package, nor what is contained in the package. It seems to me that anyone can pack anything into a package, give it any name they want (like "Microsoft Prism", as long as the name is not taken), then upload it to the official package source.

Should I be worried about the safety of the packages on NuGet official package source?

4

2 に答える 2

14

あなたの不安は、どのソースから入手したソフトウェアにも当てはまります。

  1. Sourceforge.net、Codeplex.com などからダウンロードされたバイナリには、悪意のあるコード (元の送信者によって植え付けられたか、ハッカーによって Web サイトに挿入された可能性が高い) が含まれている可能性があります。警報を発します。
  2. 以前の Web サイトのいずれかからダウンロードしたソースから独自のバイナリをコンパイルしたとしても、すべてのソース コードを調べてその動作を理解しない限り、依然として悪意のある行為を実行する可能性があります。
  3. 「アプリ ストア」 (Apple iTunes、Android Market など) からダウンロードしたソフトウェアでさえ、悪意のあるコードを含む可能性があります。これらのレビュー プロセスの一部は部分的に自動化されていますが、それでも絶対確実というわけではありません。
  4. マルウェアを含むパッケージ化されたソフトウェアの例が過去にありました!

おそらく、ソフトウェア (バイナリまたはソース コードとして提供される) には信頼できる連続体があり、Nuget Package Gallery (および CodePlex.com や RubyGems など) のようなものは、おそらく連続体の信頼性の低い側にあります。 .

Trusted Computing Platform Alliance によって提案されたものなど、この種の問題に対する潜在的な解決策がありますが、ソフトウェアを開発し、開発したソフトウェアを必要に応じて共有する際に現在享受している自由に大きな制限が伴います。多額の費用をかけて中央当局からライセンスまたは暗号化キーを取得する必要があります。

Nuget が .Net 開発者にとって信頼できるソフトウェア ライブラリのソースになることを保証するための規則とメカニズムをコミュニティが考え出すと同時に、正式なレビュー プロセスを必要としない俊敏性を維持すると信じています。ただし、IT セキュリティが危険にさらされていないことを確認する最終的な責任は、ユーザーとしての自分にあります。ユーザーが講じる予防策は、作成しているソフトウェアのコンテキストにおける IT セキュリティの重要性に応じて異なります (ホーム プロジェクトなど)。おそらく低い. 銀行、医療、プロセス管理プロジェクト; おそらく高い!)

于 2011-03-31T23:55:43.143 に答える
4

NuGet は信頼を管理しません。たとえそうであったとしても、NuGet が信頼するものを信頼することについては、やはり心配する必要があります。

NuGet パッケージ内のコードの安全性については、十分に考慮する必要があります。よく知らないコードの安全性について心配する必要があります。

個人的にも職業的にも、NuGet と NPM を介してパッケージを使用する際のアプローチを以下に示します。

  1. セマンティック バージョン番号を完全にロックします。メジャー、マイナー、およびパッチ番号を明示的に指定します。新しい更新が安全であるとか、そのセマンティック バージョンが正確であると想定しないでください。
  2. 本番環境では、よく知られている現在のバージョンのみを使用してください。
  3. ローカル管理者ではないアカウント、高度な特権資格情報へのローカル アクセスなし、テスト マシンの IP に付与された特権リソースへのアクセス権なしなど、アクセスが制限されたテスト環境で何かを試してください。
  4. ベンダーを確認してください。たとえば、パッケージが Amazon によってリリースされ、それが AWS SDK である場合、Amazon を信頼していれば、そのパッケージはおそらく安全に使用できます。

たとえば、本番環境に追加するだけで信頼できるパッケージは、Newtonsoft.Json と Nhibernate だけです。誰でも公開できる新しいオープン ソース パッケージに関する私の最大の懸念は、自分のニーズを満たさないものに同意して時間を無駄にする前に、実際に説明どおりに機能することです。

パッケージが実稼働環境に適しているかどうかを確認するためにパッケージについて十分な調査を行った場合、おそらくソフトウェアとそのコミュニティについて十分に理解して、悪意のあることをしていないことを信頼できるかどうかを判断できるように感じます. ソフトウェアとそのコミュニティを調査することは、私たち全員が完璧であることを祈る 1 つの中央機関によって決定された NuGet の承認スタンプよりも、私にとって本当に意味があります。

于 2016-12-28T23:02:01.887 に答える