ในไคลเอนต์ SSH OpenSSH และ PuTTY
เมื่อรู้ว่าไคลเอนต์พยายามเชื่อมต่อเป็นครั้งแรกและยังไม่มีรหัสโฮสต์ที่ด้านข้าง ผู้โจมตีสามารถถ่ายทอดการเชื่อมต่อผ่านตัวเอง (MITM) และมอบรหัสโฮสต์ให้กับลูกค้าซึ่งไคลเอนต์ SSH จะพิจารณา เป็นคีย์ของโฮสต์เป้าหมายหากไม่ได้ตรวจสอบลายนิ้วมือของคีย์ ดังนั้น ผู้โจมตีสามารถจัดระเบียบ MITM โดยไม่กระตุ้นความสงสัยของผู้ใช้ และเพิกเฉยต่อเซสชันที่ฝั่งไคลเอ็นต์ได้แคชคีย์โฮสต์ไว้แล้ว ความพยายามที่จะแทนที่ซึ่งจะส่งผลให้เกิดคำเตือนเกี่ยวกับการเปลี่ยนแปลงคีย์โฮสต์ การโจมตีนี้ขึ้นอยู่กับความประมาทของผู้ใช้ที่ไม่ได้ตรวจสอบลายนิ้วมือของคีย์โฮสต์ด้วยตนเองเมื่อทำการเชื่อมต่อครั้งแรก ผู้ที่ตรวจสอบลายนิ้วมือหลักจะได้รับการปกป้องจากการโจมตีดังกล่าว
เพื่อเป็นสัญญาณในการระบุความพยายามในการเชื่อมต่อครั้งแรก การเปลี่ยนแปลงลำดับการแสดงรายการอัลกอริธึมคีย์โฮสต์ที่รองรับจึงถูกนำมาใช้ หากการเชื่อมต่อครั้งแรกเกิดขึ้น ไคลเอนต์จะส่งรายการอัลกอริธึมเริ่มต้น และหากคีย์โฮสต์อยู่ในแคชแล้ว อัลกอริธึมที่เกี่ยวข้องจะถูกวางไว้ที่แรก (อัลกอริธึมจะถูกจัดเรียงตามลำดับการตั้งค่า)
ปัญหาปรากฏใน OpenSSH รุ่น 5.7 ถึง 8.3 และ PuTTY 0.68 ถึง 0.73 ปัญหา
โครงการ OpenSSH ไม่ได้วางแผนที่จะเปลี่ยนพฤติกรรมของไคลเอนต์ SSH เนื่องจากหากคุณไม่ได้ระบุอัลกอริทึมของคีย์ที่มีอยู่ตั้งแต่แรก จะพยายามใช้อัลกอริทึมที่ไม่สอดคล้องกับคีย์แคชและ คำเตือนเกี่ยวกับรหัสที่ไม่รู้จักจะปรากฏขึ้น เหล่านั้น. มีตัวเลือกเกิดขึ้น - ข้อมูลรั่วไหล (OpenSSH และ PuTTY) หรือคำเตือนเกี่ยวกับการเปลี่ยนคีย์ (Dropbear SSH) หากคีย์ที่บันทึกไว้ไม่สอดคล้องกับอัลกอริทึมแรกในรายการเริ่มต้น
เพื่อให้การรักษาความปลอดภัย OpenSSH ขอเสนอวิธีการอื่นสำหรับการตรวจสอบคีย์โฮสต์โดยใช้รายการ SSHFP ใน DNSSEC และใบรับรองโฮสต์ (PKI) คุณยังสามารถปิดใช้งานการเลือกอัลกอริธึมคีย์โฮสต์แบบปรับเปลี่ยนได้ผ่านตัวเลือก HostKeyAlgorithms และใช้ตัวเลือก UpdateHostKeys เพื่ออนุญาตให้ไคลเอนต์รับคีย์โฮสต์เพิ่มเติมหลังจากการรับรองความถูกต้อง
ที่มา: opennet.ru