|
CERT Advisory CA-2007-17 (Technical Cyber Security
Alert TA07-103A)
Microsoft Windows DNS RPC Buffer Overflow
ต้นฉบับ: http://www.us-cert.gov/cas/techalerts/TA07-103A.html
เรียบเรียงโดย: ณัฐพงษ์
แสงเลิศศิลปชัย
ระบบที่ได้รับผลกระทบ
- Microsoft Windows 2003 Server
- Microsoft Windows 2000 Server
กล่าวโดยทั่วไป
ช่องโหว่ประเภทหน่วยความจำล้นในส่วนจัดการการเรียกโพรซีเจอร์จากระยะไกล
(Remote Procedure Call: RPC) ซึ่งถูกใช้โดย Microsoft Windows Domain
Name Service (DNS) สามารถใช้ในการบุกรุกระบบได้ ช่องโหว่นี้อนุญาตให้ผู้บุกรุกจากระยะไกลสั่งรันโค้ดด้วยสิทธิของ
SYSTEM ได้
I. คำอธิบาย
มีช่องโหว่หน่วยความจำสแต็กล้นในส่วนจัดการ RPC ของ
Microsoft Windows DNS ช่องโหว่นี้สามารถถูกบุกรุกได้โดยการส่งแพ็กเก็ต
RPC ที่ถูกสร้างขึ้นเพื่อบุกรุกไปยังส่วนจัดการ RPC โดยส่วนจัดการนี้ทำงานผ่านพอร์ตที่ระบุโดยสุ่มระหว่าง
1024/tcp ถึง 5000/tcp
หมายเหตุ ช่องโหว่นี้ไม่ถูกบุกรุกผ่านบริการ DNS name
resolution (พอร์ต 53/udp)
อ่านรายละเอียดเพิ่มเติมของช่องโหว่เหล่านี้ได้จากบันทึกช่องโหว่หมายเลข
VU#555920 และ
Microsoft Security Advisory (935964)
ปัจจุบันช่องโหว่สามารถใช้ในการบุกรุกระบบได้
II. ผลกระทบ
ผู้บุกรุกจากระยะไกลสามารถสั่งรันโค้ดด้วยสิทธิของ
SYSTEM หรือทำให้ระบบไม่สามารถทำงานได้
III วิธีแก้ไข
ขณะนี้ยังไม่มีการแก้ไขที่สมบูรณ์สำหรับช่องโหว่นี้
แต่มีการแก้ไขชั่วคราวซึ่งช่วยลดโอกาสในการบุกรุกจนกว่าจะมีโปรแกรมแก้ไขช่องโหว่
สิ่งสำคัญในการจัดการกับช่องโหว่นี้คือต้องเข้าใจการปรับแต่งค่า (configuration)
ระบบเครือข่ายขององค์กรและความจำเป็นในการใช้บริการของระบบ ก่อนตัดสินใจเปลี่ยนแปลงส่วนใดๆ
ยกตัวอย่างเช่น การยกเลิกส่วน RPC อาจทำให้ผู้ดูแลระบบไม่สามารถเข้าจัดการ
Microsoft Windows DNS server จากระยะไกลได้ ดังนั้นควรพิจารณาก่อนปฏิบัติตามการแก้ไขชั่วคราวตามวิธีการด้านล่างนี้:
ยกเลิกส่วน RPC ซึ่งถูกใช้โดย Microsoft Windows
DNS server
การแก้ไขชั่วคราวนี้เป็นการปรับค่าบริการจัดการ DNS
ให้ทำงานเฉพาะส่วนการเรียกโพรซีเจอร์จากภายใน (Local Procedure Call:
LPC) วิธีนี้ช่วยป้องกันการบุกรุกด้วยช่องโหว่ แต่ก็ปิดการจัดการระบบจากระยะไกลผ่าน
RPC ซึ่งถูกใช้โดย Microsoft Management Console (MMC) DNS snap-in
ด้วย
อ้างอิงตาม Microsoft Security Advisory (935964)
การปิดการจัดการ RPC สามารถทำได้ตามขั้นตอนดังนี้:
- คลิ้ก Run ใน start menu และพิมพ์ Regedit
จากนั้นกด Enter เพื่อเรียกโปรแกรม Registry Editor
- เปิดตำแหน่งรีจิสทรีไปที่: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
- เลือกเมนู Edit > New >
DWORD Value
- พิมพ์ RpcProtocol แทนที่ New Value
#1 ในส่วนชื่อของค่ารีจิสทรี จากนั้นกด Enter
- ดับเบิลคลิ้กค่ารีจิสทรีที่ถูกสร้างขึ้นใหม่ แล้วเปลี่ยนข้อมูลของค่ารีจิสทรีเป็น
4
นอกจากการแก้ไขรีจิสทรีโดยตรงแล้ว สามารถคัดลอกข้อความด้านล่างไปบันทึกเป็นไฟล์
.REG และทำการส่งค่าเข้ารีจิสทรีได้ (คลิ้กขวาที่ไฟล์ .REG แล้วเลือก
Merge):
Windows Registry
Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters]
"RpcProtocol"=dword:00000004
ทำการรีสตาร์ทบริการ DNS เพื่อให้ค่าที่เปลี่ยนแปลงถูกใช้งาน
ข้อมูลเพิ่มเติมสำหรับ regedit.exe
สามารถอ่านได้ที่ Microsoft Knowledge Base Article 82821
ป้องกันหรือจำกัดการเข้าถึงบริการ RPC
การแก้ไขชั่วคราวนี้จะจำกัดการเข้าถึงผ่านโพรโตคอล
TCP/IP ไปยังส่วน RPC ทุกส่วน รวมถึงส่วนจัดการ DNS ซึ่งมีช่องโหว่ด้วย
การแก้ไขนี้ไม่สามารถป้องกันการบุกรุกผ่านช่องโหว่ แต่จะจำกัดต้นเหตุการบุกรุกที่อาจเป็นไปได้
อีกทั้งอนุญาตให้มีการจัดการระยะไกลด้วย MMC DNS Snap-in จากระบบเครือข่ายที่เลือกไว้ได้
วิธีการคือห้ามการเข้าถึง RPC Endpoint Mapper service
(135/tcp) ที่ส่วนต่อเชื่อมระบบเครือข่าย (network perimeters) โดยการห้าม
RPC ที่ส่วนต่อเชื่อมระบบเครือข่ายนี้จะยังปล่อยให้ผู้บุกรุกภายในส่วนต่อเชื่อมทำการบุกรุกช่องโหว่นี้ได้
โดยทั่วไป RPC Endpoint Mapper service ถูกระบุพอร์ตโดยสุ่มระหว่าง
1024/tcp ถึง 5000/tcp ดังนั้นการเชื่อมต่อที่น่าสงสัยทุกประเภทที่ใช้พอร์ตเหล่านี้ควรถูกบล็อกด้วย
Appendix A. References
|