พบช่องโหว่บน PuTTY SSH client ที่ทำให้สามารถกู้คืน Private Key ที่เข้ารหัสได้

พบช่องโหว่ใน PuTTY เวอร์ชัน 0.68 ถึง 0.80 ที่อาจทำให้ Hacker ที่มีสิทธิ์เข้าถึง cryptographic signatures 60 รายการสามารถกู้คืน private key ที่ใช้ในการสร้างได้

PuTTY เป็นโปรแกรมโอเพ่นซอร์ส terminal emulator, serial console และ network file transfer แอปพลิเคชันที่ได้รับความนิยม ซึ่งรองรับ SSH (Secure Shell), Telnet, SCP (Secure Copy Protocol) และ SFTP (SSH File Transfer Protocol) โดยที่ผู้ดูแลระบบ และนักพัฒนาส่วนใหญ่ใช้ซอฟต์แวร์ PuTTY เพื่อเข้าถึง และจัดการเซิร์ฟเวอร์ และอุปกรณ์เครือข่ายอื่น ๆ ผ่าน SSH จาก Windows-based client

CVE-2024-31497 เป็นช่องโหว่ที่มีสาเหตุมาจากวิธีที่ PuTTY สร้าง ECDSA nonce (ตัวเลขการเข้ารหัสเฉพาะชั่วคราว) สำหรับ NIST P-521 ที่ไว้ใช้ SSH authentication โดย PuTTY ใช้วิธีการในการสร้างตัวเลขเหล่านี้ เพื่อทดแทนการขาดตัวสร้างเลขสุ่มสำหรับการเข้ารหัสที่มีประสิทธิภาพใน Windows บางเวอร์ชัน โดยช่องโหว่ถูกค้นพบโดย Fabian Bäumer และ Marcus Brinkmann นักวิจัยจาก Ruhr University Bochum

โดยผลกระทบหลักของการกู้คืน private key คือการอนุญาตให้มีการเข้าถึง SSH server โดยไม่ได้รับอนุญาต หรือลงชื่อในฐานะนักพัฒนา อาจส่งผลให้เกิดการโจมตี supply chain attack ใน software project ที่ได้รับผลกระทบได้

การโจมตีจากช่องโหว่ CVE-2024-31497

Digital signature ถูกสร้างขึ้นโดยใช้ private key ของผู้ใช้ และตรวจสอบโดยใช้ public key ที่เกี่ยวข้องบนเซิร์ฟเวอร์ เพื่อให้มั่นใจถึงตัวตนของผู้ใช้ และความปลอดภัยของการเชื่อมต่อ ซึ่ง Brinkmann อธิบายใน X ว่า Hacker ต้องการ signatures 58 รายการในการคำนวณ private key ของเป้าหมาย ซึ่งสามารถรับได้โดยการรวบรวมจากการเข้าสู่ระบบ SSH server ที่ถูกควบคุม หรือถูกโจมตี หรือจาก signed Git commits

การรวบรวม signatures จาก SSH server ได้ หมายถึงการที่ SSH server ได้ถูกโจมตี และสามารถเข้าถึงระบบปฏิบัติการในวงกว้างได้

รวมถึง Bäumer ให้ข้อมูลกับ BleepingComputer ว่า วิธีในการขโมย signature จาก public commits นั้นมีประโยชน์มากกว่าสำหรับ Hacker และมีบางกรณีที่ช่องโหว่นี้สามารถถูกโจมตีได้โดยไม่จำเป็นต้องโจมตี SSH server ไว้ล่วงหน้า

เช่นการใช้ SSH key ในการ signing Git commits โดยการตั้งค่าทั่วไปเกี่ยวข้องกับการใช้ Pageant ซึ่งเป็น ssh-agent ของ PuTTY ภายในเครื่อง และการส่งต่อ agent ไปยัง development host

ซึ่งสามารถกำหนดค่า Git ให้ใช้ OpenSSH เพื่อ sign Git commits ด้วย SSH key ที่ Pageant มอบให้ จากนั้น signatures จะถูกสร้างขึ้นโดย Pageant ทำให้สามารถกู้คืน private key ได้ง่าย ซึ่งเป็นสิ่งที่มีความอันตรายอย่างยิ่ง เนื่องจาก git signatures อาจเข้าถึงได้แบบสาธารณะ เช่น หากการ commits ถูกส่งไปยัง public repository บน GitHub

การแก้ไขช่องโหว่บนซอฟต์แวร์อื่น ๆ ที่ได้รับผลกระทบ

ทั้งนี้นักพัฒนาได้แก้ไขช่องโหว่ใน PuTTY เวอร์ชัน 0.81 โดยได้ยกเลิกวิธีการ k-generation method ในรุ่นก่อน และเปลี่ยนไปใช้ RFC 6979 technique สำหรับคีย์ DSA และ ECDSA ทั้งหมด แต่ทั้งนี้ก็มีข้อสังเกตว่า private key P521 ที่สร้างขึ้นโดยใช้เครื่องมือเวอร์ชันที่มีช่องโหว่ นั้นไม่ปลอดภัย และถูกเปลี่ยนเป็น private key ใหม่ที่ปลอดภัยแทน

ซอฟต์แวร์ต่อไปนี้ที่ใช้ PuTTY ที่มีช่องโหว่ และได้รับผลกระทบ :

FileZilla 3.24.1 – 3.66.5 (แก้ไขใน 3.67.0)

WinSCP 5.9.5 – 6.3.2 (แก้ไขใน 6.3.3)

TortoiseGit 2.4.0.2 – 2.15.0 (แก้ไขใน 2.15.0.1)

TortoiseSVN 1.10.0 – 1.14.6 (สามารถแก้ไขได้โดยการกำหนดค่า TortoiseSVN เพื่อใช้ Plink จาก PuTTY 0.81 รุ่นล่าสุด)

ผู้ใช้จึงควรตรวจสอบเครื่องมือของตน และดำเนินการแก้ไขช่องโหว่เพื่อป้องกันการถูกโจมตี

ที่มา : bleepingcomputer