Terrapin - ช่องโหว่ในโปรโตคอล SSH ที่ช่วยให้คุณลดความปลอดภัยในการเชื่อมต่อ

กลุ่มนักวิจัยจากมหาวิทยาลัย Ruhr ในเมืองโบชุม (เยอรมนี) นำเสนอเทคนิคการโจมตี MITM ใหม่บน SSH - Terrapin ซึ่งใช้ประโยชน์จากช่องโหว่ (CVE-2023-48795) ในโปรโตคอล ผู้โจมตีที่สามารถจัดการการโจมตี MITM ได้ในระหว่างกระบวนการเจรจาการเชื่อมต่อ สามารถบล็อกการส่งข้อความโดยการกำหนดค่าส่วนขยายโปรโตคอลเพื่อลดระดับความปลอดภัยในการเชื่อมต่อ ต้นแบบของชุดเครื่องมือโจมตีได้รับการเผยแพร่บน GitHub

ในบริบทของ OpenSSH ช่องโหว่ดังกล่าวทำให้คุณสามารถย้อนกลับการเชื่อมต่อเพื่อใช้อัลกอริธึมการรับรองความถูกต้องที่มีความปลอดภัยน้อยกว่า และปิดใช้งานการป้องกันการโจมตีช่องทางด้านข้างที่สร้างอินพุตขึ้นมาใหม่โดยการวิเคราะห์ความล่าช้าระหว่างการกดแป้นพิมพ์บนแป้นพิมพ์ ในไลบรารี Python AsyncSSH เมื่อรวมกับช่องโหว่ (CVE-2023-46446) ในการใช้เครื่องสถานะภายใน การโจมตี Terrapin ช่วยให้เราสามารถแทรกตัวเข้าไปในเซสชัน SSH ได้

ช่องโหว่ดังกล่าวส่งผลกระทบต่อการใช้งาน SSH ทั้งหมดที่รองรับการเข้ารหัสโหมด ChaCha20-Poly1305 หรือ CBC ร่วมกับโหมด ETM (เข้ารหัสแล้ว-MAC) ตัวอย่างเช่น ความสามารถที่คล้ายกันมีอยู่ใน OpenSSH มานานกว่า 10 ปี ช่องโหว่นี้ได้รับการแก้ไขแล้วใน OpenSSH 9.6 ที่วางจำหน่ายวันนี้ รวมถึงการอัปเดต PuTTY 0.80, libssh 0.10.6/0.9.8 และ AsyncSSH 2.14.2 ใน Dropbear SSH การแก้ไขได้ถูกเพิ่มลงในโค้ดแล้ว แต่ยังไม่ได้สร้างรีลีสใหม่

ช่องโหว่นี้เกิดจากการที่ผู้โจมตีควบคุมการรับส่งข้อมูลการเชื่อมต่อ (เช่น เจ้าของจุดไร้สายที่เป็นอันตราย) สามารถปรับหมายเลขลำดับแพ็กเก็ตในระหว่างขั้นตอนการเจรจาการเชื่อมต่อ และบรรลุการลบข้อความบริการ SSH ตามจำนวนที่กำหนดโดยพลการ ส่งโดยไคลเอนต์หรือเซิร์ฟเวอร์ เหนือสิ่งอื่นใด ผู้โจมตีสามารถลบข้อความ SSH_MSG_EXT_INFO ที่ใช้ในการกำหนดค่าส่วนขยายโปรโตคอลที่ใช้ได้ เพื่อป้องกันไม่ให้อีกฝ่ายตรวจพบการสูญหายของแพ็กเก็ตเนื่องจากช่องว่างในหมายเลขลำดับ ผู้โจมตีจะเริ่มส่งแพ็กเก็ตจำลองที่มีหมายเลขลำดับเดียวกันกับแพ็กเก็ตระยะไกลเพื่อเปลี่ยนหมายเลขลำดับ แพ็กเก็ตจำลองประกอบด้วยข้อความที่มีแฟล็ก SSH_MSG_IGNORE ซึ่งจะถูกละเว้นในระหว่างการประมวลผล

Terrapin - ช่องโหว่ในโปรโตคอล SSH ที่ช่วยให้คุณลดความปลอดภัยในการเชื่อมต่อ

การโจมตีไม่สามารถทำได้โดยใช้รหัสสตรีมและ CTR เนื่องจากการละเมิดความสมบูรณ์จะถูกตรวจพบในระดับแอปพลิเคชัน ในทางปฏิบัติ เฉพาะการเข้ารหัส ChaCha20-Poly1305 เท่านั้นที่ไวต่อการถูกโจมตี ([ป้องกันอีเมล]) ซึ่งสถานะจะถูกติดตามด้วยหมายเลขลำดับข้อความเท่านั้น และการรวมกันจากโหมด Encrypt-Then-MAC (*[ป้องกันอีเมล]) และรหัส CBC

ใน OpenSSH 9.6 และการใช้งานอื่นๆ ส่วนขยายของโปรโตคอล “KEX แบบเข้มงวด” จะถูกนำมาใช้เพื่อป้องกันการโจมตี ซึ่งจะเปิดใช้งานโดยอัตโนมัติหากมีการรองรับบนเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ ส่วนขยายจะยุติการเชื่อมต่อเมื่อได้รับข้อความที่ผิดปกติหรือไม่จำเป็น (เช่น ด้วยแฟล็ก SSH_MSG_IGNORE หรือ SSH2_MSG_DEBUG) ที่ได้รับในระหว่างขั้นตอนการเจรจาการเชื่อมต่อ และยังรีเซ็ตตัวนับ MAC (รหัสตรวจสอบข้อความ) หลังจากการแลกเปลี่ยนคีย์แต่ละครั้งเสร็จสิ้น

ที่มา: opennet.ru

เพิ่มความคิดเห็น