вторник, 24 февраля 2009 г.

FIPS-140-2, Solaris 10 и security-патчи

Хотя формально Solaris 10 10/08 и поддерживает два новых алгоритма хэширования паролей, требуемые FIPS-140-2, из-за совершенно несуразной ошибки в вычислении длины "соли" данные алгоритмы совершенно неработоспособны в релизе 10/08.

Самое досадное - хотя в OpenSolaris данный баг - хотя и с ленцой и не сразу - был исправлен, для продуктивного Соляриса он вышел лишь сегодня.

"Долго шел!" (С) "Пираты Карибского Моря - 1"

Номера патчей 140857-01 и 140858-01 (для SPARC и x86 соответственно).

Плохая новость - данные патчи не публичные и требуют наличия технической поддержки. По непонятной причине Сан не считает данные патчи ни критическими (хотя блондинки могут тупо лишиться доступа - хоть и не навсегда - к рутовым и прочим аккаунтам), ни относящимися к секьюрити (что, в принципе, не соответствует действительности - смотрим ниже).

Очень плохая новость - Сан ужесточил свою политику в отношении патчей начиная с этой недели. Читать здесь и здесь. Сильно подозреваю, что кто-то в руководстве Сан ошибочно считает, что получит таком образом больше денег за поддержку в период катастрофического кризиса. Так же сильно подозреваю, что в условиях кризиса клиентам не до патчей и саппорта.

Хотя слух о коллизиях в MD5, используемом главным образом в качестве дефолтного алгоритма (и то не всеми, правда, Вася? ;)) и не подтверждается повсеместно (ученые Пекинского университета, обладающие якобы невероятной вычислительной мощью в лице миллиарда граждан якобы нашли таковые коллизии ;)), рисковать никто как-то не хочет. Из тех, кто понимает, конечно.

До недавнего времени в альтернативе были лишь проверенные временем алгоритмы FreeBSD - BlowFish и ее же MD5.

Еще одна неприятная новость.

После смены алгоритма в /etc/security/policy.conf, утилита passwd при смене пароля не меняет вид алгоритма шифрования, установленный ранее для существующих аккаунтов.

Для перешифрования паролей нужно ручками отредактировать файл /etc/shadow, удалив полностью существующие пароли, а затем для каждого аккаунта задать пароли заново при помощи утилиты passwd.

Да, это то, что вы подумали - выполнять эту процедуру наиболее безопасно лишь в single user mode, при полном отсутствии удаленного доступа.

Хинт: получив доступ к данным патчам, советую их сохранить в надежном месте. Например, на флэшке поближе к сердцу. Если по какой-либо причине придется откатываться к начальному релизу 10/08 - есть недурной шанс лишиться доступа. Правда, это не смертельно - поскольку легко лечится, если машину можно загрузить с внешнего носителя, однако модет отнять время. И потом, все равно же захочется - в порядке здоровой параноинки - вернуть шифрование в максимальное положение. Так что лучше проявить предусмотрительность.

Что делать обычному смертному, не имеющему технической поддержки?

Что ж, FIPS будет по борту. Но хотя бы - не станем, ей-богу, использовать MD5 - а то китайцы - они такие ;).

Хинт: установить алгоритм 2a - сиречь FreeBSD BlowFish - и перешифровать пароли по вышеприведенной процедуре.

Советую не шалить с алгоритмами FIPS до обновления. Аккаунты будут заблокированы из-за бага 6733782 sha256 algorithm incorrectly builds final salt string, а на восстановление статуса-кво уйдет время (по принципу "Я - блондинко - дуро").

PS. То, что этот глупый баг так неспешно и вразвалочку исправляли, говорит лишь о той лени и, в общем-то, потрясающей беспечности эксплуатационников - которым, вообще говоря, пофигу всякие там стандарты и нововведения. Гром не грянет - мужик не перекрестится. В сообществе OpenSolaris на момент обнаружения бага лично мной был лишь один баг-репорт по данной проблеме. Соответственно, хотя сообщество OpenSolaris о кривизне кода библиотек /usr/lib/security/crypt_sha*.so.1 знало достаточно давно, Большой Сан полгода раскачивался. Видимо, были более важные дела. И даже после этого патч оказался под замком - хотя лично я, с учетом вышеописанных особенностей, включил бы его в группу security и сделал таким образом публичным.

PPS. Кстати, pca обновился буквально только что - как раз с учетом вышеописанных изменений в политике патчей. Кто успел - тот обновился с использованием старого pca. Кто не успел - ищет возможность приобретения поддержки. Для тех, кто понимает - не надо ждать, пока протелится Стивен Кристиансен и Ко:

pca --update=now

спасет гигантов мысли немедленно.