นักวิจัยจาก Netflix และ Google
ปัญหาที่เกิดจากภาวะแทรกซ้อนที่เกิดขึ้นในโปรโตคอล HTTP/2 ที่เกี่ยวข้องกับการใช้โครงสร้างไบนารี ระบบสำหรับการจำกัดการไหลของข้อมูลภายในการเชื่อมต่อ กลไกการจัดลำดับความสำคัญของการไหล และการมีอยู่ของข้อความควบคุมที่คล้ายกับ ICMP ที่ทำงานที่การเชื่อมต่อ HTTP/2 ระดับ (เช่น การตั้งค่า ping รีเซ็ต และโฟลว์) การใช้งานหลายอย่างไม่ได้จำกัดโฟลว์ของข้อความควบคุมอย่างเหมาะสม ไม่สามารถจัดการคิวลำดับความสำคัญได้อย่างมีประสิทธิภาพเมื่อประมวลผลคำขอ หรือใช้อัลกอริธึมควบคุมโฟลว์ที่ไม่เหมาะสม
วิธีการโจมตีที่ระบุส่วนใหญ่เกิดจากการส่งคำขอบางอย่างไปยังเซิร์ฟเวอร์ ซึ่งนำไปสู่การสร้างการตอบกลับจำนวนมาก หากไคลเอนต์ไม่อ่านข้อมูลจากซ็อกเก็ตและไม่ปิดการเชื่อมต่อ คิวการบัฟเฟอร์การตอบสนองบนฝั่งเซิร์ฟเวอร์จะเต็มอย่างต่อเนื่อง ลักษณะการทำงานนี้สร้างภาระบนระบบการจัดการคิวสำหรับการประมวลผลการเชื่อมต่อเครือข่าย และขึ้นอยู่กับคุณลักษณะการใช้งาน ส่งผลให้หน่วยความจำหรือทรัพยากร CPU ที่มีอยู่หมดลง
ช่องโหว่ที่ระบุ:
- CVE-2019-9511 (Data Dribble) - ผู้โจมตีร้องขอข้อมูลจำนวนมากไปยังหลายเธรดโดยจัดการขนาดหน้าต่างเลื่อนและลำดับความสำคัญของเธรด บังคับให้เซิร์ฟเวอร์จัดคิวข้อมูลในบล็อกขนาด 1 ไบต์
- CVE-2019-9512 (Ping Flood) - ผู้โจมตีวางยาพิษข้อความ Ping ผ่านการเชื่อมต่อ HTTP/2 อย่างต่อเนื่อง ส่งผลให้คิวภายในของการตอบกลับที่ส่งไปท่วมอีกด้านหนึ่ง
- CVE-2019-9513 (Resource Loop) - ผู้โจมตีสร้างเธรดคำขอหลายรายการและเปลี่ยนลำดับความสำคัญของเธรดอย่างต่อเนื่อง ทำให้แผนผังลำดับความสำคัญสับเปลี่ยน
- CVE-2019-9514 (รีเซ็ต Flood) - ผู้โจมตีสร้างหลายเธรด
และส่งคำขอที่ไม่ถูกต้องผ่านแต่ละเธรด ทำให้เซิร์ฟเวอร์ส่งเฟรม RST_STREAM แต่ไม่ยอมรับเฟรมเหล่านั้นให้เติมคิวการตอบกลับ - CVE-2019-9515 (Settings Flood) - ผู้โจมตีส่งสตรีมของเฟรม “SETTINGS” ที่ว่างเปล่า เพื่อตอบสนองต่อเซิร์ฟเวอร์ที่ต้องรับทราบการรับคำขอแต่ละรายการ
- CVE-2019-9516 (0-Length Headers Leak) – ผู้โจมตีส่งสตรีมของส่วนหัวที่มีชื่อ null และค่า null และเซิร์ฟเวอร์จัดสรรบัฟเฟอร์ในหน่วยความจำเพื่อจัดเก็บแต่ละส่วนหัว และไม่เผยแพร่จนกว่าเซสชันจะสิ้นสุด ;
- CVE-2019-9517 (การบัฟเฟอร์ข้อมูลภายใน) - ผู้โจมตีเปิดขึ้น
หน้าต่างเลื่อน HTTP/2 สำหรับเซิร์ฟเวอร์ในการส่งข้อมูลโดยไม่มีข้อจำกัด แต่ปิดหน้าต่าง TCP ไว้ เพื่อป้องกันไม่ให้ข้อมูลถูกเขียนลงในซ็อกเก็ตจริงๆ ถัดไป ผู้โจมตีจะส่งคำขอที่ต้องการการตอบสนองจำนวนมาก - CVE-2019-9518 (Empty Frames Flood) - ผู้โจมตีส่งสตรีมเฟรมประเภท DATA, HEADERS, CONTINUATION หรือ PUSH_PROMISE แต่มีเพย์โหลดว่างเปล่าและไม่มีแฟล็กการยุติโฟลว์ เซิร์ฟเวอร์จะใช้เวลาในการประมวลผลแต่ละเฟรม ซึ่งไม่สมส่วนกับแบนด์วิธที่ผู้โจมตีใช้
ที่มา: opennet.ru