Перейти к контенту

IPB 2.x.x: Обновление безопасности


Рекомендуемые сообщения

Обращаем ваше внимание на найденную потенциальную уязвимость во всех версиях IPB 2.x.x.

 

Информация об этой уязвимости была получена компанией IPS сегодня утром и сейчас представлено исправление. Мы рекомендуем всем обновить свои форумы сразу, не дожидаясь выхода русской версии IPB 2.1.4.

 

Дистрибутивы IPB 2.0.4 и IPB 2.1.3 были обновлены, поэтому те, кто скачал дистрибутив после 17:50 по московскому времени, уже имеют исправленную версию.

 

Пользуйтесь ручным исправлением уязвимости, представленным ниже в этой теме для IPB 2.1.x и IPB 2.0.x.

 

Клиенты также могут написать в техническую поддержку через клиент-центр и запросить исправление уязвимости, предоставив FTP доступ.

 

Спасибо!

 

5.01.06, 21:30 — ручное исправление для IPB 2.0.x исправлено, ранее оно было с ошибками!

6.01.06, 16:54 — ручное исправление для обоих версий исправлено, разработчики нашли несколько иное решение проблемы в файлах ipsclass.php и functions.php, соответственно.

Ссылка на комментарий
Поделиться на других сайтах

Для версий IPB 2.1.x

 

sources\ipsclass.php, код:

$this->forum_read[$id] = $stamp;

заменить на:

$this->forum_read[ intval($id) ] = intval($stamp);

и еще код:

	/*-------------------------------------------------------------------------*/
// Makes incoming info "safe"			  
/*-------------------------------------------------------------------------*/

заменить на:

	/*-------------------------------------------------------------------------*/
// Makes topics read or forum read cookie safe		 
/*-------------------------------------------------------------------------*/
/**
* Makes int based arrays safe
* XSS Fix: Ticket: 243603
* Problem with cookies allowing SQL code in keys
*
* @param	array	Array
* @return	array	Array (Cleaned)
* @since	2.1.4(A)
*/
function clean_int_array( $array=array() )
{
	$return = array();

	if ( is_array( $array ) and count( $array ) )
	{
		foreach( $array as $k => $v )
		{
			$return[ intval($k) ] = intval($v);
		}
	}

	return $return;
}

/*-------------------------------------------------------------------------*/
// Makes incoming info "safe"			  
/*-------------------------------------------------------------------------*/

 

sources\action_public\forums.php, код:

$this->read_array = unserialize(stripslashes($read));

заменить на:

$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );

 

sources\action_public\search.php, код:

$this->read_array = unserialize(stripslashes($read));

заменить на:

$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );

 

sources\action_public\topics.php, код:

$this->read_array = unserialize(stripslashes($read));

заменить на:

$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );

 

sources\action_public\usercp.php, найти код:

			$topic_array = array_slice( array_keys( $topics ), 0, 5 );

после него добавить следующую строку:

			$topic_array = $this->ipsclass->clean_int_array( $topic_array );

Ссылка на комментарий
Поделиться на других сайтах

Для версий IPB 2.0.x:

 

Файл sources\functions.php, найти код:

$ibforums->forum_read[$id] = $stamp;

заменить на:

$ibforums->forum_read[ intval($id) ] = intval($stamp);

а также найти код:

	/*-------------------------------------------------------------------------*/
// Makes incoming info "safe"			  
/*-------------------------------------------------------------------------*/

заменить на:

	/*-------------------------------------------------------------------------*/
// Makes topics read or forum read cookie safe		 
/*-------------------------------------------------------------------------*/
/**
* Makes int based arrays safe
* XSS Fix: Ticket: 243603
* Problem with cookies allowing SQL code in keys
*
* @param	array	Array
* @return	array	Array (Cleaned)
* @since	2.1.4(A)
*/
function clean_int_array( $array=array() )
{
	$return = array();

	if( !is_array($array) OR count($array) < 1 )
	{
		return $return;
	}

	foreach( $array as $k => $v )
	{
		$return[ intval($k) ] = intval($v);
	}

	return $return;
}

/*-------------------------------------------------------------------------*/
// Makes incoming info "safe"			  
/*-------------------------------------------------------------------------*/

 

Файл sources\forums.php, найти код:

$this->read_array = unserialize(stripslashes($read));

заменить на:

$this->read_array = $std->clean_int_array( unserialize(stripslashes($read)) );

 

Файл sources\search.php, найти код:

$this->read_array = unserialize(stripslashes($read));

заменить на:

$this->read_array = $std->clean_int_array( unserialize(stripslashes($read)) );

 

Файл sources\topics.php, найти код:

$this->read_array = unserialize(stripslashes($read));

заменить на:

$this->read_array = $std->clean_int_array( unserialize(stripslashes($read)) );

 

Файл sources\usercp.php, найти код:

$topic_array = array_slice( array_keys( $topics ), 0, 5 );

добавить ниже:

$topic_array = $std->clean_int_array( $topic_array );

Изменено пользователем Vitaly
Ссылка на комментарий
Поделиться на других сайтах

Разработчики нашли несколько иное исправление в файлах ipsclass.php (2.1.x) и functions.php (2.0.x), просим обратить внимание на исправленные сообщения выше.

 

Спасибо!

Ссылка на комментарий
Поделиться на других сайтах

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.