В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Исправление отсутствие шифрования солей вариации на хэш имени входа SQL Server sa

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:980671
Проблема
В Microsoft SQL Server 2005 и более поздних версий нескольких экземпляров SQL Server использовать же криптографических соли для встроенных имени входа sa. Так как расширяющее значение одинаково для всех установок, некоторые виды грубой принудительно атаки становятся более удобным, если злоумышленник сначала можно получить доступ к хешированный пароль. Хэшированные пароли, доступны только для администраторов SQL Server.
Причина
В SQL Server 2005 и более поздних версиях криптографических соли создается с помощью имени входа sa. При включении установив значение CHECK_POLICY криптографических соли не обновляется при изменении пароля для согласования с истории паролей. По умолчанию установив значение CHECK_POLICY включена для SQL Server 2005. При отключении установив значение CHECK_POLICY солей согласованности больше не используется для имени входа sa и новое расширяющее значение генерируется при следующей смене пароля.

Несмотря на то, что это верно для всех учетных записей, используется учетная запись sa создается во время процесса построения. Таким образом его соли же процессе построения создается и сохраняется во время экземпляр программы установки SQL Server.

Примечание SQL Server 2008 эта проблема также влияет на имена входа по умолчанию, используемые функцией управления на основе политик, но снижается риск. По умолчанию эти имена входа будут отключены.

Способы снижения опасности

Даже если криптографических расширяющее значение остается прежним через несколько установок, он не будет достаточно контроль хэш пароля. Чтобы воспользоваться это поведение, злонамеренный пользователь должен иметь административный доступ к экземпляру SQL Server для получения хэша пароля. Если выполнены рекомендации, обычные пользователи смогут извлечь хэш пароля. Таким образом они сможет воспользоваться отсутствие шифрования солей вариации.
Решение

Сведения о пакете обновления для SQL Server 2005

Чтобы устранить эту проблему, получите последний пакет обновления для SQL Server 2005. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
913089 Как получить последний пакет обновления для SQL Server 2005

Сведения о пакете обновления для SQL Server 2008

Чтобы устранить эту проблему, получите последний пакет обновления для SQL Server 2008. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
968382Как получить последний пакет обновления для SQL Server 2008
Временное решение
Для SQL Server 2005 с пакетом обновления 2 или более поздней версии можно запустить следующий сценарий, чтобы сбросить криптографических соли учетной записи sa. Выполнить сценарий, вы должны войти в систему с учетной записью, имеющей разрешения CONTROL SERVER или учетная запись должна быть членом серверной роли sysadmin. Следует иметь в виду, что после сброса криптографических соли журнал паролей для имени входа sa будут заменены.
-- Work around for SQL Server 2005 SP2+---- Sets the password policy check off for [sa]-- Replaces [sa] password with a random byte array-- NOTE: This effectively replaces the sa password hash with -- a random bag of bytes, including the salt,-- and finally sets the password policy check on again---- After resetting the salt, -- it is necessary to set the sa password,-- or if preferred, disable sa--CREATE PROC #sp_set_new_password_and_set_for_sa(@new_password sysname, @print_only int = null)AS	DECLARE @reset_salt_pswdhash nvarchar(max)	DECLARE @random_data varbinary(24)	DECLARE @hexstring nvarchar(max)	DECLARE @i int	DECLARE @sa_name sysname;		SET @sa_name = suser_sname(0x01);	SET @random_data = convert(varbinary(16), newid()) + convert(varbinary(8), newid())	SET @hexstring = N'0123456789abcdef'	SET @reset_salt_pswdhash = N'0x0100'	SET @i = 1	WHILE @i <= 24	BEGIN		declare @tempint int		declare @firstint int		declare @secondint int		select @tempint = convert(int, substring(@random_data,@i,1))		select @firstint = floor(@tempint/16)		select @secondint = @tempint - (@firstint*16)		select @reset_salt_pswdhash = @reset_salt_pswdhash +			substring(@hexstring, @firstint+1, 1) +			substring(@hexstring, @secondint+1, 1)		set @i = @i+1	END	DECLARE @sql_cmd nvarchar(max)	SET @sql_cmd = N'ALTER LOGIN ' + quotename(@sa_name) + N' WITH CHECK_POLICY = OFF;	ALTER LOGIN ' + quotename(@sa_name) + N' WITH PASSWORD = ' + @reset_salt_pswdhash + N' HASHED;	ALTER LOGIN ' + quotename(@sa_name) + N' WITH CHECK_POLICY = ON;	ALTER LOGIN ' + quotename(@sa_name) + N' WITH PASSWORD = ' + quotename(@new_password, '''') + ';'	IF( @print_only is not null AND @print_only = 1 )		print @sql_cmd	ELSE		EXEC( @sql_cmd )go----------------------------------------------------------------------------------------- Usage example:--DECLARE @new_password sysname -- Use tracing obfuscation in order to filter the new password from SQL traces-- http://blogs.msdn.com/sqlsecurity/archive/2009/06/10/filtering-obfuscating-sensitive-text-in-sql-server.aspx--SELECT @new_password = CASE WHEN 1=1 THEN     -- TODO: replace password placeholder below with a strong password    --   ##[MUST_CHANGE: replace this placehoder with a new password]##:   ELSE EncryptByPassphrase('','') ENDEXEC #sp_set_new_password_and_set_for_sa @new_passwordgoDROP PROC #sp_set_new_password_and_set_for_sa go
SQL Server 2008 можно выполнить следующий сценарий. Выполнить сценарий, вы должны войти в систему с учетной записью, имеющей разрешения CONTROL SERVER или учетная запись должна быть членом серверной роли sysadmin.
-- Work around for SQL Server 2008---------------------------------------------------------------------------- Set the password policy check off for [sa]-- Reset the password-- Set the password policy check on for [sa] once again-- -- NOTE: The password history will be deleted--CREATE PROC #sp_set_new_password_and_set_for_sa(@new_password sysname, @print_only int = null) AS	DECLARE @sql_cmd nvarchar(max);	DECLARE @sa_name sysname;	-- Get the current name for SID 0x01. 	-- By default the name should be "sa", but the actual name may have been chnaged by the system administrator	--	SELECT @sa_name = suser_sname(0x01);	-- NOTE: This password will not be subject to password policy or complexity checks	-- if desired, this step can be replaced with a "throw away" password for 	-- and set the real password after the check policy setting has been set	--	SELECT @sql_cmd = 'ALTER LOGIN ' + quotename(@sa_name) + ' WITH CHECK_POLICY = OFF;	ALTER LOGIN ' + quotename(@sa_name) + ' WITH PASSWORD = ' + quotename(@new_password, '''') + ';	ALTER LOGIN ' + quotename(@sa_name) + ' WITH CHECK_POLICY = ON;'	IF( @print_only is not null AND @print_only = 1 )		print @sql_cmd	ELSE		EXEC( @sql_cmd )go----------------------------------------------------------------------------------------- Usage example:--DECLARE @new_password sysname-- Use tracing obfuscation in order to filter the new password from SQL traces-- http://blogs.msdn.com/sqlsecurity/archive/2009/06/10/filtering-obfuscating-sensitive-text-in-sql-server.aspx--SELECT @new_password = CASE WHEN 1=1 THEN     -- TODO: replace password placeholder below with a strong password    --   ##[MUST_CHANGE: replace this placehoder with a new password]##:   ELSE EncryptByPassphrase('','') ENDEXEC #sp_set_new_password_and_set_for_sa @new_passwordgoDROP PROC #sp_set_new_password_and_set_for_sa go
В SQL Server 2008 криптографических расширяющее значение для управления на основе политики учетных записей можно сбросить с помощью следующего сценария. Выполнить сценарий, вы должны войти в систему с учетной записью, имеющей разрешения CONTROL SERVER или учетная запись должна быть членом серверной роли sysadmin.
-------------------------------------------------------------------------- Set the password policy check off for the Policy principals-- Reset the password-- Set the password policy check on for them once again---- NOTE: -- These principals are not intended to establish connections to SQL Server-- So this SP will also make sure they are disabled--CREATE PROC #sp_reset_password_and_disable(@principal_name sysname, @print_only int = null) AS	DECLARE @random_password nvarchar(max)		SET @random_password = convert(nvarchar(max), newid()) + convert(nvarchar(max), newid())	DECLARE @sql_cmd nvarchar(max)	SET @sql_cmd = N'ALTER LOGIN ' + quotename(@principal_name) + N' WITH CHECK_POLICY = OFF;	ALTER LOGIN ' + quotename(@principal_name) + N' WITH PASSWORD = ''' + replace(@random_password, '''', '''''') + N''';	ALTER LOGIN ' + quotename(@principal_name) + N' WITH CHECK_POLICY = ON;	ALTER LOGIN ' + quotename(@principal_name) + N' DISABLE;'	IF( @print_only is not null AND @print_only = 1 )		print @sql_cmd	ELSE		EXEC( @sql_cmd )goEXEC #sp_reset_password_and_disable '##MS_PolicyEventProcessingLogin##';EXEC #sp_reset_password_and_disable '##MS_PolicyTsqlExecutionLogin##';goSELECT name, password_hash, is_disabled FROM sys.sql_loginsgo
Статус
Корпорация Майкрософт подтверждает, что это проблема в продуктах Microsoft, перечисленных в разделе «Относится к».
Сначала этой проблемы появилось в SQL Server 2005 с пакетом обновления 4 для SQL Server 2005.
Сначала этой проблемы появилось в пакет обновления 2 (SP2) для SQL Server 2008 для SQL Server 2008.
Дополнительная информация
Корпорация Майкрософт Thanks следующий за работу с нами работу по защите пользователей:
SQL2005 sql2008

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 980671 — последний просмотр: 06/19/2011 14:54:00 — редакция: 4.0

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup

  • kbpasswords kbexpertiseadvanced kbsurveynew kbprb kbmt KB980671 KbMtru
Отзывы и предложения