การเปิดตัว เวอร์ชันใหม่ของการใช้งานแบบเปิดของไคลเอ็นต์และเซิร์ฟเวอร์เพื่อทำงานร่วมกับโปรโตคอล SSH 2.0 และ SFTP "OpenSSH 9.2"
รุ่นใหม่ แก้ไขช่องโหว่ซึ่งนำไปสู่การเพิ่มพื้นที่หน่วยความจำสองเท่าในขั้นตอนการตรวจสอบสิทธิ์ล่วงหน้า ช่องโหว่ มีผลกับการเปิดตัว OpenSSH 9.1 เท่านั้นในเวอร์ชันก่อนหน้า ปัญหาจะไม่ปรากฏขึ้น
หากต้องการสร้างเงื่อนไขสำหรับการแสดงช่องโหว่ ก็เพียงพอแล้วที่จะเปลี่ยนแบนเนอร์ของไคลเอนต์ SSH เป็น "SSH-2.0-FuTTYSH_9.1p1" เพื่อให้ได้การกำหนดค่าแฟล็ก "SSH_BUG_CURVE25519PAD" และ "SSH_OLD_DHGEX" ขึ้นอยู่กับเวอร์ชัน ของไคลเอ็นต์ SSH
หลังจากตั้งค่าสถานะเหล่านี้ หน่วยความจำสำหรับบัฟเฟอร์ "options.kex_algorithms" จะถูกทำให้ว่างสองครั้ง: โดยการดำเนินการฟังก์ชัน do_ssh2_kex() ซึ่งเรียก compat_kex_proposal() และโดยการเรียกใช้ฟังก์ชัน do_authentication2() ซึ่งเรียก input_userauth_request( ), mm_getpwnamallow( ), copy_set_server_options() ตามเชน, ensemble_algorithms() และ kex_assemble_names()
ถือว่าไม่น่าจะสร้างช่องโหว่ที่ใช้งานได้สำหรับช่องโหว่นี้ เนื่องจากกระบวนการหาประโยชน์นั้นซับซ้อนเกินไป: ไลบรารีการจัดสรรหน่วยความจำสมัยใหม่ให้การป้องกันหน่วยความจำว่างสองเท่า และกระบวนการตรวจสอบสิทธิ์ล่วงหน้าซึ่งมีข้อบกพร่องจะทำงานโดยมีสิทธิ์ลดลงในแซนด์บ็อกซ์
นอกจากช่องโหว่ดังกล่าวแล้วเวอร์ชันใหม่ ยังแก้ไขปัญหาด้านความปลอดภัยอีกสองประเด็น:
- เกิดข้อผิดพลาดขณะประมวลผลการตั้งค่า "PermitRemoteOpen" ซึ่งทำให้อาร์กิวเมนต์แรกถูกละเว้นหากแตกต่างจากค่า "ใดๆ" และ "ไม่มี" ปัญหานี้ปรากฏในเวอร์ชันหลัง OpenSSH 8.7 และทำให้การตรวจสอบถูกข้ามเมื่อมีการระบุเพียงสิทธิ์เดียวเท่านั้น
- ผู้โจมตีที่ควบคุมเซิร์ฟเวอร์ DNS ที่ใช้ในการแก้ไขชื่อสามารถบรรลุการแทนที่ด้วยอักขระพิเศษ (เช่น "*") ในไฟล์โฮสต์ที่รู้จัก หากเปิดใช้งานตัวเลือก CanonicalizeHostname และ CanonicalizePermittedCNAME ในการกำหนดค่า และตัวแก้ไขไม่ได้ตรวจสอบการแก้ไข DNS การตอบสนองของเซิร์ฟเวอร์ การโจมตีนี้ถือว่าไม่น่าจะสำเร็จ เนื่องจากชื่อที่ส่งคืนต้องตรงกับเงื่อนไขที่ระบุผ่าน CanonicalizePermittedCNAME
มีอะไรใหม่ใน OpenSSH 9.2
จากการเปลี่ยนแปลงที่เกิดขึ้นใน OpenSSH 9.2 นั้นชัดเจนว่า เพิ่มการกำหนดค่าบน เปิดใช้EscapeCommandline a ssh_config เพื่อควบคุมว่าการประมวลผลฝั่งไคลเอ็นต์ ของลำดับการหลบหนี "~C" เมื่อใดก็ตามที่เปิดใช้งานบรรทัดคำสั่ง ตามค่าเริ่มต้น การประมวลผล "~C" จะถูกปิดใช้งาน เพื่ออนุญาตการทำแซนด์บ็อกซ์ที่เข้มงวดยิ่งขึ้น ซึ่งอาจทำลายระบบที่ใช้ "~C" สำหรับการส่งต่อพอร์ตขณะรันไทม์
มันเคยเป็น เพิ่มคำสั่ง ChannelTimeout เป็น sshd_config สำหรับ sshd เพื่อตั้งค่าการหมดเวลาใช้งานช่อง (ช่องที่ตรวจไม่พบการรับส่งข้อมูลตามเวลาที่กำหนดในนโยบายจะปิดโดยอัตโนมัติ) การรับส่งข้อมูลเซสชัน X11 เอเจนต์ และการเปลี่ยนเส้นทางอาจมีระยะหมดเวลาที่แตกต่างกัน
ของ การเปลี่ยนแปลงอื่นๆ:
- เพิ่มคำสั่ง UnusedConnectionTimeout ไปยัง sshd_config สำหรับ sshd ซึ่งช่วยให้คุณตั้งค่าการหมดเวลาสำหรับการยกเลิกการเชื่อมต่อจากไคลเอนต์ที่ไม่มีแชนเนลที่ใช้งานอยู่เป็นระยะเวลาหนึ่ง
- เพิ่มตัวเลือก "-V" ใน sshd เพื่อแสดงเวอร์ชันที่คล้ายกับตัวเลือกไคลเอ็นต์ ssh
- เพิ่มสตริง "host" ลงในเอาต์พุตของ "ssh -G" เพื่อสะท้อนค่าของอาร์กิวเมนต์ชื่อโฮสต์
- เพิ่มตัวเลือก "-X" ใน scp และ sftp เพื่อควบคุมพารามิเตอร์ SFTP เช่น ขนาดบัฟเฟอร์การคัดลอก และจำนวนคำขอที่รอดำเนินการ
- ssh-keyscan ช่วยให้คุณสแกนช่วงทั้งหมดของที่อยู่ CIDR เช่น “ssh-keyscan 192.168.0.0/24”
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม เกี่ยวกับเวอร์ชันใหม่นี้คุณสามารถตรวจสอบรายละเอียดได้ โดยไปที่ลิงค์ต่อไปนี้
จะติดตั้ง OpenSSH 9.2 บน Linux ได้อย่างไร?
สำหรับผู้ที่สนใจสามารถติดตั้ง OpenSSH เวอร์ชันใหม่นี้บนระบบของตนได้ ตอนนี้พวกเขาทำได้ ดาวน์โหลดซอร์สโค้ดของสิ่งนี้และ ดำเนินการรวบรวมบนคอมพิวเตอร์ของพวกเขา
เนื่องจากเวอร์ชันใหม่ยังไม่รวมอยู่ในที่เก็บของลีนุกซ์หลัก ในการรับซอร์สโค้ดคุณสามารถทำได้จากไฟล์ ลิงค์ต่อไป.
ดาวน์โหลดเสร็จแล้ว ตอนนี้เราจะคลายซิปแพ็คเกจด้วยคำสั่งต่อไปนี้:
tar -xvf openssh-9.2.tar.gz
เราเข้าสู่ไดเร็กทอรีที่สร้างขึ้น:
cd openssh-9.2
Y เราสามารถรวบรวมด้วย คำสั่งต่อไปนี้:
./configure --prefix=/opt --sysconfdir=/etc/ssh make make install
“รีบ?”…
เดี๋ยวผมเอาออกครับ ฮิฮิ
ขอขอบคุณที่เฝ้าดู