การเปิดตัว OpenSSH 8.9 พร้อมการกำจัดช่องโหว่ใน sshd

หลังจากหกเดือนของการพัฒนา ก็ได้มีการนำเสนอ OpenSSH 8.9 ซึ่งเป็นการใช้งานแบบเปิดของไคลเอ็นต์และเซิร์ฟเวอร์สำหรับการทำงานบนโปรโตคอล SSH 2.0 และ SFTP sshd เวอร์ชันใหม่แก้ไขช่องโหว่ที่อาจทำให้มีการเข้าถึงโดยไม่ได้รับอนุญาต ปัญหานี้เกิดจากการมีจำนวนเต็มล้นในรหัสการตรวจสอบความถูกต้อง แต่สามารถนำไปใช้ร่วมกับข้อผิดพลาดทางตรรกะอื่นๆ ในรหัสเท่านั้น

ในรูปแบบปัจจุบัน ไม่สามารถหาประโยชน์จากช่องโหว่ได้เมื่อเปิดใช้งานโหมดการแยกสิทธิ์ เนื่องจากการแสดงรายการถูกบล็อกโดยการตรวจสอบแยกต่างหากที่ดำเนินการในโค้ดติดตามการแยกสิทธิ์ โหมดการแยกสิทธิ์ได้รับการเปิดใช้งานตามค่าเริ่มต้นตั้งแต่ปี 2002 นับตั้งแต่ OpenSSH 3.2.2 และมีผลบังคับใช้นับตั้งแต่เปิดตัว OpenSSH 7.5 ที่เผยแพร่ในปี 2017 นอกจากนี้ ใน OpenSSH เวอร์ชันพกพาที่เริ่มตั้งแต่เวอร์ชัน 6.5 (2014) เป็นต้นไป ช่องโหว่จะถูกบล็อกโดยการคอมไพล์พร้อมการรวมแฟล็กการป้องกันจำนวนเต็มล้นไว้ด้วย

การเปลี่ยนแปลงอื่นๆ:

  • OpenSSH เวอร์ชันพกพาใน sshd ได้ลบการสนับสนุนดั้งเดิมสำหรับการแฮชรหัสผ่านโดยใช้อัลกอริธึม MD5 (อนุญาตให้เชื่อมโยงกับไลบรารีภายนอกเช่น libxcrypt เพื่อส่งคืน)
  • ssh, sshd, ssh-add และ ssh-agent ใช้ระบบย่อยเพื่อจำกัดการส่งต่อและการใช้คีย์ที่เพิ่มใน ssh-agent ระบบย่อยอนุญาตให้คุณตั้งกฎที่กำหนดวิธีและตำแหน่งที่จะใช้คีย์ใน ssh-agent ตัวอย่างเช่น ในการเพิ่มคีย์ที่สามารถใช้เพื่อตรวจสอบสิทธิ์ผู้ใช้ที่เชื่อมต่อกับโฮสต์ scylla.example.org เท่านั้น ผู้ใช้ perseus ไปยังโฮสต์ cetus.example.org และผู้ใช้ medea ไปยังโฮสต์ charybdis.example.org ด้วยการเปลี่ยนเส้นทางผ่านโฮสต์ระดับกลาง scylla.example.org คุณสามารถใช้คำสั่งต่อไปนี้: $ ssh-add -h "[ป้องกันอีเมล]" \ -h "scylla.example.org" \ -h "scylla.example.org>[ป้องกันอีเมล]\ ~/.ssh/id_ed25519
  • ใน ssh และ sshd อัลกอริธึมไฮบริดจะถูกเพิ่มตามค่าเริ่มต้นในรายการ KexAlgorithms ซึ่งจะกำหนดลำดับในการเลือกวิธีการแลกเปลี่ยนคีย์[ป้องกันอีเมล]"(ECDH/x25519 + NTRU Prime) ทนทานต่อการเลือกบนคอมพิวเตอร์ควอนตัม ใน OpenSSH 8.9 มีการเพิ่มวิธีการเจรจานี้ระหว่างวิธี ECDH และ DH แต่มีการวางแผนว่าจะเปิดใช้งานตามค่าเริ่มต้นในรุ่นถัดไป
  • ssh-keygen, ssh และ ssh-agent ได้ปรับปรุงการจัดการคีย์โทเค็น FIDO ที่ใช้สำหรับการตรวจสอบอุปกรณ์ รวมถึงคีย์สำหรับการตรวจสอบสิทธิ์แบบไบโอเมตริกซ์
  • เพิ่มคำสั่ง "ssh-keygen -Y match-principals" ให้กับ ssh-keygen เพื่อตรวจสอบชื่อผู้ใช้ในไฟล์อนุญาตชื่อรายการ
  • ssh-add และ ssh-agent ให้ความสามารถในการเพิ่มคีย์ FIDO ที่ป้องกันด้วยรหัส PIN ให้กับ ssh-agent (คำขอ PIN จะแสดงในเวลาที่ทำการตรวจสอบสิทธิ์)
  • ssh-keygen อนุญาตให้เลือกอัลกอริทึมการแฮช (sha512 หรือ sha256) ในระหว่างการสร้างลายเซ็น
  • ใน ssh และ sshd เพื่อปรับปรุงประสิทธิภาพ ข้อมูลเครือข่ายจะถูกอ่านโดยตรงไปยังบัฟเฟอร์ของแพ็กเก็ตขาเข้า โดยข้ามการบัฟเฟอร์ระดับกลางบนสแต็ก การจัดวางข้อมูลที่ได้รับโดยตรงลงในบัฟเฟอร์ช่องสัญญาณจะดำเนินการในลักษณะเดียวกัน
  • ใน ssh คำสั่ง PubkeyAuthentication ได้ขยายรายการพารามิเตอร์ที่รองรับ (ใช่ | ไม่ | ไม่ผูกมัด | ผูกกับโฮสต์) เพื่อให้สามารถเลือกส่วนขยายโปรโตคอลที่จะใช้ได้

ในรุ่นต่อๆ ไป เราวางแผนที่จะเปลี่ยนค่าเริ่มต้นของยูทิลิตี้ scp ให้ใช้ SFTP แทนโปรโตคอล SCP/RCP แบบเดิม SFTP ใช้วิธีการจัดการชื่อที่คาดเดาได้มากขึ้น และไม่ใช้การประมวลผลเชลล์ของรูปแบบ glob ในชื่อไฟล์ในฝั่งของโฮสต์อื่น ซึ่งทำให้เกิดปัญหาด้านความปลอดภัย โดยเฉพาะอย่างยิ่งเมื่อใช้ SCP และ RCP เซิร์ฟเวอร์จะตัดสินใจว่าไฟล์และไดเร็กทอรีใดที่จะส่งไปยังไคลเอนต์ และไคลเอนต์จะตรวจสอบความถูกต้องของชื่ออ็อบเจ็กต์ที่ส่งคืนเท่านั้น ซึ่งหากไม่มีการตรวจสอบที่เหมาะสมในฝั่งไคลเอ็นต์ จะช่วยให้ เซิร์ฟเวอร์เพื่อถ่ายโอนชื่อไฟล์อื่นที่แตกต่างจากที่ร้องขอ โปรโตคอล SFTP ไม่มีปัญหาเหล่านี้ แต่ไม่รองรับการขยายเส้นทางพิเศษ เช่น “~/” เพื่อแก้ไขความแตกต่างนี้ OpenSSH รุ่นก่อนหน้านี้ได้แนะนำส่วนขยายโปรโตคอล SFTP ใหม่ให้กับเส้นทาง ~/ และ ~user/ ในการใช้งานเซิร์ฟเวอร์ SFTP

ที่มา: opennet.ru

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