พบช่องโหว่ในการใช้งาน TIPC ของเคอร์เนลลินุกซ์

ล่าสุดมีข่าวดังกล่าว นักวิจัยด้านความปลอดภัยระบุช่องโหว่ที่สำคัญ (อยู่ในรายการแล้วภายใต้ CVE-2021-43267) ในการดำเนินการตามโปรโตคอลเครือข่าย TIPC ให้มาในเคอร์เนล Linux ซึ่งอนุญาตให้เรียกใช้โค้ดจากระยะไกลด้วยสิทธิ์เคอร์เนลโดยส่งแพ็กเก็ตเครือข่ายที่สร้างขึ้นเป็นพิเศษ

อันตรายของปัญหาลดลงโดยข้อเท็จจริงที่ว่าการโจมตีต้องการการเปิดใช้งานการสนับสนุน TIPC อย่างชัดเจนบนระบบ (โดยการโหลดและกำหนดค่าโมดูลเคอร์เนล tipc.ko) ซึ่งไม่ได้ทำโดยค่าเริ่มต้นบนการกระจายที่ไม่ใช่ Linux เฉพาะทาง

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

TIPC ได้รับการสนับสนุนตั้งแต่เคอร์เนล Linux 3.19 แต่โค้ดที่นำไปสู่ช่องโหว่นั้นรวมอยู่ในเคอร์เนล 5.10. โปรโตคอล TIPC ได้รับการพัฒนาโดย Ericsson โดยมีวัตถุประสงค์เพื่อจัดระเบียบการสื่อสารระหว่างกระบวนการในคลัสเตอร์และเปิดใช้งานส่วนใหญ่บนโหนดของคลัสเตอร์

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

โปรโตคอลถูกนำไปใช้ในโมดูลเคอร์เนลที่มาพร้อมกับลีนุกซ์รุ่นหลักทั้งหมด เมื่อโหลดโดยผู้ใช้ สามารถใช้เป็นตัวเชื่อมต่อและสามารถกำหนดค่าในอินเทอร์เฟซโดยใช้ netlink (หรือโดยใช้ user space tool tipc ซึ่งจะทำให้การเรียก netlink เหล่านี้) เป็นผู้ใช้ที่ไม่มีสิทธิพิเศษ

สามารถกำหนดค่า TIPC ให้ทำงานผ่านโปรโตคอล Bearer เช่น Ethernet หรือ UDP (ในกรณีหลัง เคอร์เนลจะรับฟังที่พอร์ต 6118 สำหรับข้อความขาเข้าจากเครื่องใดๆ) เนื่องจากผู้ใช้ที่มีสิทธิพิเศษต่ำไม่สามารถสร้างเฟรมอีเทอร์เน็ตดิบได้ การตั้งค่าผู้ถือเป็น UDP ทำให้ง่ายต่อการเขียนการหาประโยชน์จากท้องถิ่น

ช่องโหว่นี้ปรากฏในฟังก์ชัน tipc_crypto_key_rc และเกิดจากการขาดการตรวจสอบที่เหมาะสม ของความสอดคล้องระหว่างสิ่งที่ระบุในส่วนหัวและขนาดที่แท้จริงของข้อมูลเมื่อวิเคราะห์แพ็กเก็ตด้วยประเภท MSG_CRYPTO ที่ใช้เพื่อรับคีย์การเข้ารหัสจากโหนดอื่นในคลัสเตอร์เพื่อถอดรหัสข้อความที่ส่งจากโหนดเหล่านี้ในภายหลัง

ขนาดของข้อมูลที่คัดลอกลงในหน่วยความจำจะคำนวณจากความแตกต่างระหว่างค่าของฟิลด์ที่มีขนาดของข้อความและขนาดของส่วนหัว แต่ไม่คำนึงถึงขนาดจริงของชื่ออัลกอริทึมการเข้ารหัสที่ส่ง ในข้อความและเนื้อหาของคีย์

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

ช่องโหว่ได้รับการแก้ไขในเมล็ด 5.15.0, 5.10.77 และ 5.14.16แม้ว่าปัญหาจะปรากฏขึ้นและยังไม่ได้รับการแก้ไขใน Debian 11, Ubuntu 21.04 / 21.10, SUSE (ในสาขา SLE15-SP4 ที่ยังไม่เผยแพร่) RHEL (ยังไม่มีรายละเอียดหากโซลูชันที่มีช่องโหว่ได้รับการอัพเดต) และ Fedora

แม้ว่า การอัปเดตเคอร์เนลได้รับการเผยแพร่แล้วสำหรับ Arch Linux และการแจกแจงด้วยเมล็ดก่อน 5.10 เช่น Debian 10 และ Ubuntu 20.04 จะไม่ได้รับผลกระทบ

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


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

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

*

*

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