การเป็นพิษแคช DNS
พิษจากแคช 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 หรือการประนีประนอมกับผู้รับจดทะเบียน แทนที่จะเป็นการวางยาพิษแคชแบบคลาสสิก