พวกเขาตรวจพบช่องโหว่ในเคอร์เนลที่อาจทำให้เกิดการโจรกรรมข้อมูล

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

ช่องโหว่ อธิบายว่าเป็น 'ช่องโหว่ในการเปิดเผยข้อมูล ซึ่งอาจทำให้ผู้โจมตีเห็นหน่วยความจำของเคอร์เนลสแต็ก '

CVE-2020-28588 คือช่องโหว่ที่ ค้นพบในอุปกรณ์ ARM ฟังก์ชัน proc / pid / syscall อุปกรณ์ 32 บิตที่รันระบบปฏิบัติการ ตาม Cisco Talos พบปัญหาครั้งแรกในอุปกรณ์ที่ใช้ Azure Sphere

ช่องโหว่ในการเปิดเผยข้อมูลมีอยู่ในฟังก์ชัน / proc / pid / syscall ของ Linux Kernel 5.1 Stable และ 5.4.66 โดยเฉพาะอย่างยิ่งปัญหานี้ได้รับการแนะนำใน v5.1-rc4 (คอมมิต 631b7abacd02b88f4b0795c08b54ad4fc3e7c7c0) และยังคงมีอยู่ใน v5.10-rc4 ดังนั้นเวอร์ชันระดับกลางทั้งหมดจึงมีแนวโน้มที่จะได้รับผลกระทบ ผู้โจมตีสามารถอ่าน / proc / pid / syscall เพื่อเปิดใช้งานช่องโหว่นี้ทำให้เคอร์เนลสูญเสียเนื้อหาหน่วยความจำ

Proc เป็นระบบไฟล์หลอกพิเศษ บนระบบปฏิบัติการที่เหมือน Unix นั่นเอง ใช้เพื่อเข้าถึงข้อมูลกระบวนการแบบไดนามิก พบในเคอร์เนล นำเสนอข้อมูลกระบวนการและข้อมูลระบบอื่น ๆ ตามลำดับชั้นโครงสร้างเหมือนไฟล์

ตัวอย่างเช่นมีไดเร็กทอรีย่อย / proc / [pid] ซึ่งแต่ละไฟล์มีไฟล์และไดเร็กทอรีย่อยที่เปิดเผยข้อมูลเกี่ยวกับกระบวนการเฉพาะซึ่งสามารถอ่านได้โดยใช้ ID กระบวนการที่เกี่ยวข้อง ในกรณีของไฟล์ "syscall" เป็นไฟล์ระบบปฏิบัติการ Linux ที่ถูกต้องซึ่งมีบันทึกการเรียกระบบที่เคอร์เนลใช้

สำหรับ บริษัท ลแฮกเกอร์สามารถใช้ประโยชน์จากข้อบกพร่องและเข้าถึงระบบปฏิบัติการและไฟล์ syscall ผ่านระบบที่ใช้ในการโต้ตอบระหว่างโครงสร้างข้อมูลเคอร์เนล Proc รายการ syscall procfs สามารถใช้ประโยชน์ได้หากแฮกเกอร์ออกคำสั่งเพื่อสร้างหน่วยความจำฮีปที่ไม่ได้เริ่มต้น 24 ไบต์ซึ่งนำไปสู่การเลี่ยงการสุ่มเลย์เอาต์พื้นที่ที่อยู่เคอร์เนล (KASLR)

เมื่อมองไปที่ฟังก์ชันเฉพาะนี้ทุกอย่างดูดี แต่เป็นที่น่าสังเกตว่าไฟล์ argsพารามิเตอร์ที่ผ่านมาจาก proc_pid_syscallฟังก์ชันและเป็นประเภทที่แท้จริง __u64 args. ในระบบ ARM นิยามของฟังก์ชันจะแปลงขนาดของไฟล์ argอาร์เรย์ในองค์ประกอบสี่ไบต์จากแปดไบต์ (ตั้งแต่ unsigned longใน ARM คือ 4 ไบต์) ซึ่งส่งผลให้เป็นไฟล์ memcpyถูกคัดลอกเป็น 20 ไบต์ (บวก 4 สำหรับ args[0]).

ในทำนองเดียวกันสำหรับ i386 โดยที่ unsigned longมันคือ 4 ไบต์เพียงแค่ args24 ไบต์แรกของอาร์กิวเมนต์ถูกเขียนโดยปล่อยให้ 24 ไบต์ที่เหลือเหมือนเดิม

ในทั้งสองกรณีหากเรามองย้อนกลับไปที่ไฟล์ proc_pid_syscallฟังก์ชัน

ในขณะที่อยู่ใน ARM 32 บิตและ i386 เราคัดลอกเพียง 24 ไบต์ลงในไฟล์ argsอาร์เรย์สตริงรูปแบบจะลงท้ายด้วยการอ่านไฟล์ argsเมทริกซ์ตั้งแต่ %llxสตริงรูปแบบคือแปดไบต์บนระบบ 32 บิตและ 64 บิต ดังนั้นหน่วยความจำฮีปที่ไม่ได้เริ่มต้น 24 ไบต์จึงได้รับเอาต์พุตซึ่งอาจนำไปสู่การบายพาส KASLR

นักวิจัยระบุว่า การโจมตีนี้ "เป็นไปไม่ได้ที่จะตรวจจับจากระยะไกลบนเครือข่าย" เนื่องจากกำลังอ่านไฟล์ที่ถูกต้องจากระบบปฏิบัติการ Linux "หากใช้อย่างถูกต้องแฮ็กเกอร์อาจใช้ประโยชน์จากการรั่วไหลของข้อมูลนี้เพื่อใช้ประโยชน์จากช่องโหว่อื่น ๆ ของ Linux ที่ไม่ได้รับการแก้ไข" Cisco กล่าว

ในเรื่องนี้ Google เพิ่งกล่าวว่า:

“ ข้อบกพร่องด้านความปลอดภัยของหน่วยความจำมักคุกคามความปลอดภัยของอุปกรณ์โดยเฉพาะแอปพลิเคชันและระบบปฏิบัติการ ตัวอย่างเช่นในระบบปฏิบัติการมือถือ Android ที่เคอร์เนล Linux รองรับ Google กล่าวว่าพบว่ามากกว่าครึ่งหนึ่งของช่องโหว่ด้านความปลอดภัยที่ได้รับการแก้ไขในปี 2019 เป็นผลมาจากข้อบกพร่องด้านความปลอดภัยของหน่วยความจำ

สุดท้าย แต่ไม่ท้ายสุด ขอแนะนำให้อัปเดตเวอร์ชัน 5.10-rc4, 5.4.66, 5.9.8 ของเคอร์เนล Linux ตั้งแต่ ช่องโหว่นี้ได้รับการทดสอบและยืนยันแล้วว่าสามารถใช้ประโยชน์จากเคอร์เนล Linux เวอร์ชันต่อไปนี้ได้

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


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

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

*

*

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