Рекомендация Debian по безопасности

DLA-265-1 pykerberos -- обновление безопасности LTS

Дата сообщения:
03.07.2015
Затронутые пакеты:
pykerberos
Уязвим:
Да
Ссылки на базы данных по безопасности:
В каталоге Mitre CVE: CVE-2015-3206.
Более подробная информация:

Мартин Прпик сообщил в Red Hat Bugzilla (системе отслеживания ошибок Fedora) о возможности осуществления атак по принципу человек-в-середине в коде pykerberos. Ранее о проблеме было сообщено автором основной ветки разработки. Ниже приводится сообщение об ошибке из основной ветки разработки:

Метод checkPassword() в python-kerberos в предыдущем выпуске оказался небезопасным. Он использовался для выполнения (и по умолчанию используется до сих пор) kinit (AS-REQ) для запроса TGT у KDC для данной учётной записи, а также интерпретирует успешное выполнение этой операции или ошибку, указывая то, верен пароль или нет. Тем не менее, этот метод не выполняет проверку того, чтобы взаимодействие осуществлялось с доверенной KDC: злоумышленник может ответить вместо KDC сообщением с AS-REP, совпадающим с переданным им паролем.

Представьте, что вы проверяете пароль, используя аутентификацию LDAP, а не Kerberos: конечно, вы будете использовать TLS с LDAP для того, чтоб убедиться, что вы взаимодействуете с настоящим доверенным сервером LDAP. Тут применяется то же требование. kinit не является службой проверки паролей.

Обычно, вы используете TGT, полученный вместе с паролем пользователя, затем получаете билет для учётной записи, для которой у проверяющего имеются ключи (например, веб-сервер, проверяющий имя пользователя и пароль в форме аутентификации, может получить билет для своей собственной учётной записи HTTP/host@REALM), которые он затем может проверить. Заметьте, что это требует того, чтобы проверяющий имел свою собственную учётную запись Kerberos, что требуется из-за симметричной природы Kerberos (а в случае с LDAP использование шифрования с открытыми ключами позволяет осуществлять анонимную проверку).

В этой версии пакета pykerberos добавлена новая опция для метода checkPassword(). Установка опции verify в значение True при использовании метода checkPassword() приведёт к выполнению проверки KDC. Это этого вам следует предоставить файл krb5.keytab, содержащий ключи учётных записей для службы, которую вы намерены использовать.

Поскольку по умолчанию файл krb5.keytab в /etc не доступен пользователям и процессам, не имеющим права суперпользователя, вам следует убедиться, что ваш собственный файл krb5.keytab, содержащий правильные ключи учётных записей, передаётся вашему приложению через переменную окружения KRB5_KTNAME.

Внимание: в Debian squeeze(-lts) поддержка проверки KDC по умолчанию отключена для того, чтобы не нарушалась работа уже настроенных систем.