ช่องโหว่ในโมดูล ksmbd ของเคอร์เนล Linux ที่อนุญาตให้คุณรันโค้ดจากระยะไกล

มีการระบุช่องโหว่ร้ายแรงในโมดูล ksmbd ซึ่งรวมถึงการใช้งานไฟล์เซิร์ฟเวอร์ที่ใช้โปรโตคอล SMB ที่สร้างไว้ในเคอร์เนล Linux ซึ่งช่วยให้สามารถเรียกใช้โค้ดจากระยะไกลด้วยสิทธิ์เคอร์เนลได้ การโจมตีสามารถทำได้โดยไม่ต้องมีการตรวจสอบสิทธิ์ เพียงเปิดใช้งานโมดูล ksmbd บนระบบก็เพียงพอแล้ว ปัญหาดังกล่าวเกิดขึ้นตั้งแต่เคอร์เนล 5.15 ซึ่งเปิดตัวในเดือนพฤศจิกายน 2021 และได้รับการแก้ไขอย่างเงียบๆ ในการอัปเดต 5.15.61, 5.18.18 และ 5.19.2 ซึ่งสร้างขึ้นในเดือนสิงหาคม 2022 เนื่องจากปัญหายังไม่ได้รับการกำหนดตัวระบุ CVE จึงยังไม่มีข้อมูลที่แน่ชัดเกี่ยวกับการแก้ไขปัญหาในการแจกแจง

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

นอกจากช่องโหว่ที่กล่าวถึงใน ksmbd แล้ว ยังมีการแก้ไขปัญหาอันตรายน้อยกว่า 4 ปัญหาอีกด้วย:

  • ZDI-22-1688 - การเรียกใช้โค้ดจากระยะไกลด้วยสิทธิ์เคอร์เนลเนื่องจากขาดการตรวจสอบขนาดที่แท้จริงของข้อมูลภายนอกในโค้ดประมวลผลแอตทริบิวต์ไฟล์ก่อนที่จะคัดลอกไปยังบัฟเฟอร์ที่จัดสรร อันตรายของช่องโหว่จะลดลงได้ด้วยความจริงที่ว่า การโจมตีสามารถทำได้โดยผู้ใช้ที่ได้รับการรับรองความถูกต้องเท่านั้น
  • ZDI-22-1691 - ข้อมูลระยะไกลรั่วไหลจากหน่วยความจำเคอร์เนลเนื่องจากการตรวจสอบพารามิเตอร์อินพุตไม่ถูกต้องในตัวจัดการคำสั่ง SMB2_WRITE (การโจมตีสามารถทำได้โดยผู้ใช้ที่ได้รับการรับรองความถูกต้องเท่านั้น)
  • ZDI-22-1687 - การปฏิเสธการให้บริการระยะไกลเนื่องจากหน่วยความจำที่มีอยู่ในระบบหมดลงเนื่องจากการปล่อยทรัพยากรไม่ถูกต้องในตัวจัดการคำสั่ง SMB2_NEGOTIATE (การโจมตีสามารถทำได้โดยไม่ต้องตรวจสอบสิทธิ์)
  • ZDI-22-1689 - การเรียกระยะไกลเพื่อทำให้เคอร์เนลเสียหายเนื่องจากขาดการตรวจสอบพารามิเตอร์ของคำสั่ง SMB2_TREE_CONNECT อย่างเหมาะสม ซึ่งนำไปสู่การอ่านจากพื้นที่นอกบัฟเฟอร์ (การโจมตีสามารถทำได้โดยผู้ใช้ที่ได้รับการรับรองความถูกต้องเท่านั้น ).

การสนับสนุนสำหรับการรันเซิร์ฟเวอร์ SMB โดยใช้โมดูล ksmbd มีอยู่ในแพ็คเกจ Samba ตั้งแต่รีลีส 4.16.0 แตกต่างจากเซิร์ฟเวอร์ SMB ในพื้นที่ผู้ใช้ ksmbd มีประสิทธิภาพมากกว่าในแง่ของประสิทธิภาพ การใช้หน่วยความจำ และการผสานรวมกับคุณสมบัติเคอร์เนลขั้นสูง Ksmbd ได้รับการขนานนามว่าเป็นส่วนขยายประสิทธิภาพสูงและพร้อมใช้งานแบบฝังสำหรับ Samba โดยผสานรวมกับเครื่องมือและไลบรารีของ Samba ตามต้องการ รหัส ksmbd เขียนโดย Namjae Jeon จาก Samsung และ Hyunchul Lee จาก LG และดูแลรักษาในเคอร์เนลโดย Steve French จาก Microsoft ผู้ดูแลระบบย่อย CIFS/SMB2/SMB3 ในเคอร์เนล Linux และสมาชิกเก่าแก่ของทีมพัฒนา Samba ซึ่งมีส่วนสนับสนุนอย่างมาก สู่การใช้งานการสนับสนุนโปรโตคอล SMB/CIFS ใน Samba และ Linux

ที่มา: opennet.ru

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