OpenSSH 8.3 เปิดตัวพร้อมการแก้ไขช่องโหว่ scp

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

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

คุณลักษณะนี้ เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ที่ควบคุมโดยผู้โจมตี สามารถใช้เพื่อบันทึกชื่อไฟล์อื่นและเนื้อหาอื่น ๆ ใน FS ของผู้ใช้เมื่อคัดลอกโดยใช้ scp ในการกำหนดค่าที่นำไปสู่ความล้มเหลวเมื่อเรียก utimes (ตัวอย่างเช่น เมื่อ utimes ถูกห้ามโดย นโยบาย SELinux หรือตัวกรองการโทรของระบบ) โอกาสที่จะเกิดการโจมตีจริงคาดว่าจะมีน้อยมาก เนื่องจากในการกำหนดค่าทั่วไป การเรียกใช้ utime จะไม่ล้มเหลว นอกจากนี้การโจมตีจะไม่ถูกมองข้าม - เมื่อเรียก scp ข้อผิดพลาดในการถ่ายโอนข้อมูลจะปรากฏขึ้น

การเปลี่ยนแปลงทั่วไป:

  • ใน sftp การประมวลผลอาร์กิวเมนต์ "-1" ถูกหยุด คล้ายกับ ssh และ scp ซึ่งก่อนหน้านี้ได้รับการยอมรับแต่ถูกเพิกเฉย
  • ใน sshd เมื่อใช้ IgnoreRhosts ขณะนี้มีสามตัวเลือก: "ใช่" - ละเว้น rhosts/shosts, "ไม่" - เคารพ rhosts/shosts และ "shosts-only" - อนุญาต ".shosts" แต่ไม่อนุญาต ".rhosts";
  • ขณะนี้ Ssh รองรับการทดแทน %TOKEN ในการตั้งค่า LocalFoward และ RemoteForward ที่ใช้ในการเปลี่ยนเส้นทางซ็อกเก็ต Unix
  • อนุญาตให้โหลดคีย์สาธารณะจากไฟล์ที่ไม่ได้เข้ารหัสด้วยคีย์ส่วนตัว หากไม่มีไฟล์แยกต่างหากที่มีคีย์สาธารณะ
  • หาก libcrypto พร้อมใช้งานในระบบ ตอนนี้ ssh และ sshd จะใช้การนำอัลกอริธึม chacha20 จากไลบรารีนี้มาใช้ แทนการใช้งานแบบพกพาในตัว ซึ่งล้าหลังในด้านประสิทธิภาพ
  • ใช้ความสามารถในการถ่ายโอนข้อมูลเนื้อหาของรายการไบนารีของใบรับรองที่ถูกเพิกถอนเมื่อดำเนินการคำสั่ง “ssh-keygen -lQf /path”;
  • รุ่นพกพาใช้คำจำกัดความของระบบที่สัญญาณที่มีตัวเลือก SA_RESTART ขัดจังหวะการทำงานของตัวเลือก
  • ปัญหาบิลด์บนระบบ HP/UX และ AIX ได้รับการแก้ไขแล้ว
  • แก้ไขปัญหาเกี่ยวกับการสร้างแซนด์บ็อกซ์ seccomp บนการกำหนดค่า Linux บางอย่าง
  • ปรับปรุงการตรวจจับไลบรารี libfido2 และแก้ไขปัญหาการสร้างด้วยตัวเลือก "--with-security-key-builtin"

นักพัฒนา OpenSSH ยังเตือนอีกครั้งเกี่ยวกับการสลายตัวของอัลกอริทึมที่ใช้แฮช SHA-1 เนื่องจาก การส่งเสริม ประสิทธิผลของการโจมตีการชนกันด้วยคำนำหน้าที่กำหนด (ค่าใช้จ่ายในการเลือกการชนกันประมาณ 45 ดอลลาร์) ในหนึ่งในการเปิดตัวที่กำลังจะมาถึง พวกเขาวางแผนที่จะปิดใช้งานความสามารถในการใช้อัลกอริธึมลายเซ็นดิจิทัลของคีย์สาธารณะ "ssh-rsa" ตามค่าเริ่มต้น ซึ่งถูกกล่าวถึงใน RFC ดั้งเดิมสำหรับโปรโตคอล SSH และยังคงแพร่หลายในทางปฏิบัติ (เพื่อทดสอบการใช้งาน ของ ssh-rsa ในระบบของคุณ คุณสามารถลองเชื่อมต่อผ่าน ssh ด้วยตัวเลือก “-oHostKeyAlgorithms=-ssh-rsa”)

เพื่อให้การเปลี่ยนไปใช้อัลกอริธึมใหม่ใน OpenSSH ราบรื่นขึ้น ในรีลีสในอนาคต การตั้งค่า UpdateHostKeys จะถูกเปิดใช้งานตามค่าเริ่มต้น ซึ่งจะย้ายไคลเอนต์ไปยังอัลกอริธึมที่เชื่อถือได้มากขึ้นโดยอัตโนมัติ อัลกอริธึมที่แนะนำสำหรับการย้ายข้อมูล ได้แก่ rsa-sha2-256/512 ที่ใช้ RFC8332 RSA SHA-2 (รองรับตั้งแต่ OpenSSH 7.2 และใช้เป็นค่าเริ่มต้น), ssh-ed25519 (รองรับตั้งแต่ OpenSSH 6.5) และ ecdsa-sha2-nistp256/384/521 บน RFC5656 ECDSA (รองรับตั้งแต่ OpenSSH 5.7)

ในเวอร์ชันล่าสุด "ssh-rsa" และ "diffie-hellman-group14-sha1" ได้ถูกลบออกจากรายการ CASignatureAlgorithms ที่กำหนดอัลกอริทึมที่อนุญาตให้ลงนามใบรับรองใหม่แบบดิจิทัล เนื่องจากการใช้ SHA-1 ในใบรับรองก่อให้เกิดความเสี่ยงเพิ่มเติม เนื่องจากผู้โจมตีมีเวลาไม่จำกัดในการค้นหาการชนกันของใบรับรองที่มีอยู่ ในขณะที่เวลาของการโจมตีคีย์โฮสต์ถูกจำกัดด้วยการหมดเวลาการเชื่อมต่อ (LoginGraceTime)

ที่มา: opennet.ru

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