cve - 2022 - 30522ーApache httpd“mod_sedフィルターに関するサービス拒否(DoS)の脆弱性

Apache DoS漏洞CVE-2022-30522

Apache HTTP Servermod_sedフィルターモジュールの脆弱性(cve - 2022 - 23943)について,バッファのサイズ計算を誤ることでサービス拒否(以下,DoS)が引き起こされる可能性があるという分析を今年3月に発表哎,哎,哎。

中文:Apache httpd修正によって問題は解決されたものの,新たな問題を引き起こす挙動が発生しているのではないかという疑いが浮上しました。★★★★★★★★★★★★★★★★★★★★★★Apacheはこの脆弱性の深刻度を“低”と評価しましたが,NVD中文:7.5(。“中文”、“中文”、“中文”、“中文”、“中文”。【中文翻译】mod_sed

Apacheのmod_sedフィルターモジュールは,サーバが受け取ったリクエストやその応答の入出力ストリームを操作する機能を提供し,基本的にはGNU,这是一个很好的例子。入力フィルターとしてHTTP POSTリクエストのボディに活用することができ,出力フィルターとしてクライアントに送られる前にサーバーの応答の修正が可能です。

このブログ記事では,Apache HTTP服务器cve - 2022 - 30522の脆弱性の概要と修正方法に関するガイダンス,およびこの脆弱性に関する調査の一環として発見した緩和策について説明します。

CVE-2022-30522 ?

CVE-2022-30522, Apache HTTP服务器mod_sed。この脆弱性は,Apache httpd 2.4.53のみで(cve - 2022 - 23943の不完全なパッチに起因するため),リクエストまたはレスポンスの編集にmod_sed

このApache httpdの脆弱性は,ストリームバッファの処理中にメモリ割り当てを最適化しようとすることに起因しています。バッファが一定のサイズに達すると,メモリ割り当て関数を多数回呼び出すことを避けるために,バッファは倍増されていきます。大量のデータを送信する場合には,Apacheのメモリ制限を超えるため,プロセスが異常終了し,事実上DoSを引き起こします。

cve-2022-30522

Apache httpdmod_sedフィルターモジュールは,オリジナルのGNUストリームエディタのように,入力と出力のストリームを修正するための★★★★★★英文:中文:このモジュールを使用するには,Apache httpdの設定ファイルを修正して,必要なフィルタを目的のルートやディレクトリに追加する必要があります。

以下の例は,リクエストのボディの各文字をZという文字に置き換えるパターンを使って,htmlファイルへのすべてのリクエストメソッドを編集するためにmod_sed★★★★★★★★★★★★

例子

mod_sedがインストールされ,入力フィルターが設定されているときに2 gb(2147483648字节)以上のデータを投稿されると,ハンドラーのプロセスがOUT_OF_MEMORY中文:util.cap_abort_on_oom ()。★★★★allocator_allocの失敗により発生し,要求されたアロケーションサイズがAPR_UINT32_MAX(1)、(1)、(1)、(1)、(1)★★★★abort_on_oom★★★★★★★★サーバーに2 gb(またはそれ以上)のデータを要求した場合にも,以下に示すように同じ事象の連鎖が発生します。

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★単一のプロセスはウォッチドッグによって再起動されますが,複数のリクエストを送るとすべてのハンドラプロセスがクラッシュしてしまい,その結果完全なDoSとなり,サーバはリクエストを処理できなくなります。

★★★★grow_bufferが再割り当ての回数を避けるためにバッファのサイズを倍増させ,その後apr_pcalloc

/*避免调用realloc的次数。如果行大小很大,可能会导致巨大的内存需求,例如2 MB */ if (newsize < *cursize * 2) {newsize = *cursize * 2;} /*对齐到4kb边界*/ newsize = (newsize + ((1 << 12) - 1)) & ~((1 << 12) - 1);Newbuffer = apr_pcalloc(pool, newsize);

sed1.c: 103

2 .;

    1. 2 gbのデータを投稿する場合,元のバッファのコピーは成功し,その末尾に零ターミネータを追加することが要求されます。4gballocator_allocの呼び出しは,バッファのサイズを1増やして零のためのスペースを確保しようとした結果になります。★★★★sed_finalize_eval例子
    2. 2 gb以上のデータ,つまり2 gb + 1字节を投稿する際,対象の保持バッファを再割り当てしようとすると,元のバッファを丸ごとコピーできる前に同じことが起こります。この現象はsed_eval_buffer这是真的吗?例子

また,以下の構成ではサーバーから2 gbを超えるファイルを要求した場合,同じ結果になります。

例子

【中文译文】sed_response_filter★★★★sed_request_filter
例子

cve-2022-30522 ?

CVE-2022-30522, Apache HTTP服务器mod_sed。★★★★★★★★★★★★★
この場合,攻撃者はsedフィルターを使用するエンドポイントに大量のデータを送信するだけで,リモートから脆弱性を誘発することができますので,最も深刻な影響はmod_sed★★★★★★★★★★★★

例子
输入で定義されている実際のsedパターンは重要ではなく,空でないことが必要です)

cve-2022-30522 ?

(2gb),mod_sed。1。サーバーへの複数のリクエストを長時間かけて行う攻撃は,サーバーの全プロセスが繰り返し停止し,あらゆるウェブページにアクセスできなくなるため,完全なDoSを引き起こす可能性があります。

cve-2022-30522 ?

この脆弱性を修正するためには,Apache httpdを最新版(現在2.4.54)にアップグレードすることが推奨されます。アップグレードが不可能な場合は,mod_sedフィルターモジュールの本脆弱性を修正するパッチ“”“”“”。

Cve-2022-30522 ?

Apache HTTP服务器を最新版にアップグレードしたり,パッチを適用したりできない場合は,帖子メソッドのボディサイズを制限して,本脆弱性を誘発させないようにすることをお勧めします。そのためには,Apache httpdの設定ファイルでLimitRequestBody

このディレクティブは,0から始まり,最大2 gbまでのデータのリクエストサイズに制限を設定するために使用されます。このように,1 gbを超えるデータのPOSTリクエストボディを防ぐために,次のような制限を設定することが推奨されます。

LimitRequestBody 1073741824

【中文译文】この緩和策は,クライアントからのリクエストによって引き起こされるDoSからの保護のみを提供し,mod_sedがレスポンスを修正するために使用され,2 gb以上のレスポンスがクライアントに送信された場合,サーバーがDoSに対して脆弱なままであることに注意してください。

JFrog

JFrog,セキュリティ・リサーチのブログ記事や推特@JFrogSecurity★★★★★★★

JFrog x光で脆弱性のあるバージョンを探す

JFrog x光SCAツールは,リサーチチームを通じて新しい脆弱性や脅威を明らかにするだけでなく,自動セキュリティスキャンにより,開発者やセキュリティチームが自社のソフトウェアに関連する最新のセキュリティインサイトへの簡単なアクセスを可能にします。