|
ชื่อ : Multiple Remote
Vulnerabilities in BIND4 and BIND8
ค้นพบเมื่อ : 12 พฤศจิกายน 2545
ชนิด : ช่องโหว่ของโปรแกรม
กล่าวนำ
DNS ถือได้ว่าเป็นองค์ประกอบหลักอย่างหนึ่งของการติดต่อสื่อสารของอินเทอร์เน็ตในปัจจุบัน
หน้าที่หลักของ DNS คือการแปลงหมายเลขไอพีให้เป็นชื่อโดเมน หรือแปลงชื่อโดเมนให้เป็นหมายเลขไอพี
โปรแกรม Bind เป็นโปรแกรมที่นิยมใช้สำหรับการติดตั้ง
DNS กันมากที่สุด เนื่องจาก DNS เป็นระบบที่ให้บริการแบบเปิดกว้าง
(Public Service) ดังนั้นย่อมมีความเสี่ยงสูงต่อบุคคลภายนอกที่ต้องการบุกรุกผ่าน
DNS ช่องโหว่เดิมของ Bind ที่อันตราย เช่น CERT
advisory CA-2002-15 เป็นต้น ช่องโหว่ใหม่ของโปรแกรมในครั้งมีอยู่สามจุดคือ
BIND SIG Cached RR Overflow Vulnerability, BIND OPT DoS และ BIND
SIG Expiry Time DoS โดยช่องโหว่แต่ละแบบจะมีผลต่อโปรแกรม Bind ในเวอร์ชั่นที่ต่างกัน
คำอธิบายเพิ่มเติม
จากที่กล่าวมาแล้วว่าช่องโหว่ของ Bind ครั้งนี้มี 3 จุด รายละเอียดมีดังนี้
- BIND SIG Cached RR Overflow Vulnerability
เป็นช่องโหว่ประเภทบัฟเฟอร์โอเวอร์โฟรว์ของโปรแกรม
BIND เวอร์ขั่น 4 และ 8 มีผลทำให้ผู้บุกรุกสามารถเข้าถึง DNS จากภายนอก
หลังจากผู้บุกรุกเข้าถึง DNS ผ่านช่องโหว่นี้ ผู้บุกรุกมีสิทธิที่จะปรับเปลี่ยน
หรือเปลี่ยนแปลงฐานข้อมูลต่างๆ ของ DNS ช่องโหว่นี้เกิดขึ้นเมื่อ
Bind มีการตั้งค่า recursion ให้ทำงาน โดยทั่วไประบบของ Bind จะตั้งค่า
recursion ให้ทำงานตั้งแต่เริ่มต้น การบุกรุกเกิดขึ้นได้เมื่อผู้บุกรุกสร้าง
DNS เป็นของตน หรือเป็น DNS ที่ถูกบุกรุกและเป็นเจ้าของโดยผู้บุกรุก
หลังจากนั้นผู้บุกรุกจะส่งข้อมูลการร้องขอที่มีรูปแบบเป็น SIG resource
records (RR) และตามมาด้วยข้อมูลจำนวนมากที่มีจุดมุ่งหมายในการสร้างบัฟเฟอร์โอเวอร์โฟรว์
หมายเหตุ: การตั้งค่า recursion ใน Bind นั้นมีผลดังนี้คือ
เมื่อมีการร้องขอการชื่อโดเมน หรือไอพีจากเครื่องลูกข่าย DNS จะทำการค้นหาข้อมูลจากฐานข้อมูลของตนเอง
หากโดเมนนั้นเป็นความรับผิดชอบของตน แต่หากเป็นของ DNS อื่น โปรแกรม
Bind ก็จะร้องขอการค้นหาไปยัง DNS นั้นๆ ตามปรกติ แต่หากตั้งค่าไม่ให้มีการใช้
recursion ระบบจะทำการค้นหาชื่อโดเมน หรือไอพีจากแคช(Cache) ก่อน
หากไม่พบ ระบบจะทำการค้นหาในแบบเดียวกันกับแบบแรก
การตั้งค่า recursion ใน BIND เวอร์ชั่น 8 จะมีความเสี่ยงต่อการถูกโจมตีแบบ
Denial of Service ได้ โดยเครื่องลูกข่ายร้องขอโดเมนย่อยที่ไม่มีอยู่จริงให้กับ
DNS ที่มีช่องโหว่นี้ ผลของการค้นหาโดเมนย่อยที่ไม่มีอยู่จริงคือ
ระบบ Bind จะส่งข้อมูลแบบ OPT resource record ผ่านเพ็กเก็ต UDP
ที่มีขนาดใหญ่ ซึ่งข้อมูลขนาดใหญ่นี้เป็นสาเหตุให้เกิดการบุกรุกแบบ
DoS ขึ้น
การโจมตีแบบ DoS สามารถเกิดขึ้นได้อีกรูปแบบหนึ่งกับการตั้งค่า
recursion ของ BIND เวอร์ชั่น 8 การโจมตีแบบนี้เกิดขึ้นจากการหยุดการร้องขอที่กระทำต่อแคช
ของ SIG RR อย่างทันทีทันใด ซึ่งมีผลทำให้เกิดการโจมตีแบบ DoS ได้เช่นกัน
ผลกระทบที่ได้รับ
ถ้าเป็นการโจมตีแบบ DoS ระบบจะหยุดทำงานไปชั่วคราว แต่หากเป็นการบุกรุกผ่านช่องโหว่บัฟเฟอร์โอเวอร์โฟรว์
ผู้บุกรุกสามารถแก้ไข หรือปรับปรุงฐานข้อมูลของ DNS ได้
ระบบที่ได้รับผลกระทบ
สำหรับการบุกรุกแบบ BIND SIG Cached RR Overflow Vulnerability
- BIND 8, versions up to and including 8.3.3-REL
- BIND 4, versions up to and including 4.9.10-REL
สำหรับการบุกรุกแบบ BIND OPT DoS
- BIND 8, versions 8.3.0 up to and including 8.3.3-REL
สำหรับการบุกรุกแบบ BIND SIG Expiry Time DoS
- BIND 8, versions up to and including 8.3.3-REL
วิธีแก้ปัญหา
วิธีการป้องกัน
ยกเลิกการใช้ recursion
โดยสำหรับ BIND เวอร์ชั่น 8 นั้น ให้แก้ไขไฟล์ named.conf
เป็น
- options {
recursion no;
};
และสำหรับ BIND เวอร์ชั่น 4 นั้น ให้แก้ไขไฟล์ named.boot
ให้เป็น
options no-recursion
เอกสารอ้างอิง
http://bvlive01.iss.net/issEn/delivery/xforce/alertdetail.jsp?oid=21469
http://www.isc.org/products/BIND/bind-security.html
เผยแพร่โดย ThaiCERT เมื่อ 13 พฤศจิกายน
2545 14.00
ปรับปรุงล่าสุดโดย ThaiCERT เมื่อ 13 พฤศจิกายน 2545 14.00
|