มีการระบุช่องโหว่ที่สามารถใช้ประโยชน์ได้ใน nf_tables, watch_queue และ IPsec ในเคอร์เนล Linux

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

  • ช่องโหว่ (CVE-2022-0995) ในระบบย่อยการติดตามเหตุการณ์ watch_queue อนุญาตให้เขียนข้อมูลไปยังบัฟเฟอร์นอกขอบเขตในหน่วยความจำเคอร์เนล การโจมตีสามารถดำเนินการโดยผู้ใช้ที่ไม่มีสิทธิ์และส่งผลให้โค้ดทำงานโดยมีสิทธิ์เคอร์เนล ช่องโหว่นี้มีอยู่ในฟังก์ชัน watch_queue_set_size() และมีความเกี่ยวข้องกับความพยายามในการล้างพอยน์เตอร์ทั้งหมดในรายการ แม้ว่าหน่วยความจำจะไม่ได้รับการจัดสรรก็ตาม ปัญหาเกิดขึ้นเมื่อสร้างเคอร์เนลด้วยตัวเลือก "CONFIG_WATCH_QUEUE=y" ซึ่งใช้ในลีนุกซ์รุ่นส่วนใหญ่

    ช่องโหว่ได้รับการแก้ไขแล้วในการเปลี่ยนแปลงเคอร์เนลที่เพิ่มเมื่อวันที่ 11 มีนาคม คุณสามารถติดตามการเผยแพร่การอัปเดตแพ็คเกจในการแจกแจงในหน้าเหล่านี้: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux ต้นแบบช่องโหว่นี้เผยแพร่ต่อสาธารณะแล้ว และอนุญาตให้คุณเข้าถึงรูทได้เมื่อทำงานบน Ubuntu 21.10 พร้อมเคอร์เนล 5.13.0-37

    มีการระบุช่องโหว่ที่สามารถใช้ประโยชน์ได้ใน nf_tables, watch_queue และ IPsec ในเคอร์เนล Linux

  • ช่องโหว่ (CVE-2022-27666) ในโมดูลเคอร์เนล esp4 และ esp6 พร้อมการใช้งานการแปลง ESP (Encapsulating Security Payload) สำหรับ IPsec ซึ่งใช้เมื่อใช้ IPv4 และ IPv6 ช่องโหว่ดังกล่าวทำให้ผู้ใช้ภายในเครื่องที่มีสิทธิ์ปกติสามารถเขียนทับอ็อบเจ็กต์ในหน่วยความจำเคอร์เนล และเพิ่มสิทธิ์บนระบบได้ ปัญหาเกิดจากการขาดการกระทบยอดระหว่างขนาดหน่วยความจำที่จัดสรรและข้อมูลจริงที่ได้รับ เนื่องจากขนาดข้อความสูงสุดอาจเกินขนาดหน่วยความจำสูงสุดที่จัดสรรสำหรับโครงสร้าง skb_page_frag_refill

    ช่องโหว่ได้รับการแก้ไขในเคอร์เนลเมื่อวันที่ 7 มีนาคม (แก้ไขใน 5.17, 5.16.15 เป็นต้น) คุณสามารถติดตามการเผยแพร่การอัปเดตแพ็คเกจในการแจกแจงในหน้าเหล่านี้: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux ต้นแบบที่ใช้งานได้ของการใช้ประโยชน์ซึ่งอนุญาตให้ผู้ใช้ทั่วไปสามารถเข้าถึงรูทไปยัง Ubuntu Desktop 21.10 ในการกำหนดค่าเริ่มต้นได้ถูกโพสต์บน GitHub แล้ว มีการอ้างว่าหากมีการเปลี่ยนแปลงเล็กน้อย การใช้ประโยชน์จะทำงานบน Fedora และ Debian ด้วย เป็นที่น่าสังเกตว่าในตอนแรกการหาช่องโหว่นี้เตรียมไว้สำหรับการแข่งขัน pwn2own ในปี 2022 แต่ผู้พัฒนาเคอร์เนลระบุและแก้ไขข้อบกพร่องที่เกี่ยวข้อง ดังนั้นจึงตัดสินใจเปิดเผยรายละเอียดของช่องโหว่ดังกล่าว

  • ช่องโหว่สองช่อง (CVE-2022-1015, CVE-2022-1016) ในระบบย่อย netfilter ในโมดูล nf_tables ซึ่งช่วยให้มั่นใจถึงการทำงานของตัวกรองแพ็กเก็ต nftables ปัญหาแรกอนุญาตให้ผู้ใช้ที่ไม่มีสิทธิพิเศษภายในเครื่องสามารถเขียนข้อมูลนอกขอบเขตไปยังบัฟเฟอร์ที่จัดสรรบนสแต็กได้ การโอเวอร์โฟลว์เกิดขึ้นเมื่อประมวลผลนิพจน์ nftable ที่ถูกจัดรูปแบบด้วยวิธีใดวิธีหนึ่งและถูกประมวลผลระหว่างขั้นตอนการตรวจสอบดัชนีที่ระบุโดยผู้ใช้ที่มีสิทธิ์เข้าถึงกฎ nftable

    ช่องโหว่นี้เกิดจากข้อเท็จจริงที่ว่านักพัฒนาบอกเป็นนัยว่าค่าของ "enum nft_registers reg" เป็นไบต์เดียว เมื่อเปิดใช้งานการปรับให้เหมาะสมบางอย่าง คอมไพเลอร์ตามข้อกำหนด C89 สามารถใช้ค่า 32 บิตได้ . เนื่องจากคุณสมบัตินี้ ขนาดที่ใช้ในการตรวจสอบและจัดสรรหน่วยความจำจึงไม่ตรงกับขนาดจริงของข้อมูลในโครงสร้าง ส่งผลให้ส่วนท้ายของโครงสร้างซ้อนทับกับพอยน์เตอร์บนสแต็ก

    ปัญหานี้สามารถนำไปใช้เพื่อรันโค้ดในระดับเคอร์เนลได้ แต่การโจมตีที่ประสบความสำเร็จนั้นจำเป็นต้องเข้าถึง nftables ซึ่งสามารถรับได้ในเนมสเปซเครือข่ายที่แยกต่างหากที่มีสิทธิ์ CLONE_NEWUSER หรือ CLONE_NEWNET (เช่น หากคุณสามารถเรียกใช้คอนเทนเนอร์ที่แยกได้) ช่องโหว่นี้ยังเกี่ยวข้องอย่างใกล้ชิดกับการปรับให้เหมาะสมที่ใช้โดยคอมไพเลอร์ ซึ่งเปิดใช้งานเมื่อสร้างในโหมด “CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y” เป็นต้น การใช้ประโยชน์จากช่องโหว่นี้สามารถทำได้โดยเริ่มจาก Linux kernel 5.12

    ช่องโหว่ที่สองใน netfilter เกิดจากการเข้าถึงพื้นที่หน่วยความจำที่ว่างแล้ว (ใช้งานฟรี) ในตัวจัดการ nft_do_chain และอาจนำไปสู่การรั่วไหลของพื้นที่หน่วยความจำเคอร์เนลที่ไม่ได้เตรียมใช้งาน ซึ่งสามารถอ่านผ่านการยักย้ายด้วยนิพจน์ nftables และใช้งาน ตัวอย่างเช่น เพื่อระบุที่อยู่ของพอยน์เตอร์ระหว่างการหาประโยชน์จากการพัฒนาเพื่อหาช่องโหว่อื่นๆ การใช้ประโยชน์จากช่องโหว่นี้สามารถทำได้โดยเริ่มจากเคอร์เนล Linux 5.13

    ช่องโหว่ดังกล่าวได้รับการแก้ไขแล้วในเคอร์เนลแพตช์ปัจจุบัน 5.17.1, 5.16.18, 5.15.32, 5.10.109, 5.4.188, 4.19.237, 4.14.274 และ 4.9.309 คุณสามารถติดตามการเผยแพร่การอัปเดตแพ็คเกจในการแจกแจงในหน้าเหล่านี้: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux นักวิจัยที่ระบุปัญหาได้ประกาศเตรียมการหาประโยชน์สำหรับช่องโหว่ทั้งสอง ซึ่งมีแผนจะเผยแพร่ภายในไม่กี่วัน หลังจากการเผยแพร่การอัปเดตสำหรับแพ็คเกจเคอร์เนล

ที่มา: opennet.ru

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