2009-05-06 12 views
3

私のホスティング会社は、Apache/HTTP POSTでCGI-Bin Perlスクリプト(たとえば、以下のように)を使用すると、バッファオーバーフロー/リソースの問題を引き起こすために、適切な量のガベージバイトをHTMLフォームのテキスト入力フィールドに入力することができると言います。 NMS FormMail)。Perl CGIプログラムは、HTMLの連絡先フォームにバッファオーバーフローまたはスクリプトの脆弱性がありますか?

彼らは、任意のスクリプト(入力フィールドのテキストの一部として格納されている)がサーバー上で実行され、サイトを危険にさらす可能性がある場所でコアダンプが発生すると言います。彼らは、これがApache/Perlの設定—で、投稿されたフィールドの文字数を制限することによってこれを防ぐことがPerlスクリプトに任されていることを防御できるものではないと言います。しかし、スクリプトがフィールドサイズを制限する前に、コアダンプが発生する可能性があります。

このタイプの連絡フォームと方法は、何千ものサイトで広く使用されているので、私は彼らの言うことが真実かどうか疑問に思います。あなたはそこにセキュリティ専門家が私を啓発することができます—これは本当ですか? PHPスクリプトでも同じことが起こるのではないかと思います。安全なサイトの連絡スクリプト/メソッドには何をお勧めしますか?

答えて

2

バッファオーバーフローについてはわかりませんが、いずれにしてもPOSTサイズを制限することはできません。スクリプトの上に次の行を追加してください:

use CGI qw/:standard/; 
$CGI::POST_MAX=1024 * 100; # max 100K posts 
$CGI::DISABLE_UPLOADS = 1; # no uploads 
1

具体的には、脆弱性への言及をあなたに提供するよう依頼してください。特別に細工されたPOSTリクエストによってバッファオーバーフローを引き起こす可能性のあるApacheのバージョンがあると確信していますが、NMS FormMailには特にわかりません。

0

Formailは過去にこのような脆弱性がありましたので、あなたのISPがこれを説明していると思います。どのperlスクリプトでも悪い習慣があれば、このような悲惨さにつながる可能性があります

可能であれば、perlスクリプトがすべてのユーザー入力を確認することをお勧めします。それ以外の場合は、信頼できるスクリプトのみを使用して、確実に更新してください。

+0

'NMS FormMail' ne 'FormMail' from Matt scrpts –

1

あなたは間違いなくあなたのホスティング会社から詳細を尋ねるべきです。そこには無関係な記述がたくさんあります。

「バッファオーバーフロー」と「リソースの問題」はまったく異なるものです。バッファオーバーフローは、perlまたはmod_perlまたはhttpd自身をクラッシュさせることを示唆しています。この場合、これらのコンポーネントのいずれかにバグがあり、問題のバグを参照して、セキュリティアップデートをいつ適用するかについてのタイムラインを提供する必要があります。そのようなバグは確かにBugtraqを作るでしょう。

リソースの問題は、まったく別のものです。 POSTで数メガバイトを送ると、任意の量のメモリを食べることができます。これは、httpd.confにLimitRequestBodyディレクティブを設定することで解決できます。デフォルトは無制限です。これは、ホスティングプロバイダによって設定される必要があります。

彼らは、コア・ダンプが(入力フィールドのテキストの一部として保存された)任意のスクリプトがサイトを損なう可能性がサーバー上で実行することができ、その時点で発生したと言います。彼らは、これがApache/Perl設定で保護できるものではなく、投稿されたフィールドの文字数を制限することでこれを防ぐことがPerlスクリプトに任されていると言います。しかし、スクリプトがフィールドサイズを制限する前に、コアダンプが発生する可能性があります。

これはhttpdの(又はmod_perl)でコアダンプを作成している場合は、再度、それはのhttpd(又はmod_perl)のバグを表します。Perlの動的でガベージコレクションされたメモリ管理は、原則としてバッファオーバーフローや不良ポインタの影響を受けません。これは、perl自体のバグがこれを引き起こすことはできないということではなく、perl言語自体にコアダンプを引き起こすために必要な言語機能がないということではありません。

スクリプトがデータにアクセスするまでに、ここで説明されていることを防ぐのは非常に遅すぎます。スクリプトには独自のセキュリティ上の懸念があり、perlスクリプトに任意のコマンドを実行させるためのさまざまな方法があります。ここに記述されている方法で、任意のメモリ位置にジャンプさせる方法はあまりありません。

関連する問題