สัปดาห์ที่แล้วเราเขียนเกี่ยวกับกลุ่มของ ข้อบกพร่องในการจัดการหน่วยความจำ ที่ได้รับการแก้ไขในการอัปเดตความปลอดภัยล่าสุดของไลบรารีการเข้ารหัส OpenSSL ที่เป็นที่นิยม
นอกจากข้อผิดพลาดของหน่วยความจำแล้ว เรายังรายงานเกี่ยวกับข้อบกพร่องที่เรียกว่า CVE-2022-4304: กำหนดเวลา Oracle ในการถอดรหัส RSA.
ในจุดบกพร่องนี้ ส่งข้อความเข้ารหัสเดียวกันซ้ำแล้วซ้ำอีกที่เซิร์ฟเวอร์ แต่ปรับเปลี่ยนการเติมที่ส่วนท้ายของข้อมูลเพื่อทำให้ข้อมูลไม่ถูกต้อง และด้วยเหตุนี้จึงก่อให้เกิดพฤติกรรมที่คาดเดาไม่ได้บางประเภท...
…จะใช้เวลาไม่สม่ำเสมอ สมมติว่าคุณอยู่ใกล้กับเป้าหมายบนเครือข่าย ซึ่งคุณสามารถเดาได้อย่างน่าเชื่อถือว่ากระบวนการถ่ายโอนข้อมูลจะใช้เวลานานแค่ไหน
ข้อมูลทั้งหมดไม่ได้ประมวลผลอย่างเท่าเทียมกัน
หากคุณปิดคำขอ กำหนดเวลาที่คำตอบใช้ และลบเวลาที่ใช้ในการรับ-ส่งข้อมูลเครือข่ายในระดับต่ำ คุณจะรู้ว่าเซิร์ฟเวอร์ใช้เวลานานเท่าใดในการคำนวณภายในเพื่อประมวลผลคำขอ .
แม้ว่าคุณจะไม่แน่ใจว่าเครือข่ายใช้เวลาหมดไปเท่าใด คุณก็สามารถมองหาการเปลี่ยนแปลงของเวลาไป-กลับได้โดยการเริ่มคำขอจำนวนมากและรวบรวมตัวอย่างจำนวนมาก
หากเครือข่ายมีความน่าเชื่อถือมากพอที่จะสันนิษฐานได้ว่าค่าโสหุ้ยของเครือข่ายส่วนใหญ่คงที่ คุณอาจใช้วิธีการทางสถิติเพื่อสรุปได้ว่าการแก้ไขข้อมูลประเภทใดทำให้เกิดความล่าช้าในการประมวลผลพิเศษประเภทใด
จากนี้ คุณสามารถอนุมานบางอย่างเกี่ยวกับโครงสร้างหรือแม้แต่เนื้อหาของข้อมูลต้นฉบับที่ไม่ได้เข้ารหัสซึ่งควรเก็บเป็นความลับในคำขอซ้ำๆ แต่ละครั้ง
แม้ว่าคุณจะแยกข้อความธรรมดาได้เพียงหนึ่งไบต์ แต่ก็ไม่ควรเกิดขึ้น
จึงเรียกว่า การโจมตีเวลา การจัดเรียงแบบนี้มักสร้างปัญหาได้เสมอ แม้ว่าคุณอาจต้องส่งแพ็กเก็ตปลอมหลายล้านแพ็กเก็ต และใช้เวลาทั้งหมดเพื่อให้มีโอกาสกู้คืนข้อมูลเพลนเท็กซ์เพียงหนึ่งไบต์...
…เพราะเครือข่ายเร็วกว่า คาดเดาได้มากกว่า และสามารถรองรับโหลดได้มากกว่าเมื่อไม่กี่ปีที่ผ่านมา
คุณอาจคิดว่าแพ็กเก็ตหลอกลวงหลายล้านรายการส่งสแปมใส่คุณ พูดได้ว่าชั่วโมงถัดไปจะโดดเด่นเหมือนนิ้วหัวแม่มือจัดเรียงข้อมูล
แต่ “หนึ่งล้านแพ็คเก็ตต่อชั่วโมงมากกว่าหรือน้อยกว่าปกติ” นั้นไม่ใช่รูปแบบที่ใหญ่เป็นพิเศษอีกต่อไป
บั๊ก "oracle" ที่คล้ายกันใน GnuTLS
บุคคลเดียวกันที่รายงานข้อผิดพลาดเกี่ยวกับเวลาบั๊กที่แก้ไขล่าสุดใน OpenSSL ก็รายงานเช่นกัน ข้อบกพร่องที่คล้ายกันใน GnuTLS ในเวลาเดียวกัน
อันนี้มีตัวระบุข้อบกพร่อง CVE-2023-0361.
แม้ว่า GnuTLS จะไม่ได้รับความนิยมหรือใช้กันอย่างแพร่หลายเท่ากับ OpenSSL แต่คุณอาจมีโปรแกรมจำนวนหนึ่งในพื้นที่ไอทีของคุณ หรือแม้กระทั่งในคอมพิวเตอร์ของคุณเอง ที่ใช้หรือรวมโปรแกรมนั้นไว้ด้วย อาจรวมถึง FFmpeg, GnuPG, Mplayer, QEMU , Rdesktop, Samba, Wget และ Wireshark
แดกดันข้อบกพร่องด้านเวลาใน GnuTLS ปรากฏในโค้ดที่ควรบันทึกข้อผิดพลาดการโจมตีด้วยเวลาตั้งแต่แรก
ดังที่คุณเห็นได้จากความแตกต่างของรหัส (diff) ด้านล่าง โปรแกรมเมอร์ทราบว่าเงื่อนไขใดๆ (if ... then
) การดำเนินการที่ใช้ในการตรวจสอบและจัดการกับข้อผิดพลาดในการถอดรหัสอาจทำให้เกิดการเปลี่ยนแปลงของเวลา เนื่องจากโดยทั่วไปแล้ว CPU จะใช้เวลาที่แตกต่างกัน ขึ้นอยู่กับว่าโค้ดของคุณไปในลักษณะใดหลังจากคำสั่ง "branch"
(โดยเฉพาะอย่างยิ่งสำหรับสาขาที่มักจะไปทางหนึ่งและไม่ค่อยไปอีกทางหนึ่ง เนื่องจาก CPU มักจะจดจำหรือแคช โค้ดที่ทำงานซ้ำๆ เพื่อปรับปรุงประสิทธิภาพ จึงทำให้โค้ดที่ใช้ไม่บ่อยทำงานช้าลงอย่างเห็นได้ชัด)
แต่โปรแกรมเมอร์ยังคงต้องการบันทึกว่าอาจมีการโจมตีเกิดขึ้น ซึ่งจะเกิดขึ้นหาก if (ok)
การทดสอบข้างต้นล้มเหลวและแตกแขนงเป็น else { ... }
มาตรา.
ณ จุดนี้รหัสเรียก _gnutls_debug_log()
ซึ่งอาจต้องใช้เวลาพอสมควรในการทำงาน
ดังนั้น coder จึงทำการโทรโดยเจตนา _gnutls_no_log()
ใน then { ... }
ส่วนหนึ่งของโค้ด ซึ่งแสร้งทำเป็นบันทึก "การโจมตี" เมื่อไม่มี เพื่อพยายามเพิ่มเวลาที่โค้ดใช้ในทิศทางใดทิศทางหนึ่ง if (ok)
คำแนะนำสาขาสามารถใช้
อย่างไรก็ตาม เห็นได้ชัดว่าเส้นทางรหัสทั้งสองนั้นไม่ใกล้เคียงกันเพียงพอในเวลาที่ใช้หมด (หรืออาจเป็นไฟล์ _gnutls_debug_log()
การทำงานด้วยตัวมันเองนั้นไม่สอดคล้องกันเพียงพอในการจัดการกับข้อผิดพลาดประเภทต่างๆ) และผู้โจมตีสามารถเริ่มแยกแยะการถอดรหัสลับได้หลังจากพยายามมากกว่าหนึ่งล้านครั้ง
จะทำอย่างไร?
หากคุณเป็นโปรแกรมเมอร์: การแก้ไขข้อบกพร่องที่นี่ทำได้ง่ายและเป็นไปตามหลักการ "น้อยแต่มาก"
โค้ดสีชมพูด้านบนซึ่งถือว่าไม่ได้ให้ข้อมูลการตรวจจับการโจมตีที่มีประโยชน์อย่างยิ่ง ก็ถูกลบออกไปเพียงเพราะโค้ดที่ไม่มีอยู่นั้นไม่สามารถรวบรวมได้โดยไม่ตั้งใจ ไม่ว่าการตั้งค่าบิลด์ของคุณจะเป็นเช่นไร...
…และโค้ดที่ไม่ได้คอมไพล์จะไม่สามารถทำงานได้ ไม่ว่าจะโดยบังเอิญหรือการออกแบบ
หากคุณเป็นผู้ใช้ GnuTLS: รุ่นที่เพิ่งเปิดตัว 3.7.9 และ “รสชาติของผลิตภัณฑ์ใหม่” 3.8.0 มีการแก้ไขนี้พร้อมกับสิ่งอื่น ๆ รวมอยู่ด้วย
หากคุณใช้ Linux distro ให้ตรวจหาการอัปเดตของ GnuTLS เวอร์ชันไลบรารีที่ใช้ร่วมกันที่จัดการจากส่วนกลางที่คุณมี รวมถึงแอปที่นำเวอร์ชันของตนเองมาด้วย
บน Linux ให้ค้นหาไฟล์ด้วยชื่อ libgnutls*.so
เพื่อค้นหาไลบรารีที่ใช้ร่วมกันที่อยู่รอบๆ และค้นหา gnutls-cli
เพื่อค้นหาสำเนาของโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่มักจะรวมอยู่ในไลบรารี
คุณสามารถเรียกใช้ gnutls-cli -vv
เพื่อดูว่ารุ่นไหนของ libgnutls
มันเชื่อมโยงแบบไดนามิกกับ:
$ gnutls-cli -vv gnutls-cli 3.7.9 <-- distro Linux ของฉันได้รับการอัปเดตเมื่อวันศุกร์ที่แล้ว (2023-02-10)
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- เพลโตบล็อคเชน Web3 Metaverse ข่าวกรอง ขยายความรู้. เข้าถึงได้ที่นี่.
- ที่มา: https://nakedsecurity.sophos.com/2023/02/13/serious-security-gnutls-follows-openssl-fixes-timing-attack-bug/
- 1
- 7
- 70
- 9
- a
- สามารถ
- เกี่ยวกับเรา
- ข้างบน
- แน่นอน
- อุบัติเหตุ
- หลังจาก
- กับ
- ทั้งหมด
- เสมอ
- จำนวน
- และ
- คำตอบ
- ปรากฏ
- ปพลิเคชัน
- รอบ
- โจมตี
- ผู้เขียน
- รถยนต์
- background-image
- เพราะ
- ด้านล่าง
- ชายแดน
- ด้านล่าง
- สาขา
- สาขา
- นำมาซึ่ง
- Bug
- เป็นโรคจิต
- สร้าง
- พวง
- แคช
- โทรศัพท์
- โทร
- สามารถ
- สาเหตุที่
- ศูนย์
- โอกาส
- ตรวจสอบ
- การตรวจสอบ
- ปิดหน้านี้
- รหัส
- coder
- การเก็บรวบรวม
- สี
- การคำนวณ
- คอมพิวเตอร์
- คงเส้นคงวา
- คงที่
- ถูกใช้
- เนื้อหา
- ได้
- หน้าปก
- ข้อมูล
- การซื้อขาย
- ความล่าช้า
- ทั้งนี้ขึ้นอยู่กับ
- ออกแบบ
- การตรวจพบ
- ความแตกต่าง
- ต่าง
- ทิศทาง
- แสดง
- เห็นความแตกต่าง
- ขนานนามว่า
- แบบไดนามิก
- แต่ละ
- ทั้ง
- ที่มีการเข้ารหัส
- การเข้ารหัสลับ
- พอ
- ความผิดพลาด
- ข้อผิดพลาด
- โดยเฉพาะอย่างยิ่ง
- ที่ดิน
- แม้
- พิเศษ
- สารสกัด
- ล้มเหลว
- เร็วขึ้น
- สองสาม
- ไฟล์
- หา
- ธรรมชาติ
- ยิง
- ชื่อจริง
- แก้ไขปัญหา
- การแก้ไข
- ข้อบกพร่อง
- ตาม
- ดังต่อไปนี้
- วันศุกร์
- ราคาเริ่มต้นที่
- ฟังก์ชัน
- โดยทั่วไป
- ให้
- Gnutls
- ไป
- บริเวณ
- การจัดการ
- เกิดขึ้น
- ที่เกิดขึ้น
- ความสูง
- โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม
- โฉบ
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- อย่างไรก็ตาม
- HTTPS
- ระบุ
- ปรับปรุง
- in
- ประกอบด้วย
- รวม
- รวมทั้ง
- ภายใน
- IT
- แค่หนึ่ง
- ทราบ
- ใหญ่
- ส่วนใหญ่
- ชื่อสกุล
- ล่าสุด
- ห้องสมุด
- ห้องสมุด
- Line
- ที่เชื่อมโยง
- ลินุกซ์
- โหลด
- โหลด
- นาน
- ดู
- ทำ
- การทำ
- การจัดการ
- หลาย
- ขอบ
- ความกว้างสูงสุด
- หน่วยความจำ
- ข่าวสาร
- วิธีการ
- อาจ
- ล้าน
- ล้าน
- ข้อผิดพลาด
- ข้อมูลเพิ่มเติม
- ชื่อ
- จำเป็นต้อง
- เครือข่าย
- ข้อมูลเครือข่าย
- เครือข่าย
- เครือข่าย
- ถัดไป
- ปกติ
- จำนวน
- ONE
- OpenSSL
- การดำเนินการ
- คำพยากรณ์
- ใบสั่ง
- เป็นต้นฉบับ
- อื่นๆ
- ผลิตภัณฑ์อื่นๆ
- ของตนเอง
- แพ็คเก็ต
- ส่วนหนึ่ง
- โดยเฉพาะ
- พอล
- การปฏิบัติ
- บางที
- คน
- สถานที่
- ข้อความธรรมดา
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- จุด
- ยอดนิยม
- ตำแหน่ง
- โพสต์
- ทายได้
- หลัก
- อาจ
- กระบวนการ
- การประมวลผล
- ก่อ
- ผลิตภัณฑ์
- โปรแกรมเมอร์
- โปรแกรม
- การกู้คืน
- ไม่คำนึงถึง
- น่าเชื่อถือ
- จำ
- ซ้ำแล้วซ้ำอีก
- ซ้ำแล้วซ้ำเล่า
- รายงาน
- ขอ
- การร้องขอ
- อาร์เอส
- วิ่ง
- วิ่ง
- แซมบ้า
- เดียวกัน
- ค้นหา
- ลับ
- Section
- ความปลอดภัย
- การปรับปรุงความปลอดภัย
- ไม่ค่อยจะ
- ร้ายแรง
- ที่ใช้ร่วมกัน
- คล้ายคลึงกัน
- ง่าย
- ง่ายดาย
- So
- ของแข็ง
- บาง
- บางสิ่งบางอย่าง
- ยืน
- ทางสถิติ
- ยังคง
- โครงสร้าง
- ควร
- SVG
- เอา
- ใช้เวลา
- เป้า
- ทดสอบ
- พื้นที่
- ของพวกเขา
- คิด
- เวลา
- ครั้ง
- ระยะเวลา
- ไปยัง
- ด้านบน
- โอน
- การเปลี่ยนแปลง
- โปร่งใส
- จริง
- ทายไม่ถูก
- บันทึก
- การปรับปรุง
- URL
- ใช้
- ผู้ใช้งาน
- ประโยชน์
- ต่างๆ
- รุ่น
- อยาก
- สัปดาห์
- อะไร
- ว่า
- ที่
- ในขณะที่
- WHO
- งาน
- จะ
- ปี
- ของคุณ
- ลมทะเล