Opiekunowie PuTTY Secure Shell (SSH) i klienta Telnet ostrzegają użytkowników o krytycznej luce w zabezpieczeniach wersji od 0.68 do 0.80, którą można wykorzystać do pełnego odzyskania kluczy prywatnych NIST P-521 (ecdsa-sha2-nistp521).
Luce nadano identyfikator CVE CVE-2024-31497 , a odkrycie przypisuje się badaczom Fabianowi Bäumerowi i Marcusowi Brinkmannowi z Ruhr University Bochum.
„Dzięki tej luce nastąpi naruszenie klucza prywatnego” – stwierdzono w poradniku projektu PuTTY.
„Napastnik posiadający kilkadziesiąt podpisanych wiadomości i klucz publiczny ma wystarczającą ilość informacji, aby odzyskać klucz prywatny, a następnie sfałszować podpisy tak, jakby pochodziły od Ciebie, umożliwiając mu (na przykład) zalogowanie się na dowolnych serwerów, z których korzystasz klucz.”
Aby jednak uzyskać podpisy, osoba atakująca będzie musiała złamać zabezpieczenia serwera, na którym klucz jest używany do uwierzytelniania. W wiadomości opublikowanej na liście mailingowej Open Source Software Security (oss-sec) Bäumer opisał usterkę jako wynikającą z generowania stronniczych kodów kryptograficznych ECDSA , które mogłyby umożliwić odzyskanie klucza prywatnego.
„Pierwszych 9 bitów każdej wartości jednorazowej ECDSA wynosi zero” – wyjaśnił Bäumer . „Pozwala to na pełne odzyskanie tajnego klucza z około 60 podpisów przy użyciu najnowocześniejszych technik”.
„Te podpisy mogą zostać przechwycone przez złośliwy serwer (ataki typu man-in-the-middle nie są możliwe, ponieważ klienci nie przesyłają swoich podpisów w sposób jawny) lub z dowolnego innego źródła, np. podpisanych zatwierdzeń git za pośrednictwem przekazanych agentów”.
Oprócz wpływu na PuTTY, wpływa także na inne produkty takie jak:
FileZilla (3.24.1 – 3.66.5)
WinSCP (5.9.5 – 6.3.2)
TortoiseGit (2.4.0.2 – 2.15.0)
TortoiseSVN (1.10.0 – 1.14.6)
Po ujawnieniu luki problem rozwiązano w PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 i TortoiseGit 2.15.0.1. Użytkownikom TortoiseSVN zaleca się używanie Plink od najnowszej wersji PuTTY 0.81 podczas uzyskiwania dostępu do repozytorium SVN przez SSH do czasu udostępnienia łatki.
W szczególności problem ten został rozwiązany poprzez przejście na technikę RFC 6979 dla wszystkich typów kluczy DSA i ECDSA, rezygnując z wcześniejszej metody wyprowadzania wartości jednorazowej przy użyciu podejścia deterministycznego, które unikając konieczności stosowania źródła losowości wysokiej jakości, było podatne do stronniczych nonces podczas korzystania z P-521.
Twórcy PuTTY twierdzą, że to starsze podejście zostało opracowane w czasie, gdy w systemie Microsoft Windows brakowało natywnej obsługi kryptograficznego generatora liczb losowych.