พบช่องโหว่ในระบบย่อย tty ของเคอร์เนลลินุกซ์

นักวิจัยจากทีม Google Project Zero เปิดตัว ล่าสุดผ่านบล็อกโพสต์ วิธีการใหม่ในการใช้ประโยชน์จากจุดอ่อน (CVE-2020-29661) ในการใช้งานตัวจัดการ ioctl TIOCSPGRP ของ Linux kernel tty ระบบย่อยตลอดจนกลไกการป้องกันโดยละเอียดที่สามารถบล็อกช่องโหว่เหล่านี้ได้

ได้ระบุไว้ในโพสต์ว่า ปัญหาเกิดจากข้อผิดพลาดในการตั้งค่าล็อคซึ่งนำไปสู่สภาวะการแย่งชิงในโค้ดของ /tty/tty_jobctrl.c ซึ่งใช้ในการสร้างเงื่อนไขในการเข้าถึงหน่วยความจำหลังจากเปิดตัว (ใช้หลังเลิกใช้) ซึ่งใช้ประโยชน์จากพื้นที่ของผู้ใช้ผ่านการจัดการกับ ioct- โดยการเรียก TIOCSPGRP

นอกจากข้อมูลที่เผยแพร่แล้วยัง มีการสาธิตการใช้ประโยชน์จากฟังก์ชัน เพื่อยกระดับสิทธิพิเศษใน Debian 10 พร้อมเคอร์เนล 4.19.0-13-amd64 และไม่ได้ตัดออกด้วยว่าอาจส่งผลกระทบต่อการแจกแจงแบบต่างๆ ซึ่งแน่นอนว่าเป็นการกระจายแบบอิงและมาจากเดเบียน

เทคนิคการแสวงหาผลประโยชน์ส่วนบุคคลและตัวเลือกการบรรเทาผลกระทบหลายอย่างที่ฉันอธิบายในที่นี้ไม่ใช่เรื่องใหม่ อย่างไรก็ตาม ฉันคิดว่ามันคุ้มค่าที่จะเขียนมันร่วมกันเพื่อแสดงให้เห็นว่าการบรรเทาผลกระทบต่างๆ โต้ตอบกับการใช้ประโยชน์จากช่องโหว่หลังเปล่าตามปกติได้อย่างไร

ข้อมูลโค้ดในบล็อกโพสต์นี้ที่เกี่ยวข้องกับการเจาะช่องโหว่นั้นนำมาจากเวอร์ชันก่อนหน้า 4.19.160 เนื่องจากนั่นคือสิ่งที่เคอร์เนล Debian เป้าหมายใช้ ข้อมูลโค้ดอื่นๆ บางส่วนมาจาก Linux mainline

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

สรุปคือผิดหวัง ดังที่ได้กล่าวมาแล้วว่าวิธีการต่างๆ เช่น การแบ่งส่วนหน่วยความจำในฮีปและการควบคุมการเข้าถึงหน่วยความจำหลังจากที่ปล่อยว่างนั้นไม่ได้ถูกนำไปใช้ในทางปฏิบัติ เนื่องจากจะนำไปสู่การลดประสิทธิภาพและการป้องกันตาม CFI (Control Flow Integrity) ซึ่งจะบล็อกการหาช่องโหว่ในภายหลัง ขั้นตอนของการโจมตี ต้องมีการปรับปรุง

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

เมื่อใดก็ตามที่ / dev / ptmx ถูกเปิด (ย่อมาจาก "pseudo-terminal multiplexer") ตัวอธิบายไฟล์ที่เป็นผลลัพธ์จะแสดงถึงด้านอุปกรณ์ (ที่อ้างถึงในเอกสารและแหล่งที่มาของเคอร์เนลว่า -เทอร์มินัล.

 อุปกรณ์ปลายทางที่เกี่ยวข้อง (ซึ่งปกติเชลล์เชื่อมต่อ) ถูกสร้างขึ้นโดยอัตโนมัติโดยเคอร์เนลภายใต้ / dev / pts / .

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

ข้อผิดพลาดที่ทำให้เกิดปัญหา ได้รับการแก้ไขในเคอร์เนล Linux เมื่อวันที่ 3 ธันวาคมปีที่แล้ว. ปัญหา ปรากฏในเมล็ดก่อนเวอร์ชัน 5.9.13 แต่การแจกแจงส่วนใหญ่ได้แก้ไขปัญหาในการอัปเดตแพ็คเกจเคอร์เนลที่เสนอเมื่อปีที่แล้ว

มีการกล่าวถึงช่องโหว่ที่คล้ายกัน (CVE-2020-29660) ซึ่งพบพร้อมกันในการใช้งานการเรียก TIOCGSID ioctl แต่ถูกลบออกไปทุกที่

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


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

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

*

*

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