ช่องโหว่ใน cryptsetup ที่อนุญาตให้คุณปิดการใช้งานการเข้ารหัสในพาร์ติชัน LUKS2

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

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

ผู้โจมตีสามารถทำการเปลี่ยนแปลงข้อมูลเมตา LUKS2 ที่จำลองการยกเลิกการดำเนินการถอดรหัสอันเป็นผลมาจากความล้มเหลว และบรรลุการถอดรหัสบางส่วนของพาร์ติชันหลังจากเปิดใช้งานและใช้งานไดรฟ์ที่แก้ไขโดยเจ้าของ ในกรณีนี้ ผู้ใช้ที่เชื่อมต่อไดรฟ์ที่ถูกแก้ไขและปลดล็อคด้วยรหัสผ่านที่ถูกต้องจะไม่ได้รับคำเตือนใด ๆ เกี่ยวกับกระบวนการกู้คืนการดำเนินการเข้ารหัสซ้ำที่ถูกขัดจังหวะ และสามารถค้นหาความคืบหน้าของการดำเนินการนี้ได้โดยใช้ "luks Dump" เท่านั้น สั่งการ. จำนวนข้อมูลที่ผู้โจมตีสามารถถอดรหัสได้ขึ้นอยู่กับขนาดของส่วนหัว LUKS2 แต่ที่ขนาดเริ่มต้น (16 MiB) สามารถเกิน 3 GB ได้

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

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

ปัญหาถูกระบุโดยผู้ดูแลโครงการ cryptsetup และแก้ไขแล้วในการอัพเดต cryptsetup 2.4.3 และ 2.3.7 สถานะของการอัปเดตที่ถูกสร้างขึ้นเพื่อแก้ไขปัญหาในการแจกแจงสามารถติดตามได้ในหน้าเหล่านี้: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch ช่องโหว่นี้จะปรากฏขึ้นตั้งแต่การเปิดตัว cryptsetup 2.2.0 ซึ่งแนะนำการสนับสนุนสำหรับการดำเนินการ "การเข้ารหัสลับออนไลน์" เพื่อเป็นวิธีแก้ปัญหาในการป้องกัน คุณสามารถใช้การเปิดใช้ตัวเลือก “--disable-luks2-reencryption” ได้

ที่มา: opennet.ru

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