แซมบ้าพูดง่ายๆ ก็คือเป็นโอเพ่นซอร์สที่มีประโยชน์อย่างยิ่ง ได้รับความนิยมอย่างมาก เป็นการนำโปรโตคอลเครือข่ายที่ใช้ใน Microsoft Windows กลับมาใช้ใหม่ และความสำคัญทางประวัติศาสตร์ในการทำงานอินเทอร์เน็ต (การเชื่อมต่อเครือข่ายสองประเภทเข้าด้วยกัน) ไม่สามารถประเมินต่ำเกินไป
ในช่วงปลายทศวรรษที่ 1990 ระบบเครือข่ายของ Microsoft ได้ขจัดลักษณะที่ทึบและเป็นกรรมสิทธิ์ออกไป และกลายเป็นมาตรฐานเปิดที่เรียกว่า CIFS ซึ่งย่อมาจาก ระบบไฟล์อินเทอร์เน็ตทั่วไป.
แต่ไม่มีอะไรที่ "ทั่วไป" หรือ "เปิด" เกี่ยวกับเรื่องนี้ในช่วงต้นทศวรรษ 1990 เมื่อ Andrew Tridgell นักวิชาการชาวออสเตรเลียเริ่มแก้ไขโดยการนำระบบที่เข้ากันได้ซึ่งจะช่วยให้เขาเชื่อมต่อคอมพิวเตอร์ Unix กับเครือข่าย Windows และในทางกลับกัน
ในตอนนั้น โปรโตคอลถูกเรียกอย่างเป็นทางการว่า SMB ซึ่งย่อมาจาก บล็อกข้อความเซิร์ฟเวอร์ (ชื่อที่คุณยังคงได้ยินบ่อยกว่า CIFS) ดังนั้น Tridge ซึ่งเป็นที่รู้จักในชื่อ Andrew Tridgell จึงเรียกโปรเจ็กต์ของเขาว่า "SMBserver" เพราะนั่นคือสิ่งที่เคยเป็นมา
แต่มีผลิตภัณฑ์เชิงพาณิชย์ของชื่อนั้นอยู่แล้ว ดังนั้นจึงจำเป็นต้องมีชื่อเล่นใหม่
นั่นคือเมื่อโครงการกลายเป็นที่รู้จักในฐานะ แซมบ้าชื่อที่น่าจดจำซึ่งเป็นผลมาจากการค้นหาพจนานุกรมสำหรับคำในรูปแบบนี้ S?M?B?
.
ในความเป็นจริง samba
ยังคงเป็นคำแรกที่ออกจากประตูตามตัวอักษรใน dict
ไฟล์ที่พบได้ทั่วไปในคอมพิวเตอร์ Unix ตามด้วยคำที่ค่อนข้างไม่เหมาะสม scramble
และไม่เหมาะสมอย่างยิ่ง scumbag
:
ข้อบกพร่องบางอย่างที่คุณทำ แต่ข้อบกพร่องบางอย่างที่คุณได้รับ
ในช่วงหลายปีที่ผ่านมา โครงการ Samba ไม่เพียงแต่นำเสนอและแก้ไขจุดบกพร่องเฉพาะของตนเองเหมือนที่โครงการซอฟต์แวร์ที่ซับซ้อนทั่วไปทำ แต่ยังสืบทอดจุดบกพร่องและจุดบกพร่องในโปรโตคอลพื้นฐาน เนื่องจากเป้าหมายของโครงการคือการทำงานร่วมกับเครือข่าย Windows ได้อย่างราบรื่น
(น่าเสียดายที่เรียกว่า ความเข้ากันได้ของข้อบกพร่อง มักเป็นส่วนที่หลีกเลี่ยงไม่ได้ในการสร้างระบบใหม่ที่ทำงานร่วมกับระบบที่มีอยู่เดิม)
ปลายปี 2022 หนึ่งใน “ช่องโหว่ที่สืบทอดมา” ถูกพบและรายงานไปยัง Microsoft โดยระบุตัวระบุ CVE-2022-38023และแพตช์ในการอัปเดต Patch Tuesday ประจำเดือนพฤศจิกายน 2022
จุดบกพร่องนี้อาจทำให้ผู้โจมตีเปลี่ยนเนื้อหาของแพ็กเก็ตข้อมูลเครือข่ายบางส่วนโดยไม่ถูกตรวจพบ แม้ว่าจะใช้ MAC เข้ารหัสก็ตาม (รหัสยืนยันข้อความ) มีไว้เพื่อป้องกันการปลอมแปลงและแก้ไขดัดแปลง
โดยเฉพาะอย่างยิ่ง การจัดการข้อมูลในเวลาเข้าสู่ระบบ อาชญากรไซเบอร์ที่มีไหวพริบสามารถดึงการโจมตีแบบ Elevation-of-privilege (EoP) ได้
ในทางทฤษฎีแล้ว พวกเขาสามารถหลอกเซิร์ฟเวอร์ให้คิดว่าพวกเขาได้ผ่าน "คุณมีข้อมูลรับรองผู้ดูแลระบบหรือไม่" ทดสอบ แม้ว่าพวกเขาจะไม่มีข้อมูลประจำตัวเหล่านั้น และข้อมูลปลอมของพวกเขาน่าจะไม่ผ่านการตรวจสอบการเข้ารหัส
ความคล่องตัวในการเข้ารหัส
เราตัดสินใจเขียนเกี่ยวกับบั๊กที่ค่อนข้างลึกลับนี้ ไม่ใช่เพราะเราคิดว่าคุณมีแนวโน้มที่จะถูกใช้ประโยชน์จากมัน (แต่เมื่อพูดถึงเรื่องความปลอดภัยในโลกไซเบอร์ เราจะถือว่า ไม่เคยพูดไม่เคย) แต่เนื่องจากเป็น ยังเตือนอีก ทำไม ความคล่องตัวในการเข้ารหัสเป็นสิ่งสำคัญ.
โดยรวม เราต้องการทั้งทักษะและความตั้งใจที่จะละทิ้งอัลกอริธึมแบบเก่าไปตลอดกาล ทันทีที่พบว่ามีข้อบกพร่อง และอย่าปล่อยไว้เฉยๆ จนกลายเป็นปัญหาของคนอื่น (ว่า "คนอื่น" อาจกลายเป็นเราในอีกสิบปีข้างหน้า)
น่าแปลกใจที่ช่องโหว่ CVE-2022-38023 มีอยู่ตั้งแต่แรก เนื่องจากทั้ง Windows และ Samba ยังคงรองรับรูปแบบการป้องกันความสมบูรณ์ตามอัลกอริทึมการแฮช MD5 ที่เลิกใช้งานมานาน
พูดง่ายๆ คือ การรับรองความถูกต้องของเครือข่ายโดยใช้โปรโตคอล Kerberos เวอร์ชันของ Microsoft ยังคงอนุญาตให้ข้อมูลได้รับการปกป้องอย่างสมบูรณ์ (หรือ ตรวจสอบผลรวมเพื่อใช้ศัพท์เฉพาะที่ไม่เป็นทางการแต่ไม่ถูกต้องอย่างเคร่งครัด) โดยใช้การเข้ารหัสที่มีข้อบกพร่อง
คุณไม่ควรใช้ MD5 อีกต่อไปเพราะถือว่าใช้งานไม่ได้: ผู้โจมตีที่ตั้งใจจริงสามารถหาอินพุตที่แตกต่างกันสองรายการที่ลงท้ายด้วยแฮช MD5 เดียวกันได้อย่างง่ายดาย
อย่างที่คุณคงทราบดีอยู่แล้วว่า หนึ่งในข้อกำหนดของแฮชใดๆ ที่อ้างถึงคุณภาพการเข้ารหัสคือสิ่งนี้ไม่ควรจะเป็นไปได้
ในศัพท์แสง อินพุตสองตัวที่มีแฮชเดียวกันเรียกว่า a การปะทะกันและไม่ควรมีลูกเล่นทางโปรแกรมหรือทางลัดใดๆ เพื่อช่วยให้คุณค้นหาได้อย่างรวดเร็ว
ไม่มีทางที่จะพบการชนที่ดีกว่าโชคดีง่ายๆ – พยายามซ้ำแล้วซ้ำอีกกับไฟล์อินพุตที่เปลี่ยนแปลงตลอดเวลาจนกว่าคุณจะเจอแจ็คพอต
ค่าใช้จ่ายที่แท้จริงของการชนกัน
สมมติว่าเป็นอัลกอริทึมที่เชื่อถือได้ โดยไม่มีจุดอ่อนที่ใช้ประโยชน์ได้ คุณคาดว่าแฮชที่มีเอาต์พุต X บิตจะต้องใช้ประมาณ 2X-1 พยายามค้นหาอินพุตที่สองที่ชนกับแฮชของไฟล์ที่มีอยู่
แม้ว่าสิ่งที่คุณต้องทำคือค้นหาสองอินพุตใดๆ (สองอินพุตโดยพลการ โดยไม่คำนึงถึงเนื้อหา ขนาด หรือโครงสร้าง) ที่เพิ่งมีแฮชเดียวกัน คุณคาดว่าจะต้องใช้มากกว่า 2 เล็กน้อยX / 2 พยายามก่อนที่คุณจะชนกัน
อัลกอริทึมการแฮชใดๆ ที่เชื่อถือได้สามารถ "แคร็ก" ได้เร็วกว่านั้นจะไม่ปลอดภัยในการเข้ารหัส เพราะคุณได้แสดงให้เห็นว่ากระบวนการภายในสำหรับการย่อย-สับ-และกวนข้อมูลที่ป้อนเข้าไปนั้นไม่ได้สร้าง สุ่มผลลัพธ์อย่างแท้จริงเลย
โปรดทราบว่าขั้นตอนการแคร็กที่ดีกว่าโอกาส แม้ว่าจะเพิ่มความเร็วของกระบวนการสร้างการชนกันเพียงเล็กน้อยเท่านั้น และดังนั้นจึงไม่ใช่ความเสี่ยงที่หาประโยชน์ได้ในชีวิตจริงในปัจจุบัน แต่จะทำลายความเชื่อมั่นในอัลกอริทึมการเข้ารหัสพื้นฐานโดยบ่อนทำลายการอ้างสิทธิ์ในการเข้ารหัสที่ถูกต้อง .
ถ้ามี 2X เอาต์พุตแฮชที่เป็นไปได้ที่แตกต่างกัน คุณหวังว่าจะมีโอกาส 50:50 ในการค้นหาอินพุตที่มีแฮชเฉพาะเจาะจงที่กำหนดไว้ล่วงหน้าหลังจากลองมาแล้วประมาณครึ่งหนึ่ง และ 2X/ 2 = 2X-1. การค้นหาไฟล์สองไฟล์ที่ชนกันนั้นง่ายกว่า เพราะทุกครั้งที่คุณลองอินพุตใหม่ คุณจะชนะหากแฮชใหม่ชนกับ ใด ของอินพุตก่อนหน้านี้ที่คุณได้ลองแล้ว เนื่องจากอนุญาตให้ใช้อินพุตคู่ใดก็ได้ สำหรับการชนกันของ "ไฟล์สองไฟล์ในบัคเก็ตยักษ์นี้จะทำ" คุณมีโอกาสสำเร็จ 50:50 ที่มากกว่ารากที่สองของจำนวนแฮชที่เป็นไปได้เพียงเล็กน้อย และ √2X = 2X / 2. ดังนั้น สำหรับแฮช 128 บิต เช่น MD5 โดยเฉลี่ยแล้ว คุณคาดว่าจะแฮชประมาณ 2127 บล็อกเพื่อให้ตรงกับค่าเอาต์พุตเฉพาะ และ 264 บล็อกเพื่อค้นหาคู่ของอินพุตที่ชนกัน
การชนกันของ MD5 อย่างรวดเร็วทำให้เป็นเรื่องง่าย
เมื่อเป็นเช่นนั้น คุณจะไม่สามารถสร้างอินพุตเทียมเทียมที่แตกต่างกันโดยสิ้นเชิงสองรายการที่ไม่เกี่ยวข้องกันซึ่งมีแฮช MD5 เหมือนกันได้อย่างง่ายดาย
และคุณไม่สามารถย้อนกลับจากแฮช MD5 ได้ง่ายๆ เพื่อเปิดเผยสิ่งใดๆ เกี่ยวกับอินพุตเฉพาะที่สร้างมันขึ้นมา ซึ่งเป็นคำมั่นสัญญาอีกรูปแบบหนึ่งที่แฮชที่เชื่อถือได้จำเป็นต้องรักษาไว้
แต่ถ้าคุณเริ่มต้นด้วยสองอินพุตที่เหมือนกันและใส่คู่ของ "การชนกัน" ที่คำนวณโดยเจตนาอย่างระมัดระวังที่จุดเดียวกันในแต่ละสตรีมอินพุต คุณจะสามารถสร้างการชนกันของ MD5 ได้อย่างน่าเชื่อถือในไม่กี่วินาที แม้แต่บนแล็ปท็อปขนาดเล็ก
ตัวอย่างเช่น นี่คือโปรแกรม Lua ที่เราเขียนขึ้นซึ่งสามารถตัดออกเป็นสามส่วนที่แตกต่างกันได้อย่างสะดวก แต่ละส่วนยาว 128 ไบต์
มีคำนำหน้ารหัสที่ลงท้ายด้วยบรรทัดข้อความที่เริ่มต้นความคิดเห็นของ Lua (สตริงที่เริ่มต้น --[==
ในบรรทัดที่ 8) จากนั้นจะมีข้อความความคิดเห็น 128 ไบต์ที่สามารถแทนที่ด้วยสิ่งที่เราต้องการได้ เนื่องจากข้อความนั้นจะถูกละเว้นเมื่อไฟล์ทำงาน (บรรทัดที่ 9 ถึง 11) และมีรหัสต่อท้าย 128 ไบต์ที่ปิดความคิดเห็น ( สตริงเริ่มต้น --]==
ในบรรทัดที่ 12) และจบโปรแกรม
แม้ว่าคุณจะไม่ใช่โปรแกรมเมอร์ คุณอาจเห็นว่าโค้ดที่ใช้งานอ่านอยู่ในเนื้อหา [บรรทัดที่ 14] ของไฟล์ซอร์สโค้ดเอง (ใน Lua ค่า arg[0]
ในบรรทัดที่ 5 คือชื่อของไฟล์สคริปต์ที่คุณกำลังเรียกใช้อยู่) จากนั้นพิมพ์ออกมาเป็น hex dump [line 15] ตามด้วย MD5 hash [line 17]:
การเรียกใช้ไฟล์เป็นการอธิบายตัวเองเป็นหลัก และทำให้บล็อกขนาด 128 ไบต์สามบล็อกชัดเจน:
ใช้ MD5 เครื่องมือวิจัย ที่เรียกว่า md5_fastcoll
สร้างสรรค์โดยนักคณิตศาสตร์ มาร์ค สตีเวนส์ ในฐานะส่วนหนึ่งของปริญญาโทด้านวิทยาการเข้ารหัสลับในปี 2007 เราได้ผลิตชิ้นส่วน “MD128 Collaboration-Building” ขนาด 5 ไบต์อย่างรวดเร็ว ซึ่งเราใช้แทนที่ข้อความแสดงความคิดเห็นที่แสดงในไฟล์ด้านบน
สิ่งนี้สร้างไฟล์สองไฟล์ที่ทั้งสองไฟล์ยังคงทำงานได้เหมือนเดิม เนื่องจากการเปลี่ยนแปลงจำกัดอยู่ที่ความคิดเห็น ซึ่งไม่ส่งผลกระทบต่อโค้ดปฏิบัติการในไฟล์ใดไฟล์หนึ่ง
แต่มีความแตกต่างกันอย่างเห็นได้ชัดในหลายๆ ไบต์ ดังนั้นควรมีค่าแฮชที่แตกต่างกันโดยสิ้นเชิง ดังโค้ดต่อไปนี้ diff (ศัพท์แสงสำหรับ ทิ้งความแตกต่างที่ตรวจพบ) เผย
เราได้แปลงชิ้นส่วนที่สร้างการชนกันขนาด 128 ไบต์ซึ่งไม่สมเหตุสมผลว่าเป็นข้อความที่พิมพ์ได้ให้เป็นเลขฐานสิบหกเพื่อความชัดเจน:
อย่างไรก็ตาม การเรียกใช้ทั้งคู่แสดงให้เห็นอย่างชัดเจนว่าเป็นการชนกันของแฮช เนื่องจากพวกมันมีเอาต์พุต MD5 เหมือนกัน:
สำรวจความซับซ้อนของการชนกัน
MD5 เป็นแฮช 128 บิต เนื่องจากสตริงเอาต์พุตด้านบนทำให้ชัดเจน
ดังที่ได้กล่าวไว้ก่อนหน้านี้ เราคาดว่าจะต้องใช้ประมาณ 2128/2หรือ 264 พยายามโดยเฉลี่ยเพื่อสร้างการชนกันของ MD5 ไม่ว่าประเภทใดก็ตาม
นั่นหมายถึงการประมวลผลขั้นต่ำประมาณ 18 quintillion MD5 hash block เนื่องจาก 264 = 18,446,744,073,709,551,616
ที่อัตราแฮช MD5 สูงสุดโดยประมาณที่ประมาณ 50,000,000 บล็อก/วินาทีบนแล็ปท็อปของเรา นั่นหมายความว่าเราต้องรอนานกว่า 10,000 ปี และแม้ว่าผู้โจมตีที่มีเงินทุนดีอาจดำเนินการได้เร็วกว่านั้น 10,000 ถึง 100,000 เท่า แม้ว่าพวกเขาจะ ต้องรอหลายสัปดาห์หรือหลายเดือนเพื่อให้การชนกันแบบสุ่ม (และไม่จำเป็นต้องมีประโยชน์) ปรากฏขึ้น
แต่ไฟล์ Lua แบบสองหน้าคู่ด้านบนซึ่งมีแฮช MD5 เหมือนกันทุกประการ แม้ว่าจะไม่เหมือนกันอย่างชัดเจนก็ตาม เราใช้เวลาเพียงไม่กี่วินาทีในการเตรียมตัว
การสร้างการชนกันที่แตกต่างกัน 10 ครั้งสำหรับไฟล์ 10 ไฟล์ โดยใช้คำนำหน้าเริ่มต้นที่แตกต่างกัน 10 รายการที่เราเลือกเอง ใช้เวลา: 14.9 วินาที, 4.7 วินาที, 2.6 วินาที, 2.1 วินาที, 10.5 วินาที, 2.4 วินาที, 2.0 วินาที, 0.14 วินาที, 8.4 วินาที, และ 0.43 วินาที
เห็นได้ชัดว่าสัญญาการเข้ารหัสของ MD5 จะให้สิ่งที่เรียกว่า ความต้านทานการชน ถูกทำลายโดยพื้นฐาน…
…เห็นได้ชัดว่ามีปัจจัยอย่างน้อย 25 หมื่นล้าน จากการหารเวลาเฉลี่ยที่เราคาดว่าจะรอเพื่อหาการชนกัน (หลายพันปีตามที่ประมาณไว้ข้างต้น) ด้วยเวลาที่แย่ที่สุดที่เราวัดได้จริง (14.9 วินาที) ขณะปั่นออก การชนที่แตกต่างกันสิบแบบสำหรับบทความนี้เท่านั้น
อธิบายข้อบกพร่องในการตรวจสอบสิทธิ์
แล้วการใช้ MD5 ที่ไม่ปลอดภัยใน CVE-2022-38023 ล่ะ?
ในรหัสหลอกแบบ Lua รหัสตรวจสอบข้อความที่มีข้อบกพร่องซึ่งใช้ระหว่างการเข้าสู่ระบบคือ คำนวณแบบนี้:
เพื่ออธิบาย: รหัสการรับรองความถูกต้องที่ใช้จะคำนวณโดย hmac.md5()
การเรียกใช้ฟังก์ชันในบรรทัดที่ 15 โดยใช้สิ่งที่เรียกว่า a แฮชคีย์ในกรณีนี้คือ HMAC-MD5
ชื่อ HMAC ย่อมาจาก โครงสร้างการเข้ารหัสสำหรับการสร้างรหัสการตรวจสอบข้อความที่ใช้แฮชและส่วนต่อท้าย -MD5 หมายถึงอัลกอริทึมการแฮชที่ใช้ภายใน
HMAC ใช้คีย์ลับ ร่วมกับการเรียกใช้แฮชพื้นฐาน XNUMX รายการ แทนที่จะใช้เพียง XNUMX รายการ เพื่อสร้างรหัสยืนยันข้อความ:
คีย์มีการพลิกบิตบางส่วนก่อน และถูกเพิ่มเข้าไปในข้อมูลที่ให้มาก่อนที่จะเริ่มแฮชครั้งแรก
สิ่งนี้ช่วยลดการควบคุมที่แคร็กเกอร์เข้ารหัสมีอย่างมาก เมื่อพวกเขาพยายามกระตุ้นการชนกันหรือพฤติกรรมที่ไม่สุ่มในกระบวนการแฮช เหนือสถานะภายในของฟังก์ชันแฮชเมื่อถึงไบต์แรกของข้อมูลอินพุต
โดยเฉพาะอย่างยิ่ง คีย์ลับจะป้องกันไม่ให้ผู้โจมตีเริ่มต้นด้วยคำนำหน้าข้อความที่ตนเลือก ดังที่เราทำใน twohash.lua
ตัวอย่างด้านบน
จากนั้น เมื่อคำนวณแฮชแรกแล้ว คีย์จะมีการพลิกชุดบิตที่แตกต่างกัน ได้รับการเติมต่อท้ายด้วยค่าแฮชแรก และข้อมูลอินพุตใหม่นี้จะถูกแฮชเป็นครั้งที่สอง
วิธีนี้จะป้องกันผู้โจมตีจากการจัดการส่วนสุดท้ายของการคำนวณ HMAC เช่นกัน โดยเฉพาะการป้องกันไม่ให้เพิ่มส่วนต่อท้ายที่ตนเลือกไว้ในขั้นตอนสุดท้ายของกระบวนการแฮช
อันที่จริง แม้ว่าคุณไม่ควรใช้ MD5 เลย แต่เราไม่ทราบถึงการโจมตีใดๆ ในปัจจุบันที่สามารถทำลายอัลกอริทึมได้ เมื่อใช้ในรูปแบบ HMAC-MD5 ด้วยคีย์ที่สุ่มเลือก
รูอยู่ตรงกลาง
ดังนั้นช่องโหว่ที่เจาะจงได้ในรหัสปลอมด้านบนจึงไม่อยู่ในบรรทัดใดบรรทัดหนึ่งที่ hmac.md5()
มีการใช้ฟังก์ชัน
หัวใจของบั๊กคือบรรทัดที่ 11 ซึ่งข้อมูลที่คุณต้องการตรวจสอบสิทธิ์จะถูกบีบอัดเป็นสตริงที่มีความยาวคงที่...
.. โดยการผลักดันผ่านการเรียกเพียงครั้งเดียวของ MD5 เก่าธรรมดา
กล่าวอีกนัยหนึ่ง ไม่ว่าคุณจะเลือกฟังก์ชัน HMAC ใดในบรรทัดที่ 15 และไม่ว่าขั้นตอนสุดท้ายจะแข็งแรงและทนทานต่อการชนกันเพียงใด คุณก็มีโอกาสที่จะทำให้เกิดการชนกันของแฮชที่บรรทัดที่ 11
พูดง่ายๆ ก็คือ หากคุณทราบข้อมูลที่ควรจะเข้าสู่ chksum()
ฟังก์ชันที่จะตรวจสอบความถูกต้อง และคุณสามารถใช้ตัวสร้างการชนกันเพื่อค้นหาบล็อกข้อมูลอื่นที่มีแฮช MD5 เดียวกัน...
…บรรทัดที่ 11 หมายความว่าคุณจะจบลง ด้วยค่าอินพุตที่เท่ากันทุกประการ (ตัวแปร signdat
ในรหัสเทียม) ถูกผลักเข้าสู่ขั้นตอนสุดท้าย HMAC ที่ปลอดภัยเหมือนคุณ
ดังนั้น แม้ว่าคุณอาจใช้ฟังก์ชันแยกย่อยข้อความคีย์ที่รัดกุมในตอนท้าย แต่คุณก็อาจกำลังตรวจสอบแฮช MD5 ที่ได้มาจากข้อมูลแอบอ้าง
น้อยจะได้รับมากขึ้น
ในฐานะของแซมบ้า บูเลทีนการรักษาความปลอดภัย อธิบายปัญหาอย่างกระชับ:
จุดอ่อน […] คือการคำนวณเช็คซัมที่ปลอดภัยเป็น
HMAC-MD5(MD5(DATA),KEY)
ซึ่งหมายความว่าผู้โจมตีที่ใช้งานอยู่ซึ่งทราบข้อมูลข้อความล้วนสามารถสร้างสิ่งที่แตกต่างออกไปได้DATA
ด้วย MD5 checksum เดียวกัน และแทนที่ลงในสตรีมข้อมูลโดยไม่ถูกตรวจพบ
กระแทกแดกดันออกจาก MD5(DATA)
ส่วนหนึ่งของสูตร HMAC ด้านบน ซึ่งดูเหมือนว่าจะเพิ่มกระบวนการ "ผสม" โดยรวม จะเพิ่มความต้านทานการชน
หากไม่มีการบีบอัด MD5 ตรงกลาง คุณจะต้องพบการชนกันใน HMAC-MD5 เอง ซึ่งอาจเป็นไปไม่ได้ในปี 2023 แม้จะมีเงินทุนจากรัฐบาลที่ไม่จำกัดก็ตาม อย่างน้อยที่สุดก็ไม่อยู่ในช่วงอายุของเซสชันเครือข่ายที่คุณพยายาม เพื่อประนีประนอม
อะไรใช้เวลานานมาก?
ถึงตอนนี้ คุณคงสงสัยว่าทำไมบั๊กนี้ถึงยังไม่ถูกค้นพบหรืออย่างน้อยก็ยังไม่ได้แพตช์เป็นเวลานานนัก
หลังจากทั้งหมด RFC 6151ซึ่งย้อนหลังไปถึงปี 2011 และมีชื่อที่มีนัยสำคัญ อัปเดตข้อควรพิจารณาด้านความปลอดภัยสำหรับ MD5 Message-Digest และอัลกอริทึม HMAC-MD5ให้คำแนะนำดังต่อไปนี้ (การเน้นของเรามากกว่าหนึ่งทศวรรษต่อมา):
การโจมตี HMAC-MD5 ดูเหมือนจะไม่บ่งชี้ถึงช่องโหว่ที่ใช้งานได้จริงเมื่อใช้เป็นรหัสยืนยันข้อความ ดังนั้น การลบ HMAC-MD5 ออกจากโปรโตคอลที่มีอยู่อาจไม่ใช่เรื่องเร่งด่วน อย่างไรก็ตาม เนื่องจาก MD5 ต้องไม่ใช้สำหรับลายเซ็นดิจิทัลสำหรับการออกแบบโปรโตคอลใหม่ ไม่ควรรวมชุดการเข้ารหัสที่มี HMAC-MD5.
อย่างไรก็ตาม ดูเหมือนว่าเนื่องจากแพลตฟอร์มเซิร์ฟเวอร์ SMB ล่าสุดส่วนใหญ่ได้ปิดการตรวจสอบสิทธิ์ HMAC-MD5 เมื่อผู้ใช้พยายามเข้าสู่ระบบ ไคลเอ็นต์ SMB ที่ยังคงรองรับโหมดที่ไม่ปลอดภัยนี้โดยทั่วไปจะไม่เคยใช้ (และจะล้มเหลวอยู่แล้วหากพวกเขาต้องการ พยายาม).
ไคลเอนต์ดูเหมือนจะได้รับการ "ป้องกัน" โดยปริยาย และรหัสที่ไม่ปลอดภัยก็ดูเหมือนจะดีพอๆ กับที่ไม่เป็นอันตราย เพราะการพิสูจน์ตัวตนที่ไม่รัดกุมนั้นไม่จำเป็นหรือไม่ได้ใช้
ดังนั้นปัญหาที่อาจเกิดขึ้นจึงไม่ได้รับความสนใจเท่าที่ควร
น่าเสียดายที่ “การรักษาความปลอดภัยตามสมมติฐาน” ประเภทนี้ล้มเหลวโดยสิ้นเชิง หากคุณบังเอิญเจอ (หรือถูกล่อลวง) เซิร์ฟเวอร์ที่ยอมรับความไม่ปลอดภัยนี้ chksum()
อัลกอริทึมระหว่างการเข้าสู่ระบบ
“ปัญหาดาวน์เกรด” ประเภทนี้ไม่ใช่เรื่องใหม่ ย้อนกลับไปในปี 2015 นักวิจัยได้คิดค้น FREAK และ LogJAM การโจมตีซึ่งจงใจหลอกให้ไคลเอนต์เครือข่ายใช้รหัสที่เรียกว่า EXPORT ซึ่งเป็นโหมดการเข้ารหัสที่จงใจทำให้อ่อนแอลงซึ่งรัฐบาลสหรัฐฯ ยืนยันอย่างแปลกประหลาดโดยกฎหมายเมื่อศตวรรษก่อน
ดังที่เราเขียนในตอนนั้น:
ความยาวคีย์ EXPORT ได้รับเลือกให้เกือบจะสามารถแคร็กได้ในปี 1990 แต่ไม่เคยขยายให้ทันกับความก้าวหน้าของความเร็วโปรเซสเซอร์
นั่นเป็นเพราะรหัสส่งออกถูกสหรัฐฯละทิ้งในราวปี 2000
เป็นความคิดที่งี่เง่าตั้งแต่เริ่มต้น: บริษัทในสหรัฐฯ เพิ่งนำเข้าซอฟต์แวร์เข้ารหัสที่ไม่มีข้อจำกัดในการส่งออก และทำร้ายอุตสาหกรรมซอฟต์แวร์ของตนเอง
แน่นอนว่าเมื่อผู้ร่างกฎหมายหลีกทางให้ EXPORT ciphersuites ก็กลายเป็นสิ่งที่ไม่จำเป็น ดังนั้นทุกคนจึงเลิกใช้มัน
น่าเศร้าที่ชุดเครื่องมือการเข้ารหัสจำนวนมาก รวมถึง OpenSSL และ SChannel ของ Microsoft เก็บโค้ดไว้เพื่อรองรับ ดังนั้นคุณ (หรือที่น่ากังวลกว่านั้น คือ มิจฉาชีพที่มีข้อมูลดี) จึงไม่ถูกหยุดใช้งาน
ครั้งนี้ ตัวการหลักในบรรดาเซิร์ฟเวอร์ที่ยังคงใช้กระบวนการ MD5-plus-HMAC-MD5 ที่เสียหายนี้ดูเหมือนจะเป็นช่วงของ NetApp ซึ่ง สินค้าบางอย่าง เห็นได้ชัดว่ายังคงใช้อัลกอริทึมที่มีความเสี่ยงนี้ (หรือทำจนกระทั่งเมื่อไม่นานมานี้)
ดังนั้น บางครั้งคุณยังอาจเข้าสู่กระบวนการเข้าสู่ระบบเครือข่ายที่มีช่องโหว่ และมีความเสี่ยงจาก CVE-2022-38023 โดยอาจไม่รู้ตัวด้วยซ้ำ
จะทำอย่างไร?
บั๊กนี้ได้รับในที่สุด จัดการกับอย่างน้อยก็ตามค่าเริ่มต้นใน Samba รุ่นล่าสุด
ใส่เพียงแค่ เวอร์ชันแซมบ้า 4.17.5 ตอนนี้บังคับให้ทั้งสองตัวเลือก reject md5 clients = yes
และ reject md5 servers = yes
.
ซึ่งหมายความว่าส่วนประกอบการเข้ารหัสใดๆ ในโปรโตคอลเครือข่าย SMB ต่างๆ ที่เกี่ยวข้องกับอัลกอริทึม MD5 (แม้ว่าจะมีความปลอดภัยในทางทฤษฎี เช่น HMAC-MD5) ห้ามโดยปริยาย.
หากต้องการจริงๆ คุณสามารถเปิดใช้งานอีกครั้งเพื่อเข้าถึงเซิร์ฟเวอร์เฉพาะในเครือข่ายของคุณ
ตรวจสอบให้แน่ใจว่าหากคุณสร้างข้อยกเว้นที่มาตรฐานอินเทอร์เน็ตได้แนะนำอย่างเป็นทางการแล้วให้ต่อต้านมานานกว่าทศวรรษ...
…ที่คุณกำหนดวันที่ที่คุณจะเลิกใช้ตัวเลือกที่ไม่ใช่ค่าเริ่มต้นในที่สุด!
การโจมตีแบบเข้ารหัสลับจะฉลาดขึ้นและเร็วขึ้นเท่านั้น ดังนั้นอย่าพึ่งพาโปรโตคอลและอัลกอริทึมที่ล้าสมัยเพียงแค่ "ไม่ใช้อีกต่อไป"
ตัดมันออกจากโค้ดของคุณไปเลย เพราะหากไม่มีเลย คุณจะใช้มันไม่ได้ และคุณจะไม่ถูกหลอกให้ใช้โดยคนที่พยายามหลอกล่อให้คุณรู้สึกไม่ปลอดภัย
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- เพลโตบล็อคเชน Web3 Metaverse ข่าวกรอง ขยายความรู้. เข้าถึงได้ที่นี่.
- ที่มา: https://nakedsecurity.sophos.com/2023/01/30/serious-security-the-samba-logon-bug-caused-by-outdated-crypto/
- 000
- 1
- 10
- 100
- 11
- 2011
- 2022
- 2023
- 9
- a
- เกี่ยวกับเรา
- เกี่ยวกับมัน
- ข้างบน
- แน่นอน
- นักวิชาการ
- ยอมรับ
- การเข้าถึง
- ถูกต้อง
- ข้าม
- คล่องแคล่ว
- จริง
- ความก้าวหน้า
- มีผลต่อ
- หลังจาก
- กับ
- ขั้นตอนวิธี
- อัลกอริทึม
- ทั้งหมด
- แล้ว
- ทางเลือก
- แม้ว่า
- เสมอ
- ในหมู่
- และ
- อื่น
- รอบ
- บทความ
- โจมตี
- การโจมตี
- ความสนใจ
- เจตคติ
- ชาวออสเตรเลีย
- รับรองความถูกต้อง
- รับรองความถูกต้อง
- การยืนยันตัวตน
- ผู้เขียน
- รถยนต์
- เฉลี่ย
- กลับ
- background-image
- ตาม
- เพราะ
- กลายเป็น
- ก่อน
- กำลัง
- ดีกว่า
- พันล้าน
- ปิดกั้น
- Blocks
- ชายแดน
- ด้านล่าง
- ทำลาย
- แตก
- Bug
- เป็นโรคจิต
- การก่อสร้าง
- คำนวณ
- โทรศัพท์
- ที่เรียกว่า
- ไม่ได้
- รอบคอบ
- กรณี
- ไม่เป็นทางการ
- ก่อให้เกิด
- ที่เกิดจาก
- ศูนย์
- ศตวรรษ
- โอกาส
- เปลี่ยนแปลง
- การเปลี่ยนแปลง
- ทางเลือก
- Choose
- เลือก
- เลือก
- CIF
- การเรียกร้อง
- ความชัดเจน
- ชัดเจน
- อย่างเห็นได้ชัด
- ลูกค้า
- ปิด
- รหัส
- ชน
- สี
- รวม
- อย่างไร
- ความเห็น
- เชิงพาณิชย์
- อย่างธรรมดา
- บริษัท
- เข้ากันได้
- อย่างสมบูรณ์
- ซับซ้อน
- ความซับซ้อน
- ส่วนประกอบ
- การประนีประนอม
- คอมพิวเตอร์
- คอมพิวเตอร์
- เชื่อมต่อ
- การเชื่อมต่อ
- การพิจารณา
- ถือว่า
- การก่อสร้าง
- เนื้อหา
- เนื้อหา
- ต่อ
- ควบคุม
- แปลง
- ราคา
- ได้
- คอร์ส
- หน้าปก
- สร้าง
- ที่สร้างขึ้น
- หนังสือรับรอง
- การเข้ารหัสลับ
- การเข้ารหัสลับ
- การอ่านรหัส
- ปัจจุบัน
- ขณะนี้
- อาชญากรไซเบอร์
- cybersecurity
- มืด
- ข้อมูล
- วันที่
- วันที่
- ทศวรรษ
- ตัดสินใจ
- ค่าเริ่มต้น
- องศา
- ที่ได้มา
- ออกแบบ
- แม้จะมี
- ตรวจพบ
- แน่นอน
- DID
- ต่าง
- ย่อยอาหาร
- ดิจิตอล
- แสดง
- แตกต่าง
- ไม่
- Dont
- ลง
- กอง
- ในระหว่าง
- แต่ละ
- ก่อน
- ง่ายดาย
- อย่างง่ายดาย
- ทั้ง
- อื่น ๆ
- ความสำคัญ
- การเข้ารหัสลับ
- สิ้นสุด
- เป็นหลัก
- ประมาณ
- แม้
- เคย
- เปลี่ยนแปลงตลอดเวลา
- ทุกๆ
- ทุกคน
- เผง
- ตัวอย่าง
- ที่มีอยู่
- คาดหวัง
- อธิบาย
- ใช้ประโยชน์
- ส่งออก
- ล้มเหลว
- ล้มเหลว
- เทียม
- เร็วขึ้น
- เฟด
- สองสาม
- เนื้อไม่มีมัน
- ไฟล์
- สุดท้าย
- ในที่สุด
- หา
- หา
- ชื่อจริง
- การแก้ไข
- ข้อบกพร่อง
- ข้อบกพร่อง
- ตาม
- ดังต่อไปนี้
- ดังต่อไปนี้
- กองกำลัง
- ฟอร์ม
- สูตร
- พบ
- มัก
- ราคาเริ่มต้นที่
- ฟังก์ชัน
- ลึกซึ้ง
- การระดมทุน
- โดยทั่วไป
- สร้าง
- การสร้าง
- รุ่น
- เครื่องกำเนิดไฟฟ้า
- ได้รับ
- ได้รับ
- ยักษ์
- กำหนด
- เหลือบมอง
- Go
- เป้าหมาย
- ไป
- ดี
- รัฐบาล
- อย่างมาก
- ครึ่ง
- เกิดขึ้น
- ที่เกิดขึ้น
- ที่เกิดขึ้น
- กัญชา
- อัตราการแฮช
- แฮช
- hashing
- หัวใจสำคัญ
- ความสูง
- ช่วย
- HEX
- ทางประวัติศาสตร์
- ตี
- รู
- ความหวัง
- โฉบ
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- อย่างไรก็ตาม
- HTML
- HTTPS
- เจ็บ
- ความคิด
- identiques
- ระบุ
- การดำเนินการ
- ความสำคัญ
- ปรับปรุง
- in
- ประกอบด้วย
- รวมทั้ง
- เพิ่ม
- แสดง
- อุตสาหกรรม
- อินพุต
- แทน
- ความสมบูรณ์
- ภายใน
- อินเทอร์เน็ต
- แนะนำ
- รวมถึง
- IT
- ตัวเอง
- เงินรางวัล
- ศัพท์แสง
- แค่หนึ่ง
- เก็บ
- คีย์
- ทราบ
- รู้ดี
- ที่รู้จักกัน
- แล็ปท็อป
- ชื่อสกุล
- ปลาย
- ล่าสุด
- รุ่นล่าสุด
- กฏหมาย
- ทิ้ง
- การออกจาก
- ชีวิต
- ตลอดชีวิต
- น่าจะ
- Line
- เส้น
- นาน
- Lot
- โชค
- ทำ
- หลัก
- ส่วนใหญ่
- ทำ
- ทำให้
- การจัดการกับ
- หลาย
- ขอบ
- การจับคู่
- เรื่อง
- ความกว้างสูงสุด
- MD5
- ความหมาย
- วิธี
- กล่าวถึง
- ข่าวสาร
- ไมโครซอฟท์
- Microsoft Windows
- กลาง
- อาจ
- โหมด
- โหมด
- เดือน
- ข้อมูลเพิ่มเติม
- ชื่อ
- ธรรมชาติ
- จำเป็นต้อง
- จำเป็นต้อง
- ความต้องการ
- ค่า
- เครือข่าย
- ข้อมูลเครือข่าย
- เครือข่าย
- เครือข่าย
- แต่
- ใหม่
- ปกติ
- ยวด
- ฉาวโฉ่
- พฤศจิกายน
- จำนวน
- ชัดเจน
- อย่างเป็นทางการ
- เก่า
- ONE
- เปิด
- โอเพนซอร์ส
- OpenSSL
- Options
- ใบสั่ง
- แต่เดิม
- อื่นๆ
- ทั้งหมด
- ของตนเอง
- แพ็คเก็ต
- ส่วนหนึ่ง
- ผ่าน
- ปะ
- แพทช์อังคาร
- พอล
- จุดสูงสุด
- บางที
- สถานที่
- ที่ราบ
- แพลตฟอร์ม
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- จุด
- ตำแหน่ง
- เป็นไปได้
- โพสต์
- ที่มีศักยภาพ
- ประยุกต์
- เตรียมการ
- ป้องกัน
- การป้องกัน
- ก่อน
- พิมพ์
- อาจ
- ปัญหา
- กระบวนการ
- การประมวลผล
- หน่วยประมวลผล
- ก่อ
- ผลิต
- ผลิตภัณฑ์
- โครงการ
- การเขียนโปรแกรม
- โปรแกรมเมอร์
- โครงการ
- คำมั่นสัญญา
- เป็นเจ้าของ
- การป้องกัน
- โปรโตคอล
- โปรโตคอล
- ให้
- ผลักดัน
- ใจเร่งเร้า
- ใส่
- คุณภาพ
- อย่างรวดเร็ว
- ควินทิลเลี่ยน
- สุ่ม
- พิสัย
- คะแนน
- ถึง
- จริง
- ชีวิตจริง
- เมื่อเร็ว ๆ นี้
- เมื่อเร็ว ๆ นี้
- สีแดง
- ลด
- เรียกว่า
- ไม่คำนึงถึง
- ปล่อย
- น่าเชื่อถือ
- เอาออก
- แทนที่
- แทนที่
- รายงาน
- แสดง
- ความต้องการ
- นักวิจัย
- ความต้านทาน
- ข้อ จำกัด
- ผล
- เผย
- ความเสี่ยง
- เสี่ยง
- ถนน
- ราก
- วิ่ง
- ปลอดภัย
- แซมบ้า
- เดียวกัน
- ได้อย่างลงตัว
- ค้นหา
- ที่สอง
- วินาที
- ลับ
- ส่วน
- ปลอดภัย
- ความปลอดภัย
- ดูเหมือน
- ดูเหมือนว่า
- ความรู้สึก
- ร้ายแรง
- เซิร์ฟเวอร์
- เซสชั่น
- ชุด
- หลาย
- สั้น
- น่า
- แสดง
- แสดงให้เห็นว่า
- ง่าย
- ง่ายดาย
- ตั้งแต่
- เดียว
- ขนาด
- ความสามารถ
- อย่างชาญฉลาด
- SMB
- So
- ซอฟต์แวร์
- ของแข็ง
- บาง
- บางคน
- แหล่ง
- รหัสแหล่งที่มา
- โดยเฉพาะ
- ความเร็ว
- ความเร็ว
- สี่เหลี่ยม
- ระยะ
- ขั้นตอน
- มาตรฐาน
- มาตรฐาน
- เริ่มต้น
- ที่เริ่มต้น
- เริ่มต้น
- สถานะ
- ขั้นตอน
- ยังคง
- หยุด
- กระแส
- แข็งแรง
- โครงสร้าง
- สไตล์
- ความสำเร็จ
- อย่างเช่น
- ที่จัดมา
- สนับสนุน
- ที่สนับสนุน
- ที่สนับสนุน
- ควร
- SVG
- ระบบ
- เอา
- สิบ
- ทดสอบ
- พื้นที่
- ที่มา
- ของพวกเขา
- ดังนั้น
- คิด
- พัน
- สาม
- ตลอด
- เวลา
- ครั้ง
- ชื่อหนังสือ
- ไปยัง
- ร่วมกัน
- เกินไป
- ด้านบน
- โดยสิ้นเชิง
- ไปทาง
- การเปลี่ยนแปลง
- โปร่งใส
- จริง
- ต้นทุนที่แท้จริง
- อังคาร
- กลับ
- หัน
- เปิดเผย
- พื้นฐาน
- เข้าใจได้
- เป็นเอกลักษณ์
- ยูนิกซ์
- ไม่ จำกัด
- บันทึก
- ด่วน
- URL
- us
- รัฐบาลเรา
- ใช้
- ผู้ใช้
- ความคุ้มค่า
- ความคุ้มค่า
- ต่างๆ
- กว้างใหญ่
- การตรวจสอบ
- รุ่น
- ความอ่อนแอ
- อ่อนแอ
- รอ
- ที่รอ
- อยาก
- ความอ่อนแอ
- สัปดาห์ที่ผ่านมา
- อะไร
- ที่
- ในขณะที่
- จะ
- ชนะ
- หน้าต่าง
- ภายใน
- ไม่มี
- สงสัย
- คำ
- คำ
- งาน
- โรงงาน
- แย่ที่สุด
- จะ
- เขียน
- X
- ปี
- คุณ
- ของคุณ
- ด้วยตัวคุณเอง
- ลมทะเล