ช่องโหว่ในโปรโตคอลเครือข่าย CAN BCM อนุญาตให้มีการยกระดับสิทธิ์ในเคอร์เนล linux 

เมื่อวาน ข้อมูลเกี่ยวกับช่องโหว่ในเคอร์เนล Linux ถูกเปิดเผย และได้รับการจัดหมวดหมู่เป็น CVE-2021-3609 แล้ว จุดอ่อนนี้ อนุญาตให้ผู้ใช้ในพื้นที่ยกระดับสิทธิ์ของตนบนระบบ เนื่องจากสภาวะการแข่งขันในการใช้งานโปรโตคอล CAN BCM และแสดงในเวอร์ชัน 2.6.25 ถึง 5.13-rc6 ของเคอร์เนล Linux

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

ปัญหาเกิดขึ้นเมื่อปิดซ็อกเก็ต และเรียกฟังก์ชันนี้ว่า bcm_release (), ซึ่งหน่วยความจำที่จัดสรรสำหรับโครงสร้างนั้นว่าง bcm_op และ bcm_sock ที่ยังคงใช้ใน handler bcm_rx_handler () ซึ่งยังคงทำงานอยู่ จึงมีสถานการณ์ที่นำไปสู่การเข้าถึงบล็อกหน่วยความจำที่ว่างอยู่แล้ว

นี่คือการประกาศจุดบกพร่องที่เพิ่งรายงาน (CVE-2021-3609) ในโปรโตคอลเครือข่าย CAN BCM ในเคอร์เนล Linux ตั้งแต่เวอร์ชัน 2.6.25 ถึง mainline 5.13-rc6
ช่องโหว่นี้เป็นสภาวะการแข่งขันใน net / can / bcm.c ที่อนุญาตให้ยกระดับสิทธิ์ไปที่รูท ปัญหาได้รับการรายงานครั้งแรกโดย syzbot และ Norbert Slusarek ได้รับการพิสูจน์แล้วว่าสามารถใช้ประโยชน์ได้

การโจมตีเดือดลงเพื่อเปิดซ็อกเก็ต CAN BCM สองซ็อกเก็ตและผูกเข้ากับอินเทอร์เฟซ vcan. ในตัวเชื่อมต่อแรก คุณเรียก ส่งข้อความ () ด้วยตัวบ่งชี้ RX_SETUP ในการกำหนดค่าคอนโทรลเลอร์สำหรับข้อความ CAN ขาเข้าและบนตัวเชื่อมต่อที่สอง คุณเรียก ส่งข้อความ () เพื่อส่งข้อความไปยังตัวเชื่อมต่อแรก

หลังจากที่ข้อความมาถึง การเรียก bcm_rx_handler () ถูกทริกเกอร์และผู้โจมตีใช้เวลาที่เหมาะสมและปิดซ็อกเก็ตแรก ซึ่งนำไปสู่การเปิดตัวของ bcm_release () และการเปิดตัวของโครงสร้าง bcm_op และ bcm_sockถึงแม้ว่างานของ bcm_rx_handler () มันยังไม่แล้วเสร็จ

โดยการจัดการเนื้อหาของ bcm_sock ผู้โจมตีสามารถแทนที่ตัวชี้ไปยังฟังก์ชัน sk-> sk_data_ready (sk) การดำเนินการเปลี่ยนเส้นทาง และใช้เทคนิคการเขียนโปรแกรมเชิงกลับ (ROP) แทนที่พารามิเตอร์ modprobe_path และทำให้โค้ดของเขาทำงานเป็นรูท .

เมื่อใช้เทคนิค ROP ผู้โจมตีจะไม่พยายามใส่รหัสของเขา ในความทรงจำของ, แต่มันทำงานบน ชิ้นส่วนของ มีคำสั่งเครื่องอยู่แล้ว ในไลบรารีที่โหลด ซึ่งลงท้ายด้วยคำสั่ง return return (ตามกฎแล้ว นี่คือจุดสิ้นสุดของฟังก์ชันไลบรารี)

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

ความพยายามในการเอารัดเอาเปรียบของฉันมุ่งเน้นไปที่เมล็ดที่มี version> = 5.4-rc1 จากการกระทำ bf74aa86e111 ฉันไม่ได้ตรวจสอบการใช้ประโยชน์จากเมล็ดที่เก่ากว่า 5.4-rc1 โดยใช้ tasklets อย่างไรก็ตาม การใช้ประโยชน์จากเมล็ดที่เก่ากว่านั้นก็เป็นไปได้เช่นกัน 

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

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

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

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


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

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

*

*

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