0

(これを回避する方法を見つけたので、今のところ、この問題は純粋に理論的なものです。しかし、それが現れた時点では解決できませんでした。)

Javaを使用して、SSHFTP経由で単一の固定サーバーから一定の間隔でファイルを検出してダウンロードしたいと思います。
リモートサーバー、プロトコル、タイミング、およびファイルは私の制御の範囲外です。リモートサーバーは、信頼できるソースによって制御されます。

私は現在、ファイルのダウンロードとのJava実装を使用lsgetています。

私のクライアントはセキュリティを非常に重視しているため、技術的な迎え角をできるだけ多く防止したいと考えています。

悪意のあるエンティティがリモートサーバーになりすましている、またはリモートサーバーを制御している可能性について考えていると、通常のサーバーが、lsファイルの無限のリストで応答する実装、またはgetバイトの無限のストリームで応答する実装に置き換えられる可能性があることに気付きました。 。ある時点で、メモリまたはハードドライブが壊れ、プログラムがクラッシュしました。

ファイルのサイズがわからないと仮定すると、合法的な(ただし大規模な)ダウンロードを停止せずに、このような攻撃を検出して防止する方法はありますか?
事前にファイル数やファイルサイズを確認することを考えていたのですが、それでも攻撃者は私が確認して初めて攻撃を仕掛けることができました。

4

2 に答える 2

1

悪意のあるエンティティがリモートサーバーを偽装または制御する可能性について考えている間。

SSHのクライアント側の実装に欠陥がない限り、または信頼できるサイトの秘密鍵が漏洩または解読されていない限り、サイトを偽装することはできません。

ファイルのサイズがわからないと仮定すると、合法的な(ただし大規模な)ダウンロードを停止せずに、このような攻撃を検出して防止する方法はありますか?

私はそうは思わない。

事前にファイル数/ファイルサイズを確認することを考えていました...

問題は、「合法だが大規模な」ダウンロードと、侵害されたサーバーからの大規模なダウンロードをどのように区別するかです。


解決策はダウンロードサイズに制限を設けることだと思います。

注意すべきもう1つの点は、悪意のあるユーザーがあなたをだまして「無限の」ダウンロードを実行させたとしても、次のことです。

  1. これは実際にはサービス拒否攻撃であり、直接的なセキュリティ上の影響を伴う攻撃ではありません。
  2. サービス拒否攻撃を開始するためのより簡単で効果的な方法があります。
  3. ダウンロードは本当に無限ではありません。ネットワークの問題やシステムの再起動などにより、接続が最終的に切断されるか、ダウンロードに非常に長い時間がかかることに気付くでしょう。
于 2012-10-17T13:49:00.373 に答える
1

この種の問題を処理する最良の方法は、失敗した場合に誰かにアラートを送信する一連のルールを定義することです(電子メールまたはその他の手段を介して)。

例:1つのファイルから30Gを超えるダウンロードを行った場合、何か問題がある可能性があります。誰かがこれを確認してみましょう。

ダウンロードするファイルが10億を超える場合は、誰かに警告してください...

また、lsとgetで発生する可能性のある問題を検出するために、いくつかの統計を実装することもできます。

于 2012-10-17T13:49:57.417 に答える