ล่าสุดมีข่าวออกในเน็ตว่าการค้นพบของ ช่องโหว่ใหม่ใน Linux ซึ่งมีรายชื่อเป็น "ความรุนแรงสูง" ซึ่งมีผลกับเมล็ดทั้งหมดตั้งแต่เวอร์ชัน 5.8, เช่นเดียวกับอนุพันธ์รวมถึง Android
รู้จักกันในนาม Dirty Pipe อนุญาตให้เขียนทับข้อมูลในไฟล์แบบอ่านอย่างเดียวและอาจนำไปสู่การยกระดับสิทธิ์ โดยการฉีดรหัสลงในกระบวนการ "รูท"
แม้ว่าจะได้รับการแพตช์ในเคอร์เนล mainline ของ Linux แล้ว แต่บั๊กดังกล่าวสามารถติดอาวุธได้ในรูปแบบของการยกระดับสิทธิ์ในอุปกรณ์ทั้งหมดที่ใช้เคอร์เนล Linux เวอร์ชัน 5.8 หรือใหม่กว่า
นอกจากนี้ยังหมายความว่าสมาร์ทโฟน Android ที่เพิ่งออกใหม่จำนวนมาก เช่น Samsung Galaxy S22 และ Google Pixel 6 ก็มีความเสี่ยงเช่นกัน จนกว่าอุปกรณ์แต่ละเครื่องจะได้รับเคอร์เนลแพตช์ที่เหมาะสมจาก OEM ที่เกี่ยวข้อง
เกี่ยวกับ Dirty Pipe
จุดอ่อนคือ เปิดเผยโดย Max Kellerman นักวิจัยด้านความปลอดภัย และจัดหมวดหมู่เป็น (CVE-2022-0847) ต้องใช้เวลาสองสามเดือนในการหาช่องโหว่ที่พิสูจน์แนวคิด
ช่องโหว่นี้อนุญาตให้ผู้ใช้ที่ไม่มีสิทธิ์แทรกและเขียนทับข้อมูลในไฟล์แบบอ่านอย่างเดียว ซึ่งรวมถึงกระบวนการ SUID ที่ทำงานเป็นรูท ชื่อเล่นที่ใช้พูดดูเหมือนจะล้อเล่นกับแมลงที่น่าอับอาย วัวสกปรก และกลไกของลินุกซ์ที่เรียกว่าไพพ์ไลน์สำหรับการส่งข้อความระหว่างกระบวนการ เนื่องจากกลไกหลังถูกใช้ระหว่างรูทีนการหาประโยชน์
ทุกอย่างเริ่มต้นเมื่อปีที่แล้วด้วยตั๋วสนับสนุนที่เกี่ยวข้องกับไฟล์ที่เสียหาย ลูกค้าบ่นว่าไม่สามารถแกะบันทึกการเข้าถึงที่ดาวน์โหลดมา และมีล็อกไฟล์ที่เสียหายบนเซิร์ฟเวอร์บันทึกตัวใดตัวหนึ่ง มันสามารถคลายการบีบอัดได้ แต่ gzip รายงานข้อผิดพลาด CRC ฉันไม่สามารถอธิบายได้ว่าทำไมมันถึงเสียหาย แต่ฉันคิดว่ากระบวนการแยกตอนกลางคืนเกิดความผิดพลาดและสร้างไฟล์ที่เสียหาย ฉันแก้ไข CRC ของไฟล์ด้วยตนเอง ปิดตั๋ว และลืมปัญหาไปในไม่ช้า
หลังจากวิเคราะห์มาหลายเดือน นักวิจัยค้นพบในที่สุดว่าไฟล์ไคลเอนต์ที่เสียหายเป็นผลมาจากจุดบกพร่องในเคอร์เนลของลินุกซ์ เขาพบวิธีใช้ประโยชน์จาก Dirty Pipe เพื่อให้ทุกคนที่มีบัญชี รวมทั้งบัญชี "ไม่มีใคร" ที่มีสิทธิ์น้อยกว่า เพิ่มคีย์ SSH ลงในบัญชีผู้ใช้รูท
เพื่อกระตุ้นช่องโหว่ Kellerman ได้แบ่งปันการพิสูจน์แนวคิด ผู้โจมตีต้องมีสิทธิ์ในการอ่าน นอกจากนี้ การเลื่อนต้องไม่อยู่ในขอบเขตของหน้า การเขียนต้องไม่ข้ามขอบเขตของหน้า และไม่สามารถปรับขนาดไฟล์ได้
ในการใช้ประโยชน์จากช่องโหว่นี้ คุณต้อง: สร้างไพพ์ เติมข้อมูลไพพ์ลงในไพพ์ (โดยการตั้งค่าแฟล็ก PIPE_BUF_FLAG_CAN_MERGE บนรายการทั้งหมดในริง) ล้างไพพ์ (ปล่อยให้แฟล็กตั้งค่าไว้บนอินสแตนซ์ทั้งหมดของโครงสร้าง pipe_buffer ในโครงสร้าง ของวงแหวน pipe_inode_info) รวมข้อมูลจากไฟล์เป้าหมาย (เปิดด้วย O_RDONLY) ลงในไพพ์ก่อนออฟเซ็ตเป้าหมาย และเขียนข้อมูลตามอำเภอใจไปยังไพพ์
Dirty Pipe ยังส่งผลกระทบต่อ Android ทุกรุ่นโดยอิงจากเคอร์เนล Linux รุ่นใดรุ่นหนึ่งที่มีช่องโหว่ เนื่องจาก Android มีการแยกส่วน ดังนั้นรุ่นอุปกรณ์ที่ได้รับผลกระทบจึงไม่สามารถติดตามได้เหมือนกัน
ตามที่เคลเลอร์แมน, Google ได้รวมการแก้ไขข้อผิดพลาดเข้ากับเคอร์เนล Android เมื่อเดือนที่แล้ว ทันทีที่ได้รับการแก้ไขด้วยการเปิดตัวเคอร์เนล Linux เวอร์ชัน 5.16.11, 5.15.25 และ 5.10.102
ที่กล่าวว่าเราอาจต้องรอสักครู่ก่อนที่ OEM จะเริ่มเปิดตัวอัปเดต Android ที่มีการแก้ไข ตัวอย่างเช่น Pixel 6 ของ Google ยังคงมีช่องโหว่ แต่ผู้ใช้ขั้นสูงสามารถบรรเทาข้อบกพร่องได้โดยการติดตั้งเคอร์เนลหลังการขายที่ได้รับการแพตช์แบบกำหนดเองเป็นทางเลือกอื่น
นักพัฒนาเคอร์เนล Linux ได้เผยแพร่โปรแกรมแก้ไข (5.16.11, 5.15.25, 5.10.102) เมื่อวันที่ 23 กุมภาพันธ์ ในขณะที่ Google ได้แก้ไขเคอร์เนล Android ในวันที่ 24 กุมภาพันธ์ Kellermann และผู้เชี่ยวชาญคนอื่นๆ เปรียบเทียบช่องโหว่กับ CVE-2016-5195 “วัวสกปรก” และพวกเขาบอกว่ามันง่ายกว่าที่จะเอาเปรียบ
สุดท้ายหากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถปรึกษารายละเอียดได้ ในลิงค์ต่อไปนี้.