
إثبات المفهوم الذي يستغل ثغرة CVE-2024-31497 في PuTTy.
يستغل هذا الثغرة توليد nonce المنحاز في خوارزمية ECDSA في ملف ecc-ssh.c. يتم توليد nonce باستخدام $sha512(ID\ ||\ sha512(privKey)\ ||\ sha1(data))\ mod\ q$ مما يترك البتات التسع العلوية صفرًا. لاستعادة المفتاح الخاص نحتاج إلى 60 توقيعًا، لكن مع 58 توقيعًا تظل لدينا احتمالية نجاح تبلغ 50%.
تم اكتشاف الثغرة بواسطة Bäumer و Marcus Brinkmann.
لاستخدام هذا الاستغلال، يجب أن يكون لديك sagemath ومتطلبات بايثون في requirements.txt مثبتة.
استخرج توقيعات ECDSA من 60 commit موثقة على GitHub استخدمت PuTTy أو TortoiseGit لتوقيع محتوى الـ commit.
هجوم آخر محتمل هو إعداد خادم SSH مارق يتصل به الضحايا (باستخدام PuTTY أو Pageant)، وبعد عدة اتصالات يمكنك استرجاع 60 توقيعًا لاستعادة المفتاح الخاص.
يجب أن يحتوي ملف التوقيعات على تجزئة الرسالة، ثم مسافة، وقيم r و s متسلسلة.
يمكن أن يكون ملف إدخال pubkey بصيغة raw أو PEM أو DER أو OpenSSH.
يستخدم إثبات المفهوم هذا جزءًا من تنفيذ malb للورقة البحثية On Bounded Distance Decoding with Predicate: Breaking the "Lattice Barrier" for the Hidden Number Problem