След четири месеца разработка излезе OpenSSH 8.4, отвореното реализиране на клиент и сървър за работа с протоколите SSH 2.0 и SFTP.
Основни промени:
- Промени, свързани с безопасността:
- В ssh-agent при използване на FIDO ключове, които не са създадени за аутентикация чрез SSH (идентификаторът на ключа не започва с „ssh:“), сега се извършва проверка, че съобщението ще бъде подписано с използване на методите, прилагани в SSH протокола. Това изменение няма да позволи пренасочване на ssh-agent към отдалечени хостове, които имат FIDO ключове, с цел да се блокира възможността за използване на тези ключове за генериране на подписи на заявки за уеб аутентификация (обратният случай, при който браузърът може да подпише SSH заявка, е изключен, благодарение на прилагането на префикса „ssh:“ в идентификатора на ключа).
- В ssh-keygen при генериране на резидентен ключ е добавена подкрепа за разширението credProtect, описано в спецификацията FIDO 2.1, което предоставя допълнителна защита на ключовете чрез задължителна заявка за въвеждане на PIN-код преди извършване на всяка операция, която би могла да доведе до извличане на резидентния ключ от токена.
- Промени, които потенциално нарушават съвместимостта:
- За поддръжка на FIDO/U2F се препоръчва да се използва библиотеката libfido2 с версия най-малко 1.5.0. Частично е реализирана възможността за използване и на по-стари версии, но в този случай ще бъдат недостъпни функции като резидентни ключове, заявка за PIN и свързване на няколко токена.
- В ssh-keygen формата на потвърдителната информация, опционално запазвана при генериране на FIDO ключ, е добавена информация за автентификатора, необходима за проверка на потвърдителните цифрови подписи.
- API-то, използвано при взаимодействие на OpenSSH с слоя за достъп до FIDO токени, е променено.
- При компилирането на преносима версия на OpenSSH сега се изисква automake за генериране на конфигурационен скрипт и свързани файлове за компилация (ако се извършва компилация от публикуван tar файл с код, не е необходима регенерация на конфигурацията).
- В ssh и ssh-keygen е добавена поддръжка за FIDO ключове, които изискват потвърждение с помощта на PIN-код. За генериране на ключове с PIN в ssh-keygen е добавена опция „verify-required“. При използването на подобни ключове, преди извършване на операцията по създаване на подпис, на потребителя се извежда запитване, изискващо потвърждение на действията чрез въвеждане на PIN-код.
- В sshd в настройката authorized_keys е реализирана опция „verify-required“, изискваща прилагане на възможностите за верификация на присъствието на потребителя по време на операции с токен. Стандартът FIDO предвижда няколко варианта на подобна верификация, но в момента в OpenSSH се поддържа само проверка на основата на PIN код.
- В sshd и ssh-keygen е добавена поддръжка на проверка на цифрови подписи, съответстващи на стандарта FIDO Webauthn, позволяващ използването на FIDO ключове в уеб браузъри.
- В ssh в настройките CertificateFile,
ControlPath, IdentityAgent, IdentityFile, LocalForward и
RemoteForward е разрешена подмяна на стойности от променливи на средата, посочени във формата „${ENV}“. - В ssh и ssh-agent е добавена поддръжка на променливата на средата $SSH_ASKPASS_REQUIRE, която може да се използва за включване или изключване на извикването на ssh-askpass.
- В ssh в ssh_config в директивата AddKeysToAgent е добавена възможност за ограничаване на времето на валидност на ключа. След изтичането на зададения лимит ключовете автоматично се изтриват от ssh-agent.
- В scp и sftp с флага „-A“ сега може изрично да се разреши пренасочване в scp и sftp с използване на ssh-agent (по подразбиране пренасочването е забранено).
- В настройките на ssh е добавена поддръжка на подмяна ‘%k’, дефинираща името на хост ключа. Указаната възможност може да се използва за разпределение на ключовете в отделни файлове (например, „UserKnownHostsFile ~/.ssh/known_hosts.d/%k“).
- Разрешено е използването на операцията „ssh-add -d -“ за четене от стандартния вход на ключовете, които подлежат на изтриване.
- В sshd е осигурено отразяване в логовете на началото и завършването на процеса по ограничаване на съединенията, регулиран чрез параметъра MaxStartups.
Разработчиците на OpenSSH също напомниха за предстоящото извеждане на алгоритмите, използващи хешове SHA-1, в категорията "остарели", поради на ефективността на колизионистките атаки с зададен префикс (цената за генериране на колизия се оценява на около 45 хиляди долара). В един от предстоящите версии планират по подразбиране да се деактивира възможността за използване на алгоритъма за цифрови подписи на публичен ключ „ssh-rsa“, който се споменава в оригиналния RFC за протокола SSH и остава широко разпространен на практика (за проверка на използването на ssh-rsa в своите системи може да се опитате да се свържете по ssh с опцията „-oHostKeyAlgorithms=-ssh-rsa“).
За да се улесни преходът към новите алгоритми в OpenSSH, в следващото издание по подразбиране ще бъде включена настройката UpdateHostKeys, която ще позволи автоматичното преминаване на клиентите към по-надеждни алгоритми. Сред препоръчаните за миграция алгоритми се споменава rsa-sha2-256/512 на базата на RFC8332 RSA SHA-2 (поддържа се от OpenSSH 7.2 и се използва по подразбиране), ssh-ed25519 (поддържа се от OpenSSH 6.5) и ecdsa-sha2-nistp256/384/521 на базата на RFC5656 ECDSA (поддържа се от OpenSSH 5.7).
Източник: opennet.ru
