-1

コンピューターがネットを介して通信できるようにするには、C#を使用する必要があります。ネットはソケットを使うように言っています。

ネットはまた、半分のチャンスを与えられて私たちの仕事を台無しにしたいと思っている悪意のある人々がたくさんいると言います、そしてポートを開くことによって、私たちは彼らにその半分のチャンスを与えています。

.NET 4.5、Windows 7/8 / Server 2012マシンのC#でソケットを使用すると、どのような脆弱性が発生しますか?また、これらをどのように最適に軽減できますか?

そして、何が危機に瀕しているのでしょうか?ポートを開くと、悪意のあるハッカーが私たちの仕事を台無しにする可能性がありますか?

4

2 に答える 2

3

開いているポートは、それを聞いているものが許す限り危険です。

通常、最も弱いリンクはアプリケーションであり、基盤となるライブラリではありません。

以下に問題がある可能性は確かにあります。

  • OSによるネットワークの処理
  • .NETFrameworkによるネットワークの処理

しかし、悪意のあるデータが到達すると、ほとんどの場合、物事は醜くなります

  • あなたの申請

もちろん、この最後のものは、アプリケーションの性質に完全に依存します。

たとえば、サーバー上でプログラムを実行するなど、任意のコマンドをリッスンするアプリがある場合、攻撃者は基本的に、アプリケーションに許可されているすべてのこと(ファイルの削除など)を実行できます。

リスクを軽減する1つの方法は、OSレベルでアプリケーションに最小限のアクセス許可を与えることです。そうすれば、侵害されたアプリは、たとえばシステムファイルを削除できませんでした。

リスクを軽減するもう1つの方法は、chrootやFreeBSDjailなどのサンドボックス環境でアプリを実行することです。これもOSに依存します。

要するに、あなたのコントロールの外でうまくいかないかもしれないいくつかの事柄があります(例えば:OSの脆弱性)、そしてあなたのアプリだけでうまくいかないかもしれない他の事柄があります。そして、そのリスクを軽減するいくつかの方法があります。

于 2013-03-13T01:51:31.357 に答える
3

@jwdは彼の言うことではほとんど正しいですが、ネットワーク化されたアプリケーションのアクセス権をサンドボックスまたは他のセキュリティ層を介して制限するという概念が実現可能または望ましくない場合があります。

ネットワークアプリケーションの最大の問題は、ネットワークストリーム内の不正な形式のデータをどのように処理するか(または処理できないか)です。99%の時間(またはそのあたり)は、ネットワークコードを作成した開発者が怠惰だったためです。限目。

ネットワークハッキングの聖杯は、リモートでコードが実行されることです。この点で過去にかなり成功した2つの主要な方法があります:

  1. 従来、最大の問題はバッファオーバーフローでした。
    C#の管理対象オブジェクトを使用している場合、これが問題になる可能性は低くなります。C#アプリケーションをこのタイプの攻撃に対して脆弱にするためには、かなりの努力が必要です。Cの単一スタック上の静的バッファーの古き良き時代から長い道のりを歩んできました。

  2. 2番目に近いのは、さまざまなインジェクション攻撃の問題です。一般的なSQLインジェクションコードインジェクション
    について読んでください。ユーザーがシステムに送信するすべての値をチェックしていることを常に確認し、疑わしい場合は常に問題メッセージを拒否してください

  3. ファイルシステムへのアクセス。
    任意のパスへのアクセスが与えられると、攻撃者はファイルを実行可能な場所にアップロードできる可能性があります。アップロードを許可する場合は、特定のフォルダーまたはフォルダーのセット以外の場所にアップロードできないことを常に確認してください。

  4. そしてもちろん、設計によるコード実行。
    これは、コードがリモートでコード実行できるように設計されているが、悪意のあるコンテンツを制限するために適切に保護されていない場所です。とにかくこれは一般的に悪い考えですが、これを許可する必要がある場合は、セキュリティが可能な限り強力であることを確認してください。

コード実行後、セキュリティ違反は次の大きな問題です。機密データが安全性の低いシステムから漏洩しているというニュース記事が多数ありますが、ほとんどの場合、システムの「セキュリティ」が特に悪かったためです。

ユーザー名やパスワードなどの機密データを送信する可能性がある場合は、エンドツーエンドの暗号化(たとえばSSL経由)が必須です。パケットスニファは、暗号化されていないデータストリームを監視し、ログインの詳細を引き出すことができます。実際の機密ログインデータをハッシュするとします...その正確なハッシュ値を使用して自分自身にログインするとどうなりますか?

このような問題はたくさんあり、すべてを理解する前にたくさんの読書をしなければなりません。たとえば、SQLインジェクション攻撃は大きな頭痛の種になる可能性があります。

最後に、他のすべてが失敗した場合、攻撃者はシステムを停止するだけで解決する可能性があります。ネットワークコードに障害が発生した場合は、正常に機能することを確認してください。

物語の道徳:

  1. リンク暗号化(SSLまたは同等のもの)はAGoodThing™です
  2. すべての入力を確認し、不良データを送信する接続を破棄します。
  3. システムが攻撃を受けることを常に想定し、それに応じてコーディングします。
  4. エラーを適切に処理するか、結果に苦しみます。
于 2013-03-13T02:38:34.270 に答える