Заключете Вашия ssh-agent и той би трябвало да откаже да подписва каквото и да било, докато не го отключите. В OpenSSH 10.4 обаче заключването му също така е изключвало проверката, която указва на агента дали дадена заявка идва от Вашата собствена машина, или е пристигнала по пренасочена връзка от отдалечен сървър. Корекцията за сигурност е налична от днес в OpenSSH 10.5.

Агентът съхранява Вашите декриптирани частни ключове, за да не се налага да въвеждате парола на всеки няколко минути, а пренасочването на агента (agent forwarding) позволява на програма на отдалечен хост да използва тези ключове за подписване при вход. За да се разграничат двата случая, ssh изпраща заявка от тип session-bind@openssh.com, която идентифицира пренасочения агент.

Заключеният агент е отхвърлял тези заявки, а заявка, която никога не се обвързва, изглежда локална. Поради това операции, предназначени единствено за локална употреба, са можели да се извършват отдалечено, включително добавяне на PKCS#11 токени и използване на ключове с ограничения за дестинация, които указват, че даден ключ може да се използва само за достъп до един конкретен хост. По този начин потребител, който е заключил агента преди да се отдалечи от лаптопа си, всъщност го е направил по-разрешаващ, а не по-защитен.

Изследовател е открил, че ключовата дума „restrict“ в authorized_keys, която би трябвало да изключва всяка функция за пренасочване на ключ, не се е прилагала за пренасочване на тунели (tunnel forwarding). Тунелите са административно деактивирани по подразбиране, така че администратор трябва изрично да ги е активирал, за да се появи този проблем.

Новите версии ще излизат по-често

Напоследък са получени голям брой доклади за грешки в сигурността, „много от които са констатации от AI модели или са направени с помощта на AI“. Голяма част от тях нямат отражение върху сигурността, когато се приложи реалистичен модел на заплахите. Въпреки това екипът ги приветства и очаква заедно с тях анализ от хора, тестови случаи и предложени корекции.

Това, което промени графика на издаване на нови версии, е поредица от случаи, при които грешка, първоначално открита по този начин, по-късно е намерена независимо от друг изследовател. Това предполага, че атакуващите, които не докладват нищо на проектите с отворен код, също могат да открият тези уязвимости. Вместо да групира корекциите до следващата планирана версия, проектът занапред ще ги пуска по-бързо.

Сега sshd сравнява типа на публичния ключ с разрешените алгоритми, преди да анализира ключа, изпратен от отсрещната страна, което изважда поне част от кода за анализ и проверка извън обсега на клиенти, които все още не са се удостоверили. Версията също така отстранява уязвимости от тип double free в ssh-keygen, които са били недостижими извън тестова среда.

На други места в новата версия командата „ssh -Z user@host“ отпечатва по ред ключовете, които клиентът ще опита за удостоверяване с публичен ключ. Сега ssh предпочита FIDO ключове, които не изискват докосване, и оставя ключовете, изискващи ПИН или биометрично потвърждение, за най-накрая. Инструментът ssh-keygen вече може да задава или изчиства флаговете за изискване на докосване и потвърждение за FIDO частни ключове при нулиране на парола.

Портативната версия на OpenSSH вече изисква поддръжка на ECC (елиптични криви), включително кривата NISTP521, от библиотеката libcrypto, с която се компилира. LibreSSL, OpenSSL, BoringSSL и AWS LC я включват в своите компилации по подразбиране, а конфигурацията --without-openssl не е засегната.