มีการระบุช่องโหว่ DoS 2 รายการในการใช้งานโปรโตคอล HTTP/8 ต่างๆ

นักวิจัยจาก Netflix และ Google เปิดเผย มีช่องโหว่แปดช่องโหว่ในการใช้งานโปรโตคอล HTTP/2 ต่างๆ ที่สามารถทำให้เกิดการปฏิเสธการให้บริการโดยการส่งสตรีมคำขอเครือข่ายในลักษณะใดลักษณะหนึ่ง ปัญหาดังกล่าวส่งผลกระทบต่อเซิร์ฟเวอร์ HTTP ส่วนใหญ่ที่รองรับ HTTP/2 ในระดับหนึ่ง และส่งผลให้ผู้ปฏิบัติงานมีหน่วยความจำไม่เพียงพอหรือสร้างภาระงาน CPU มากเกินไป การอัปเดตที่กำจัดช่องโหว่มีอยู่แล้วใน nginx 1.16.1/1.17.3 и เอชทูโอ 2, แต่สำหรับตอนนี้ ไม่พร้อมใช้งาน สำหรับ Apache httpd และ ผลิตภัณฑ์อื่น.

ปัญหาที่เกิดจากภาวะแทรกซ้อนที่เกิดขึ้นในโปรโตคอล 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

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