ช่องโหว่ KeyTrap และ NSEC3 ที่ส่งผลต่อการใช้งาน DNSSEC ส่วนใหญ่

พบช่องโหว่สองจุดในการใช้งานโปรโตคอล DNSSEC หลายรูปแบบ ซึ่งส่งผลกระทบต่อรีโซลเวอร์ DNS ได้แก่ BIND, PowerDNS, dnsmasq, Knot Resolver และ Unbound ช่องโหว่เหล่านี้เปิดโอกาสให้รีโซลเวอร์ DNS ที่ทำการตรวจสอบ DNSSEC ล้มเหลว โดยสร้างภาระงาน CPU สูง ซึ่งรบกวนการประมวลผลคิวรีอื่นๆ ในการโจมตี เพียงส่งคิวรีไปยังรีโซลเวอร์ DNS ที่เปิดใช้งาน DNSSEC ซึ่งจะส่งผลให้เกิดคำขอไปยังโซน DNS ที่สร้างขึ้นเป็นพิเศษบนเซิร์ฟเวอร์ของผู้โจมตี

ปัญหาที่ระบุ:

  • CVE-2023-50387 (ชื่อรหัส KeyTrap) – เมื่อเข้าถึงโซน DNS ที่สร้างขึ้นเป็นพิเศษ จะทำให้เกิดการปฏิเสธการให้บริการ (Denial of Service) เนื่องจากภาระงานของ CPU ที่สูงและการตรวจสอบ DNSSEC ที่ยาวนาน ในการโจมตีนี้ โซนโดเมนที่มีการตั้งค่าที่เป็นอันตรายจะต้องโฮสต์อยู่บนเซิร์ฟเวอร์ DNS ที่ผู้โจมตีควบคุม จากนั้นจึงเข้าถึงโดยเซิร์ฟเวอร์ DNS แบบเรียกซ้ำ ซึ่งผู้โจมตีจะปฏิเสธการให้บริการ

    การตั้งค่าที่เป็นอันตรายเกี่ยวข้องกับการใช้คีย์ที่ขัดแย้งกัน ระเบียน RRSET และลายเซ็นดิจิทัลสำหรับโซน การพยายามตรวจสอบโดยใช้คีย์เหล่านี้ส่งผลให้เกิดการดำเนินการที่ยาวนานและใช้ทรัพยากรมาก ซึ่งอาจทำให้ CPU โอเวอร์โหลดจนหมดและขัดขวางการประมวลผลคำขออื่นๆ (ตัวอย่างเช่น การโจมตี BIND รายงานว่าหยุดการประมวลผลคำขออื่นๆ เป็นเวลา 16 ชั่วโมง)

  • CVE-2023-50868 (ชื่อรหัส NSEC3) เป็นช่องโหว่การปฏิเสธการให้บริการ (Denial of Service) เนื่องจากมีค่าใช้จ่ายในการคำนวณสูงเมื่อคำนวณค่าแฮชในเรกคอร์ด NSEC3 (Next Secure v3) เมื่อประมวลผลการตอบสนอง DNSSEC ที่สร้างขึ้นเป็นพิเศษ วิธีการโจมตีนี้คล้ายกับช่องโหว่แรก ยกเว้นว่าชุดเรกคอร์ด NSEC3 RRSET ที่สร้างขึ้นเป็นพิเศษจะถูกสร้างขึ้นบนเซิร์ฟเวอร์ DNS ของผู้โจมตี

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

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

ช่องโหว่ได้รับการแก้ไขแล้วในการอัปเดตของ Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver (5.7.1), dnsmasq (2.90) และ BIND (9.16.48, 9.18.24 และ 9.19.21) สามารถตรวจสอบสถานะการแก้ไขช่องโหว่ในระบบปฏิบัติการเหล่านี้ได้ที่หน้าเว็บเหล่านี้: Debian, UbuntuSUSE, RHEL, Fedora, Arch LinuxGentoo, Slackware, NetBSD, FreeBSD

ช่องโหว่เพิ่มเติมหลายรายการได้รับการแก้ไขในเซิร์ฟเวอร์ BIND DNS เวอร์ชัน 9.16.48, 9.18.24 และ 9.19.21:

  • CVE-2023-4408 - การแยกวิเคราะห์ข้อความ DNS ขนาดใหญ่จะส่งผลให้ CPU โหลดสูง
  • CVE-2023-5517 — คำขอโซนย้อนกลับที่สร้างขึ้นเป็นพิเศษอาจทำให้เกิดการขัดข้องเนื่องจากการตรวจสอบการยืนยัน ปัญหานี้เกิดขึ้นเฉพาะในการกำหนดค่าที่เปิดใช้งานการตั้งค่า "nxdomain-redirect" เท่านั้น
  • CVE-2023-5679 – การแก้ไขโฮสต์แบบเรียกซ้ำอาจทำให้เกิดการหยุดทำงานเนื่องจากการตรวจสอบการยืนยันบนระบบที่รองรับ DNS64 และเปิดใช้งาน "serve-stale" (การตั้งค่า เปิดใช้งาน stale-cache และเปิดใช้งาน stale-answer)
  • CVE-2023-6516 – แบบสอบถามแบบเรียกซ้ำที่สร้างขึ้นเป็นพิเศษอาจทำให้กระบวนการมีหน่วยความจำไม่เพียงพอ

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster