リリース日: 2002-04-3
脆弱性カテゴリ: PHP、リモート WEB インターフェイス、サービス拒否
bugtraq ID 4432、4434
問題のあるバージョン:
phpBB 1.44 以前のバージョンおよび phpBB 2.0 はテストされていません。
説明:
phpBB は、PHP に基づいて広く使用されているフォーラムです。 BBコード内の「ソースコード」クラスの参照処理
に脆弱性が存在することが判明しました。 特殊な形式でエスケープ文字列を送信することにより、データベースにダメージを与え、サーバーを大量に消費する可能性があります。 CPU とメモリ
リソース。
詳細:
phpBB は、主にネストされたタグ
をサポートするために、「ソース コード」クラスへの参照を不適切に処理します。問題のコードは、functions.php の bbencode_code 関数です。
次のように投稿を送信すると:
データベースに保存される実際のデータは次のようになります:
[ 1コード]
[/code]
データは 49 バイトしかありませんが、リソースの使用量は非常に多くなります:
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
25741 nothing 14 0 11828 9996 416 R 99.9 7.8 2:38 httpd
数秒後に大量のデータが生成され、大量のメモリが消費されます:
PID USER PRI NI SIZE RSS SHARE STAT %CPU % MEM TIME COMMAND
3 root 10 0 0 0 0 SW 2.5 0.0 4:13 kswapd
25742Everyone 17 0 265M 90M 52104 R 25.1 73.0 1:45 httpd
そのようなネストされた投稿は保存されませんデータベース内でははいですが、ネストが増加するにつれて、リソース使用量は等比数列に従って増加します。より多くのデータを一度に送信したり、連続的に送信したりすると、大量のシステム リソースが占有され、最終的にはサービスが拒否される可能性があります。
実験環境: linux 2.4.10 Apache/1.3.23 PHP 4.12
解決策:
1. BBcode を一時的に無効にします。
2.alert7 は、ネストされたタグのサポートを一時的に無効にするために、functions.php に次の変更メソッドを追加しました:
行 773 から始まる bbencode_code 関数を次のように変更します:
function bbencode_code($message) , $is_html_disabled)
{
$message = preg_replace("/[code](.*?)[/code]/si", "
コード: | gt;\1 ログイン後にコピー | gt;
; gt ; |