0

完成した Web サイトで IBM Appscan を使用してテストを実行したところ、drupal 検索フォーム ブロックに関係する多くのエラーが返されました。エラーの 1 つの抜粋を次に示します。

    [13 of 37] Parameter Value Overflow
Severity: High
Test Type: Application Invasive
Vulnerable URL: http://[my-web-address]/contact
CVE ID(s): N/A
CWE ID(s): 120
Remediation Tasks: Limit the length of input fields to avoid buffer overflow
Variant 1 of 5 [ID=97491]
The following changes were applied to the original request:
• Set parameter 'form_build_id's value to
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAA...
**Request/Response:**
This request/response contains binary content, which is not included in generated
reports.
**Validation In Response:**
N/A
**Reasoning:**
The test caused the server to stop responding (an erroneous response was returned, such as cut
connection or time out). The original request was then resent and also failed, confirming that the
server had stopped responding.

何をする必要があるかについての指針に感謝します、ありがとう。

4

2 に答える 2

0

' form_build_id'入力は、DrupalのFormAPIからの内部識別子です。の早い段階で使用されdrupal_build_form()ます。これは、base-64でエンコードされたsha-256ハッシュで、+が-に置き換えられ、/が_に置き換えられ、任意の=パディング文字が削除されている必要があります。

フォーム変更関数は、バッファオーバーフローが発生する前にそれに触れることができない可能性があります。したがって、それを消毒するための適切な場所はdrupal_build_form()、次のようなもの になります

  [...]
  $check_cache = isset($form_state['input']['form_id']) && $form_state['input']['form_id'] == $form_id && !empty($form_state['input']['form_build_id']);
  if ($check_cache) {
    $form_build_id = drupal_substr(filter_var($form_state['input']['form_build_id'],FILTER_SANITIZE_STRING), 0, 100); 
    $form = form_get_cache($form_build_id, $form_state);
  }
  [...]

ただし、これをセキュリティの問題としてDrupal.orgに報告し、そこにパッチを送信することをお勧めします。これは、問題を確認して修正するのに最適な場所です。

于 2012-04-18T13:13:21.617 に答える
0

英語以外のフォーム入力の言語を使用する場合は、 などmb_substr()の奇妙な文字を保持する functionを使用することé, ùをお勧めします (ほとんどキリロイド ソリューションに似ています) filter_var()。さまざまな種類のインジェクション攻撃から身を守ります。

$form_build_id = mb_substr(filter_var($_GET['form_build_id'],FILTER_SANITIZE_STRING), 0, 100);

ここにmb_substr()の詳細があり、ここにfilter_var()の詳細があります。mb_substr()PHP バージョン 4.0.6 以降が必要であり、filter_var()機能には PHP バージョン 5.2 以降が必要であることに注意してください。

于 2012-04-18T08:19:13.163 に答える