ATKforged replyCACHEbank.com → 10.0.evilexample.com → real IPUSERgets poisoned answer

การเป็นพิษแคช DNS

10 นาทีอ่านความปลอดภัย

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

เนื้อหาบทความฉบับเต็มมีให้เป็นภาษาอังกฤษด้านล่าง

DNS พิษจากแคช (บางครั้งเรียกว่าการปลอมแปลง DNS) คือการโจมตีที่ผู้โจมตีแทรกข้อมูล DNS ปลอมเข้าไปในแคชของตัวแก้ไข การสืบค้นครั้งต่อไปสำหรับบันทึกที่ติดพิษจะส่งคืนคำตอบที่ผิดจนกว่าแคชจะหมดอายุ เนื่องจากตัวแก้ไขแคชเพื่อประสิทธิภาพการทำงานอย่างรุนแรง การทำพิษที่ประสบความสำเร็จอาจส่งผลกระทบต่อผู้ใช้จำนวนมากเป็นเวลาหลายชั่วโมง

วิธีการแก้ปัญหา DNS โดยปกติจะทำงานอย่างไร

โดยไม่ต้องผ่านโฟลว์ทั้งหมด (ดูบทความเซิร์ฟเวอร์ DNS ของเรา) ประเด็นสำคัญ: ตัวแก้ไขทำการสืบค้นไปยังเนมเซิร์ฟเวอร์อัปสตรีมและยอมรับการตอบกลับ DNS ที่ใช้ UDP สำหรับสิ่งนี้โดยเฉพาะ ไม่มีการจับมือกัน ไม่มีการตรวจสอบสิทธิ์ เพียงแค่ "ส่งข้อความค้นหา ยอมรับการตอบกลับที่ตรงกันครั้งแรก"

หากผู้โจมตีสามารถส่งการตอบกลับปลอมก่อนที่คำตอบที่ถูกต้องจะมาถึง ตัวแก้ไขจะแคชคำตอบปลอมไว้ สำหรับการสืบค้นทั้งหมดตลอดอายุการใช้งานแคช (โดยทั่วไปคือนาทีถึงชั่วโมง) ตัวแก้ไขจะส่งคืนข้อมูลที่เป็นพิษ

การโจมตี Kaminsky

ในปี 2551 Dan Kaminsky ได้เผยแพร่ส่วนขยายการทำลายล้างของการเป็นพิษแคช DNS แบบคลาสสิก การโจมตีครั้งแรกอาศัยการคาดเดารหัสธุรกรรม 16 บิต — 1 ในโอกาส 65,536 ซึ่งถือว่าไม่มาก จุดหักเหของ Kaminsky: ผู้โจมตีไม่จำเป็นต้องรอคำถามที่ถูกต้อง พวกเขาสามารถ trigger ได้โดยถามตัวแก้ไขเกี่ยวกับชื่อย่อยที่พวกเขาควบคุม จากนั้นแข่งการตอบกลับปลอมแปลงสำหรับบันทึกสิทธิ์ของโดเมนหลัก ด้วยการเพิ่มประสิทธิภาพเล็กน้อย การเอารัดเอาเปรียบจึงกลายเป็นจริง

การเปิดเผยได้กระตุ้นให้เกิดความพยายามในการแพตช์ร่วมกันในการใช้งาน DNS หลักทุกครั้งในปี 2008 การแก้ไข: สุ่มพอร์ตต้นทางที่ตัวแก้ไขใช้ เมื่อรวมกับรหัสธุรกรรม จะขยายเอนโทรปีเป็น ~32 บิต ซึ่งช่วยลดโอกาสของการปลอมแปลงที่ประสบความสำเร็จได้อย่างมาก

การป้องกันสมัยใหม่มีลักษณะอย่างไร

  • การสุ่มพอร์ตแหล่งที่มามาตรฐาน ตั้งแต่ปี 2008 เพิ่มเอนโทรปีเพียงพอที่การวางพิษของแคชโดยการคาดเดาจะกลายเป็น เป็นไปไม่ได้
  • DNS ผ่าน HTTPS (DoH) และ DNS ผ่าน TLS (DoT) การขนส่งแบบเข้ารหัสจะกำจัดการโจมตีแบบ on-path injection โดยสิ้นเชิง ตัวแก้ไขและสิทธิ์อนุญาตมีช่องสัญญาณที่เข้ารหัส
  • DNSSEC. ลายเซ็นการเข้ารหัสในบันทึก DNS ตรวจพบการปลอมแปลง การตอบกลับที่ปลอมแปลงไม่ผ่านการตรวจสอบลายเซ็น ดูบทความ DNSSEC ของเรา.
  • Source-IP filtering. Networks droping spoofed-source-address packets (BCP38 / source address validation) ทำให้การโจมตียากขึ้นโดยการจำกัดตำแหน่งที่การตอบกลับปลอมแปลงสามารถเกิดขึ้นได้
  • Resolver การแข็งตัว การเข้ารหัส 0x20 (การสุ่มตัวพิมพ์ในชื่อแบบสอบถาม) จะเพิ่มบิตของเอนโทรปี คุกกี้ EDNS0 ให้การป้องกันการปลอมแปลงเพิ่มเติม

การโจมตี DNS SAD ปี 2020

ในปี 2020 นักวิจัยได้เผยแพร่คลาสการโจมตีใหม่ที่เรียกว่า SAD DNS ซึ่งเลี่ยงผ่านการสุ่มพอร์ตในสถานการณ์เฉพาะโดยใช้ข้อมูลช่องทางด้านข้างเกี่ยวกับสแต็กเครือข่ายของตัวแก้ไข การโจมตีนี้ใช้ได้กับรีโซลเวอร์หลักๆ รวมถึงค่าเริ่มต้นของ Linux บางตัวด้วย Linux 5.10+ มีการบรรเทาปัญหา ระบบเก่ายังคงมีความเสี่ยง

หมวดหมู่ของ "พิษ DNS ได้รับการแก้ไขแล้ว" ยังไม่ค่อยมาถึงเลย การป้องกันดีขึ้น ช่องด้านข้างใหม่ปรากฏขึ้น แนวปฏิบัติที่ดีที่สุดสมัยใหม่ผสมผสานหลายเลเยอร์เข้าด้วยกัน

สิ่งนี้มีความหมายสำหรับผู้ใช้ปลายทาง

สำหรับผู้ใช้ทั่วไป:

  • ใช้ตัวแก้ไขสาธารณะหลัก (1.1.1.1, 8.8.8.8, 9.9.9.9) — พวกมันแข็งแกร่งขึ้นต่อการโจมตีที่รู้จักและตรวจสอบความถูกต้อง DNSSEC.
  • Use DoH หรือ DoT — เข้ารหัสการค้นหา เอาชนะผู้โจมตีบนเส้นทางส่วนใหญ่
  • HTTPS เองเป็นทางเลือก: แม้ว่า DNS จะอยู่และส่งคุณไปยัง IP ของผู้โจมตี ใบรับรอง TLS จะไม่ตรงกันและเบราว์เซอร์จะเตือน

เวกเตอร์การโจมตีที่สมจริงที่สุดสำหรับผู้ใช้ปลายทางไม่ใช่แคช พิษของตัวแก้ไขที่ทำงานได้ดี เป็นการจี้ตัวแก้ไขที่ระดับเราเตอร์หรือ ISP การกำหนดค่าอุปกรณ์ของคุณให้ใช้รีโซลเวอร์ที่ใช้งานได้ดี (พร้อมการส่งผ่านที่เข้ารหัส) จะปิดรูนั้น

สิ่งนี้มีความหมายอย่างไรสำหรับตัวดำเนินการ

สำหรับตัวดำเนินการ DNS:

  • เปิดใช้งาน DNSSEC บนเซิร์ฟเวอร์ที่เชื่อถือได้ของคุณ
  • ใช้รีโซลเวอร์ที่ตรวจสอบความถูกต้อง DNSSEC.
  • Patch ทันที การแก้ไขในปี 2008, การลดปัญหา SAD DNS และคำแนะนำใดๆ ในอนาคต
  • Iดำเนินการตรวจสอบที่อยู่ต้นทางหากคุณใช้งานเครือข่าย โครงสร้างพื้นฐาน

DNS มีความปลอดภัยมากกว่าเมื่อทศวรรษที่แล้ว ภัยคุกคามมีการพัฒนาไปพร้อมๆ กัน

คำถามที่พบบ่อย

ฉันสามารถได้รับผลกระทบจากพิษของแคชได้หรือไม่?
ทางอ้อม. โดยทั่วไปแล้วผู้ใช้จะไม่ใช้งานแคชที่ติดพิษ หากตัวแก้ไข DNS ของคุณถูกบุกรุก คุณจะเห็นคำตอบที่ผิดสำหรับสิ่งที่เป็นพิษ การใช้รีโซลเวอร์ชุบแข็งหลัก (1.1.1.1, 8.8.8.8) ช่วยลดความเสี่ยงได้อย่างมาก
DNSSEC ป้องกันสิ่งนี้ได้อย่างไร
บันทึกที่ลงนามโดยโดเมนที่เชื่อถือได้สามารถตรวจสอบความถูกต้องด้วยการเข้ารหัสได้ คำตอบที่ปลอมแปลงไม่ผ่านการตรวจสอบและถูกปฏิเสธ DNSSEC มีมาตั้งแต่ปี 1997 แต่การนำไปใช้ไม่เท่ากัน ตัวแก้ไขหลักจะตรวจสอบ ส่วนตัวแก้ไขที่เล็กกว่ามักจะไม่ตรวจสอบ
DNS บน HTTPS เหมือนกับ DNSSEC หรือไม่
ไม่ DNSSEC เพิ่มลายเซ็นลงในบันทึก เพื่อยืนยันความถูกต้อง DoH เข้ารหัสการส่งผ่านระหว่างไคลเอ็นต์และรีโซลเวอร์ ป้องกันการดักฟังหรือการแทรกแซงบนเส้นทาง พวกมันเสริมกัน คุณสามารถมีอย่างใดอย่างหนึ่งหรือทั้งสองอย่าง
ความแตกต่างระหว่างการเป็นพิษต่อแคชและการไฮแจ็ก DNS คืออะไร
พิษจากแคชจะแทรกข้อมูลที่ไม่ดีลงในแคชของตัวแก้ไขผ่านการโจมตีระดับเครือข่าย การไฮแจ็ก DNS ครอบคลุมการเปลี่ยนแปลงตัวแก้ไขอย่างกว้างขวาง (การประนีประนอมของเราเตอร์ แอปที่เป็นอันตราย การเข้าครอบครองบัญชีผู้รับจดทะเบียน) การเป็นพิษจากแคชเป็นเทคนิคหนึ่งเฉพาะในหมวดหมู่การไฮแจ็กที่กว้างกว่า
มีเหตุการณ์พิษจากแคชที่มีชื่อเสียงหรือไม่
พิษร้ายแรงแบบคามินสกี้ไม่เคยเกิดขึ้นจริงเพราะแพตช์ถูกใช้งานเร็วพอ พิษเล็กๆ น้อยๆ เกิดขึ้น — เหตุการณ์ในปี 2019 ที่ส่งผลกระทบต่อโครงสร้างพื้นฐาน DNS ของจีนบางส่วนได้เปลี่ยนเส้นทางบริการหลักๆ ของสหรัฐฯ สำหรับผู้ใช้ในจีนในช่วงสั้นๆ การโจมตี DNS ขนาดใหญ่ส่วนใหญ่ตั้งแต่ปี 2551 เกี่ยวข้องกับการจี้ BGP หรือการประนีประนอมกับผู้รับจดทะเบียน แทนที่จะเป็นการวางยาพิษแคชแบบคลาสสิก
อธิบายพิษแคช DNS: เมื่อตัวแก้ไขอยู่