ช่องโหว่ที่สำคัญใน sudo ทำให้คุณได้รับสิทธิ์รูท

ลอส นักวิจัยด้านความปลอดภัยของ Qualys ได้ระบุช่องโหว่ที่สำคัญ (CVE-2021-3156) ในยูทิลิตี้ sudoซึ่งออกแบบมาเพื่อจัดระเบียบการดำเนินการคำสั่งในนามของผู้ใช้รายอื่น

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

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

หากต้องการค้นหาช่องโหว่ในระบบของคุณเพียงแค่เรียกใช้คำสั่ง "sudoedit -s /" และช่องโหว่จะปรากฏขึ้นหากข้อความแสดงข้อผิดพลาดที่ขึ้นต้นด้วย "sudoedit:" ปรากฏขึ้น

เกี่ยวกับช่องโหว่

ช่องโหว่ดังกล่าวปรากฏขึ้นตั้งแต่เดือนกรกฎาคม 2011 และเกิดจากบัฟเฟอร์ล้น ในการจัดการอักขระหนีบรรทัดในพารามิเตอร์ที่ตั้งใจจะดำเนินการคำสั่งในโหมดเชลล์ โหมดเชลล์ถูกเปิดใช้งานโดยการระบุอาร์กิวเมนต์ "-i" หรือ "-s" และทำให้คำสั่งไม่ถูกเรียกใช้โดยตรง แต่ผ่านการเรียกเชลล์เพิ่มเติมด้วยแฟล็ก "-c" ("คำสั่ง sh -c »)

บรรทัดล่างคือเมื่อยูทิลิตี้ sudo ทำงานตามปกติมันจะหลีกเลี่ยงอักขระพิเศษโดยการระบุอ็อพชัน "-i" และ "-s" แต่เมื่อยูทิลิตี้ sudoedit เริ่มทำงานพารามิเตอร์จะไม่ถูก Escape เช่น parse_args () ฟังก์ชันจะตั้งค่าตัวแปรสภาพแวดล้อม MODE_EDIT แทน MODE_SHELL และไม่รีเซ็ตค่าของ "valid_flags"

ในทางกลับกัน, การส่งอักขระที่ไม่ใช้ Escape จะสร้างเงื่อนไขให้ข้อผิดพลาดอื่นปรากฏขึ้น ในคอนโทรลเลอร์ซึ่งจะลบอักขระ Escape ก่อนที่จะตรวจสอบกฎ sudoer

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

และมีการกล่าวถึงว่าเมื่อพยายามปรับเปลี่ยนค่าในบรรทัดคำสั่ง sudoedit ผู้โจมตีสามารถบรรลุการซ้อนทับของคิวที่เขียนซ้ำได้ในข้อมูลที่มีผลต่อการทำงานในลำดับถัดไป

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

นักวิจัยด้านความปลอดภัยของ Qualys จัดการเพื่อเตรียมการหาช่องโหว่สามครั้งซึ่งงานนี้ขึ้นอยู่กับการเขียนเนื้อหาของโครงสร้าง sudo_hook_entry, service_user และ def_timestampdir ใหม่:

  • โดยการยกเลิก sudo_hook_entry ไบนารีชื่อ "SYSTEMD_BYPASS_USERDB" สามารถรันเป็นรูทได้
  • การแทนที่ service_user จัดการเพื่อเรียกใช้รหัสโดยอำเภอใจเป็นรูท
  • ด้วยการแทนที่ def_timestampdir ทำให้สามารถล้างเนื้อหาของ sudo stack รวมถึงตัวแปรสภาพแวดล้อมลงในไฟล์ / etc / passwd และทำการแทนที่ผู้ใช้ด้วยสิทธิ์ root

นักวิจัย แสดงให้เห็นว่ามีการหาประโยชน์จากการทำงาน เพื่อรับสิทธิ์รูทแบบเต็ม บน Ubuntu 20.04, Debian 10 และ Fedora 33

ช่องโหว่ สามารถใช้ประโยชน์ได้บนระบบปฏิบัติการและการแจกแจงอื่น ๆ แต่การตรวจสอบของนักวิจัยถูก จำกัด ไว้ที่ Ubuntu, Debian และ Fedora รวมทั้งมีการระบุว่า sudo ทุกรุ่น 1.8.2 ถึง 1.8.31p2 และ 1.9.0 ถึง 1.9.5p1 ในการตั้งค่าเริ่มต้นจะได้รับผลกระทบ วิธีแก้ปัญหาที่แนะนำใน sudo 1.9.5p2

นักวิจัย ได้แจ้งให้นักพัฒนาซอฟต์แวร์ทราบล่วงหน้า ผู้จัดจำหน่ายที่ได้เผยแพร่การอัปเดตแพ็คเกจในลักษณะที่ประสานกัน: Debian, RHEL, Fedor, Ubuntu, SUSE / openSUSE, Arch Linux, Slackware, Gentoo และ FreeBSD

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม เกี่ยวกับช่องโหว่คุณสามารถตรวจสอบรายละเอียดได้ ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา