SEBUG-Appdir:PHP
公開日: 2007-03-17
影響を受けるバージョン:
PHP PHP 5.2.1
PHP PHP 5.1.6
PHP PHP 5.1.5
PHP PHP 5.1.4
PHP PHP 5.1.3
PHP PHP 5.1.3
PHP PHP 5.1.2
PHP PHP 5.1.1
PHP PHP 5.1
PHP PHP 5.0.5
PHP PHP 5.0.4
PHP PHP 5.0.3
+ Trustix Secure Linux 2.2
PHP PHP 5 。 0 。 。
PHP Session_Regenerate_ID 関数には二重リリースのコンテンツ破損の問題があります。リモート攻撃者はこの脆弱性を利用してアプリケーションに対してサービス拒否攻撃を実行し、任意の命令の実行につながる可能性があります。
session_regenerate_id() 関数は、最初に古いセッション識別子を解放し、その後すぐにセッション識別子ジェネレーターによって生成された新しい値を割り当てます:
コードをコピー
コードは次のとおりです:
PHP_FUNCTION(session_regenerate_id)
{ .. if (PS(id)) { ... efree(PS(id))
}
PS(id) = PS(mod)->s_create_sid(&PS(mod_data), NULL TSRMLS_CC );
PS(send_cookie) = 1;
php_session_reset_id(TSRMLS_C);
}
RETURN_FALSE;
ただし、この割り当て操作はアトミックな操作ではありません。したがって、メモリ制限違反などの操作によって中断される可能性があります。また、PHP の構成によっては、ジェネレーターが PHP エラーをトリガーしたり、中断を引き起こしたりする可能性があります。
コードをコピーします
コードは次のとおりです:
PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS)
{
...
switch (PS(hash_func)) {
...
default: php _error_docref( NULL TSRMLS_CC, E_ERROR , "無効なセッション ハッシュ関数");
efree(buf) } ... if (PS(hash_bits_per_character) || PS(hash_bits_per_character) > 6) {
PS( hash_bits_per_character) = 4;
php_error_docref(NULL TSRMLS_CC, E_WARNING, "ini 設定 hash_bits_per_character..."); この問題は、悪意のあるユーザースペース エラー ハンドラーを登録することによって簡単に悪用される可能性があります。 。このハンドラーが前のセッション識別子と同じ場所に割り当てられたハッシュ テーブルを呼び出すと、悪意のあるエラー ハンドラーが session_id() 関数を呼び出し、偽のハッシュ テーブルを含むハッシュ テーブルを同じ場所に割り当てることによって、別の前のセッションをトリガーする可能性があります。ハッシュテーブルの解放操作。ユーザー エラー ハンドラーが完了すると、上書きされた HASH テーブルが分解され、攻撃者が提供したコードが呼び出されます。
http://www.php-security.org/MOPB/MOPB-22-2007.html
テスト方法:
[www.sebug.net]
このサイトが提供するプログラム (メソッド) は攻撃的な可能性があり、セキュリティの研究と教育を目的とした場合は、自己責任で使用してください。
http://www.php-security.org/MOPB/code/MOPB-22-2007.php
SEBUG セキュリティに関する提案:
現在提供されている解決策はありません:
http://www.bkjia.com/PHPjc/322795.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/322795.html
技術記事
SEBUG-ID:1491 SEBUG-Appdir:PHP リリース時期:2007-03-17 影響を受けるバージョン: PHP PHP 5.2.1 PHP PHP 5.1.6 PHP PHP 5.1.5 PHP PHP 5.1.4 PHP PHP 5.1.3 PHP PHP 5.1。 3 PHP PHP 5.1.2 PHP PHP 5.1.1...