OpenSSH 10.3 มาพร้อมกับการเปลี่ยนแปลงด้านความปลอดภัยและความเข้ากันได้ ซึ่งผู้ดูแลระบบควรทราบ

  • OpenSSH 10.3 มีการแก้ไขช่องโหว่ด้านความปลอดภัย 5 จุด ซึ่งส่งผลต่อฝั่งไคลเอ็นต์ ฝั่งเซิร์ฟเวอร์ และยูทิลิตี้ต่างๆ เช่น scp และ ssh-agent
  • ได้ลบการสนับสนุนสำหรับการใช้งานที่ไม่ใช้การเปลี่ยนคีย์ออกแล้ว ซึ่งอาจทำให้การเชื่อมต่อกับซอฟต์แวร์ SSH รุ่นเก่าหรือที่ไม่ได้มาตรฐานล้มเหลว
  • กฎเกณฑ์สำหรับใบรับรองและอัลกอริทึมกำลังเปลี่ยนแปลง เพื่อแก้ไขข้อผิดพลาดในการจับคู่หลักการ การใช้สัญลักษณ์ตัวแทน และการยอมรับคีย์ ECDSA
  • การปรับปรุงการทำงานในด้านการมัลติเพล็กซ์ การลงโทษแหล่งที่มา การจัดการข้อมูลประจำตัว GSSAPI และการสนับสนุนที่ขยายเพิ่มเติมสำหรับคีย์เอเจนต์และส่วนขยาย

OpenSSH 10.3

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

สำหรับสภาพแวดล้อมในองค์กร ซึ่ง OpenSSH เป็นส่วนประกอบหลักบนเซิร์ฟเวอร์ Linux ระบบ BSD และอุปกรณ์เครือข่าย การอัปเดตนี้มีความสำคัญเป็นอย่างยิ่ง เวอร์ชัน 10.3 แก้ไขช่องโหว่ ปรับปรุงการตรวจสอบใบรับรอง และเปลี่ยนแปลงวิธีการจัดการตัวเลือกการกำหนดค่าบางอย่าง ดังนั้นจึงควรทดสอบในสภาพแวดล้อมก่อนการใช้งานจริงในวงกว้าง

ความเข้ากันได้ไม่สมบูรณ์กับระบบที่ไม่ใช้การเปลี่ยนคีย์

หนึ่งในความเปลี่ยนแปลงที่สำคัญที่สุดใน OpenSSH 10.3 คือการลบโค้ดสำหรับ "ความเข้ากันได้ของบั๊ก" กับการใช้งานที่ไม่รองรับการเปลี่ยนคีย์จนถึงปัจจุบัน โครงการนี้ได้ทำการปรับแต่งภายในหลายอย่างเพื่อให้สามารถสื่อสารกับไคลเอนต์หรือเซิร์ฟเวอร์ SSH รุ่นเก่าหรือที่ไม่เป็นไปตามมาตรฐาน ซึ่งขาดความสามารถในการเจรจาต่อรองคีย์ใหม่ระหว่างเซสชันได้

ตั้งแต่เวอร์ชันนี้เป็นต้นไป หาก ไคลเอนต์หรือเซิร์ฟเวอร์ SSH ไม่รองรับการเปลี่ยนคีย์การเชื่อมต่อกับ OpenSSH 10.3 จะล้มเหลวเมื่อพยายามสร้างการเชื่อมต่อหรือระหว่างเซสชัน ซึ่งอาจส่งผลกระทบต่อโครงสร้างพื้นฐานที่ยังคงใช้ซอฟต์แวร์รุ่นเก่า อุปกรณ์ฝังตัว หรือโซลูชันที่เป็นกรรมสิทธิ์ซึ่งใช้งานโปรโตคอล SSH ได้ไม่สมบูรณ์

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

แก้ไขข้อผิดพลาดการแทรกคำสั่งผ่านชื่อผู้ใช้

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

โดยเฉพาะอย่างยิ่ง ช่องโหว่นี้ส่งผลกระทบต่อการตั้งค่าที่รวมถึงโทเค็น %u ภายในบล็อกการดำเนินการ Match ในไฟล์ ssh_config ในสถานการณ์นั้น ผู้โจมตีที่มีความสามารถในการควบคุมชื่อผู้ใช้ที่ส่งไปยังคำสั่ง ssh สามารถเรียกใช้คำสั่งใดๆ ก็ได้ในเชลล์ โดยใช้ประโยชน์จากการขยายอักขระพิเศษ

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

การเปลี่ยนแปลงในการจัดการใบรับรองและเอกสารหลัก

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

ข้อผิดพลาดในการจับคู่ตัวอักษรหลักกับเครื่องหมายจุลภาค

ข้อผิดพลาดได้รับการแก้ไขแล้วใน sshd เมื่อเปรียบเทียบตัวเลือกหลัก="" ปัญหาเกิดขึ้นจากรายการใน authorized_keys ที่มีรายชื่อหลักการที่รวมอยู่ในใบรับรอง ความล้มเหลวเกิดขึ้นเมื่อชื่อหลักการชื่อใดชื่อหนึ่งในใบรับรองมีเครื่องหมายจุลภาค ซึ่งอาจนำไปสู่การจับคู่ที่ไม่ถูกต้องในสถานการณ์เฉพาะบางอย่าง

เพื่อให้สามารถใช้ประโยชน์จากปัญหาได้ ต้องมีเงื่อนไขหลายประการ ได้แก่ การป้อนข้อมูลของ authorized_keys ประกอบด้วยคีย์หลักมากกว่าหนึ่งคีย์ข้อผิดพลาดดังกล่าวทำให้หน่วยงานออกใบรับรองออกใบรับรองที่มีชื่อเหล่านี้หลายชื่อคั่นด้วยเครื่องหมายจุลภาค และใช้คีย์ CA ที่ผู้ใช้เชื่อถือ กระบวนการตรวจสอบความถูกต้องของใบรับรองหลักที่อิงตาม TrustedUserCAKeys และ AuthorizedPrincipalsFile ไม่ได้รับผลกระทบ

ใบรับรองที่มีรายชื่อหลักว่างเปล่า

การเปลี่ยนแปลงพฤติกรรมอีกอย่างหนึ่งช่วยแก้ไข การออกแบบทางประวัติศาสตร์ที่มีปัญหาในใบรับรองจนถึงปัจจุบัน เมื่อใช้ใบรับรองที่มีส่วน principals ว่างเปล่าร่วมกับ authorized_keys principals="" ใบรับรองนั้นจะถูกตีความเสมือนเป็น wildcard ซึ่งอนุญาตให้ตรวจสอบสิทธิ์ในฐานะผู้ใช้ใดๆ ก็ตามที่เชื่อถือหน่วยงานออกใบรับรองเดียวกัน

สิ่งนี้ก่อให้เกิดความเสี่ยงที่ไม่ชัดเจน: หน่วยงานออกใบรับรอง (CA) ที่ออกใบรับรองโดยไม่ได้ตั้งใจ ใบรับรองที่มีรายการหลักว่างเปล่า ก่อนหน้านี้มันให้สิทธิ์การเข้าถึงที่กว้างขวางเกินไปโดยไม่ได้ตั้งใจ ใน OpenSSH 10.3 สถานการณ์นี้เปลี่ยนไปแล้ว โดยใบรับรองที่ไม่มีหลักการจะถือว่าไม่ตรงกับหลักการใดๆ ซึ่งจะป้องกันพฤติกรรม "ไวด์การ์ด" ที่เป็นอันตรายนี้ได้

นอกจากนี้ โครงการนี้ยังมี รวมวิธีการจัดการสัญลักษณ์ตัวแทน (wildcard) ในใบรับรองหลักให้เป็นมาตรฐานเดียวกันการใช้สัญลักษณ์ตัวแทน (wildcards) ได้รับอนุญาตในใบรับรองโฮสต์ แต่ไม่ได้รับอนุญาตในใบรับรองผู้ใช้ ทั้งนี้มีจุดมุ่งหมายเพื่อให้พฤติกรรมสามารถคาดเดาได้และตรวจสอบได้มากขึ้น ซึ่งเป็นสิ่งที่มีคุณค่าอย่างยิ่งในการตรวจสอบความปลอดภัยขององค์กรในยุโรปที่อยู่ภายใต้กรอบการทำงานต่างๆ เช่น NIS2 หรือ ENS

การประยุกต์ใช้อัลกอริทึม ECDSA อย่างเคร่งครัด

ในส่วนของการเข้ารหัส OpenSSH 10.3 ได้แก้ไขปัญหาใน การประยุกต์ใช้คำสั่ง PubkeyAcceptedAlgorithms และ HostbasedAcceptedAlgorithms สำหรับคีย์ ECDSA ก่อนหน้านี้ หากชื่อของอัลกอริทึม ECDSA ปรากฏอยู่ในรายการใดรายการหนึ่ง เซิร์ฟเวอร์จะยอมรับอัลกอริทึม ECDSA อื่นๆ โดยปริยาย แม้ว่าจะไม่ได้ระบุไว้อย่างชัดเจนก็ตาม

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

แก้ไขข้อผิดพลาดใน scp เมื่อดาวน์โหลดในฐานะ root

เครื่องมือ SCP ยังได้รับการปรับปรุงด้านความปลอดภัยอีกด้วย เมื่อใช้งานในโหมดดั้งเดิม (ความเข้ากันได้กับ rcp) และเรียกใช้ในฐานะผู้ใช้ root ในเวอร์ชันก่อนหน้า เมื่อดาวน์โหลดไฟล์โดยไม่ใช้ตัวเลือก -p โปรแกรมจะไม่ลบค่า setuid และ setgid ออกจากไฟล์ที่ได้รับ

พฤติกรรมนี้สืบทอดมาจาก CPR ดั้งเดิมของเบิร์กลีย์สิ่งนี้อาจเป็นอันตรายในขั้นตอนการคัดลอกบางอย่าง เนื่องจากไฟล์ที่ถ่ายโอนด้วยสิทธิ์พิเศษอาจถูกเรียกใช้งานด้วยสิทธิ์ระดับสูงบนระบบปลายทาง OpenSSH 10.3 แก้ไขพฤติกรรมนี้เพื่อเสริมความปลอดภัยในการบริหารจัดการระยะไกล ซึ่งเป็นวิธีปฏิบัติทั่วไปบนเซิร์ฟเวอร์ใช้งานจริงในศูนย์ข้อมูล

การตรวจสอบความถูกต้องของ ProxyJump ที่ได้รับการปรับปรุง และการควบคุมการมัลติเพล็กซ์

ในส่วนของตัวเลือกการเชื่อมต่อขั้นสูง ลูกค้าได้นำเสนอการปรับปรุงในด้านต่างๆ ProxyJump (พารามิเตอร์ -J หรือ -oProxyJump)ขณะนี้ ค่าผู้ใช้และโฮสต์ที่ส่งผ่านทางบรรทัดคำสั่งจะได้รับการตรวจสอบอย่างเข้มงวดมากขึ้น เพื่อป้องกันช่องโหว่การโจมตีแบบ Command Injection ในการกำหนดค่าที่ฟิลด์เหล่านี้อาจได้รับอิทธิพลจากข้อมูลที่ไม่น่าเชื่อถือ

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

ในด้านการเชื่อมต่อแบบมัลติเพล็กซ์ ปัญหาหนึ่งได้รับการแก้ไขแล้วด้วย การยืนยันเซสชันเมื่อใช้ ControlMaster ask/autoask ในโหมดพร็อกซีโดยใช้ "ssh -O proxy" ก่อนหน้านี้ คำขอการยืนยันไม่ได้รับการประเมินอย่างถูกต้องในเซสชันแบบมัลติเพล็กซ์ประเภทนี้

นอกจากนี้ ยังมีการเพิ่มคำสั่งใหม่เพื่อให้ได้มาซึ่งข้อมูล ข้อมูลโดยละเอียดเกี่ยวกับเซสชันที่กำลังดำเนินการอยู่คำสั่ง "ssh -O conninfo" และลำดับการหลีกเลี่ยง "~I" จะแสดงข้อมูลการเชื่อมต่อสำหรับเซสชันที่กำลังดำเนินอยู่ ในขณะที่ "ssh -O channels" จะรายงานว่ากระบวนการมัลติเพล็กเซอร์กำลังเปิดช่องสัญญาณใดอยู่ คุณสมบัติเหล่านี้สามารถช่วยอำนวยความสะดวกในการแก้ไขปัญหาในการใช้งานที่ซับซ้อน ซึ่งพบได้บ่อยในองค์กรขนาดใหญ่และผู้ให้บริการในสหภาพยุโรป

มีอะไรใหม่บ้างใน ssh-agent, ssh-add และการจัดการคีย์

OpenSSH 10.3 ก้าวไปอีกขั้นหนึ่งในเรื่องนี้ สอดคล้องกับร่างเอกสาร IETF draft-ietf-sshm-ssh-agent ในส่วนของเอเจนต์ SSH นั้น ได้มีการเพิ่มความเข้ากันได้กับโค้ดพอยต์ใหม่ที่ IANA กำหนดสำหรับการส่งต่อเอเจนต์ เพื่อให้เมื่อเซิร์ฟเวอร์ประกาศการสนับสนุนชื่อเหล่านั้นโดยใช้ข้อความ EXT_INFO นั้น OpenSSH จะให้ความสำคัญกับการใช้ตัวระบุมาตรฐานเป็นอันดับแรก

อย่างไรก็ตาม การสนับสนุนสำหรับ ส่วนขยายทางประวัติศาสตร์ที่มีคำต่อท้าย @openssh.comเพื่อให้มั่นใจถึงความสามารถในการทำงานร่วมกับโครงสร้างพื้นฐานที่มีอยู่เดิม ส่วนประกอบ ssh-agent ยังรวมถึงการสนับสนุนส่วนขยาย "query" ที่กำหนดไว้ในร่างเดียวกัน ซึ่งช่วยให้สามารถสอบถามความสามารถของเอเจนต์ได้อย่างเป็นระบบมากขึ้น

ในส่วนของหน่วยงานสาธารณูปโภคนั้น คำสั่ง ssh-add จะเพิ่มตัวเลือก -Q เข้าไป เพื่อตรวจสอบส่วนขยายโปรโตคอลที่เอเจนต์รองรับ ฟังก์ชันนี้มีประโยชน์อย่างยิ่งสำหรับทีมรักษาความปลอดภัยและฝ่ายปฏิบัติการที่ต้องการตรวจสอบว่ามีฟีเจอร์ใดบ้างในเอเจนต์ที่ติดตั้งใช้งานในระบบต่างๆ

ในส่วนของกุญแจ ssh-keygen ตอนนี้มีฟังก์ชันสำหรับการเขียนคีย์ ED25519 ในรูปแบบ PKCS8 แล้วสิ่งนี้ช่วยให้สามารถบูรณาการเข้ากับเครื่องมือและไลบรารีการเข้ารหัสลับอื่นๆ ที่ใช้ในภาคธุรกิจและการบริหารราชการได้ง่ายขึ้น

บทลงโทษต้นกำเนิดและการปรับปรุงการวินิจฉัยใน SSHD

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

โดยปกติแล้ว บทลงโทษใหม่นี้ประกอบด้วย รอห้าวินาทีนี่สอดคล้องกับบทลงโทษที่มีอยู่สำหรับการตรวจสอบสิทธิ์ล้มเหลว แต่ผู้ดูแลระบบสามารถกำหนดระยะเวลาที่ยาวขึ้นได้หากตรวจพบการโจมตีแบบเดาสุ่มหรือการกวาดล้างผู้ใช้จำนวนมาก นอกจากนี้ ความละเอียดของเวลาในการลงโทษขณะนี้เป็นแบบทศนิยม ทำให้สามารถกำหนดบทลงโทษที่น้อยกว่าหนึ่งวินาทีในสถานการณ์เหตุการณ์ที่มีความถี่สูงได้

ในขณะเดียวกัน ความสามารถในการมัลติเพล็กซ์แบบใหม่ที่อธิบายไว้ข้างต้น ("ssh -O conninfo", "ssh -O channels" และตัวหลีก "~I") ก็ช่วยให้ใช้งานได้เช่นกัน มองเห็นการเชื่อมต่อที่ใช้งานอยู่ได้ชัดเจนยิ่งขึ้นสิ่งนี้มีประโยชน์อย่างมากในการวินิจฉัยปัญหาความล่าช้า การบล็อก หรือการใช้งานอุโมงค์และช่องทาง SSH ที่ผิดปกติ

มีการเปลี่ยนแปลงเพิ่มเติมด้านความปลอดภัยและความเข้ากันได้

OpenSSH 10.3 เพิ่มฟีเจอร์ใหม่เข้ามา sshd ตัวเลือกเซิร์ฟเวอร์ GSSAPIDelegateCredentialsการตั้งค่านี้ควบคุมว่าเซิร์ฟเวอร์จะยอมรับข้อมูลประจำตัวที่ได้รับมอบหมายจากไคลเอ็นต์หรือไม่ ตัวเลือกนี้เลียนแบบนโยบายฝั่งไคลเอ็นต์ที่มีอยู่ และช่วยให้สามารถปรับพฤติกรรมให้เข้ากับนโยบายภายในของแต่ละองค์กรเกี่ยวกับ Kerberos และการมอบหมายข้อมูลประจำตัวที่คล้ายคลึงกันได้

ขอบเขตของ คำสั่ง RevokedHostKeys ใน ssh_config และ RevokedKeys ใน sshd_configซึ่งขณะนี้สามารถชี้ไปยังไฟล์ได้หลายไฟล์ ทำให้การจัดการรายการคีย์ที่ถูกเพิกถอนซึ่งแยกตามโครงการ แผนก หรือระดับความน่าเชื่อถือทำได้ง่ายขึ้น ซึ่งมีประโยชน์ในโครงสร้างพื้นฐานขนาดใหญ่ที่มีหลายทีมและผู้ขาย

เวอร์ชันนี้ยังแก้ไขปัญหาเชิงปฏิบัติหลายประการ ได้แก่ ข้อผิดพลาดใน... การป้อนรหัส PIN สำหรับคีย์ PKCS#11 ที่เพิ่มเข้ามาในเวอร์ชัน 10.1 และ 10.2ในเวอร์ชันพกพา มีการปรับปรุงการจัดการลายเซ็นใบรับรอง FIDO/WebAuthn แก้ไขปัญหาการหยุดทำงานของ sshd ที่เกี่ยวข้องกับคำสั่งย่อยที่หายไปภายในบล็อก Match และแก้ไขปัญหาความสับสนของชื่อผู้ใช้ในโมดูล PAM

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

NetworkManager 1.56
บทความที่เกี่ยวข้อง:
NetworkManager เวอร์ชัน 1.56 มาพร้อมกับการปรับปรุงที่สำคัญในด้านการจัดการเครือข่ายและความปลอดภัย