Published
- 2 min read
Crowdstrike BSOD แบบสั้นๆ!
Software Layer!
จริงๆต้องอธิบายเรื่องชนิดของ software ทั่วๆไปก่อน ทำไมโปรแกรมทั่วๆไปเวลามันค้าง แย่สุดก็แค่ปิดโปรแกรมตัวเองลง แล้วลืมเซฟงานอย่างเช่น Microsoft Word แล้วทำไม software ของ Crowdstrike เวลามีปัญหา ถึงได้ทำให้ Windows นั้นเกิดจอฟ้าขึ้นได้ ก่อนอื่นลองมาดู architecture ของ Windows กันดู
Windows Internals
ระบบปฎิบัติการ Windows นั้นแบ่งสิทธิ์ในการบริหารจัดการ software ออกเป็น 2 layer คือ
-
User Mode -> Software ที่ทำงานอยู่ใน layer นี้ ตัว Windows เองจะคอยจัดการ resource (Process, Memory, Thread) ให้ทั้งหมด เมื่อ program ทำงานผิดพลาด Windows จะทำการ handle ให้ และจะมีการคืน resource ให้แก่ระบบโดยอัติโนมัติ แต่ software ใน layer นี้จะโดนจำกัดสิทธิ์เข้าถึง resource บางอย่าง อ้างอิงจากเคสที่ยกตัวอย่างข้างต้น Microsoft Word จะทำงานอยู่ที่ layer นี้ ตรงกล่อง User Processes
-
Kernel Mode -> Software ใน layer นี้ จะประกอบไปด้วย Windows Kernel และส่วนเป็น Device Driver ซึ่งจะได้สิทธิ์ในการเข้าถึง resource ที่เยอะกว่า หรือเรียกได้ว่าไม่มีการจำกัดสิทธิ์เลยก็ว่าได้ และทุก resource ที่ driver หรือ component ใดๆ ทำการจอง หรือเรียกใช้ไว้ หากมีการ leak เกิดขึ้น มันจะโดนคืนให้ระบบหลังจาก restart เครื่องเท่านั้น อีกข้อที่สำคัญสุดๆเลยก็คือ หาก software ใน layer นี้มีข้อผิดพลาดแม้แต่นิดเดียว Windows จะทำแสดงจอฟ้า และหยุดการทำงานของ software ทันที ซึ่ง software เจ้าปัญหาของ Crowdstrike มี module ที่ develop เป็น Device Driver ซึ่งทำงานอยู่ที่ layer นี้
Crowndstrike Driver!
software ของ Crowdstrike นั้นถูก develop เป็น Device Driver ซึ่งมองได้อีกแบบคือ เป็น Plug-In/3rd Party ของ Windows Kernel เลย ซึ่งก็คือตัว C-00000291*.sys ตามข่าวที่แจ้งออกมา เพราะมันเป็น software ที่ทำหน้าที่ตรวจจับพวก virus หรือ พวกโปรแกรมแปลกปลอมที่จะทำอันตรายกับเครื่อง มันเลยต้องไปทำงานอยู่ในระดับเดียวกับตัว Windows Kernel เพื่อขอสิทธิ์การเข้าถึง resource ให้เยอะเท่าที่ Windows ยอมให้เข้าถึงได้ เพื่อการทำงานมีประสิทธิภาพมากขึ้น แต่ก็อย่างที่ลุงเบ็นในหนัง Spider-Man ได้กล่าวไว้ พลังที่ยิ่งใหญ่ มาพร้อมกับความรับผิดชอบอันใหญ่ยิ่ง
ทำไมต้องจอฟ้า ฟ้าทำไม ใครเป็นคนเปิด!
ทีนี้พอมันรันอยู่ในสิทธิ์ระดับเดียวกับ Windows … ตัว Windows เองก็เฝ้าดูมันอยู่เหมือนกัน ถ้ามันทำงานผิดพลาด ถูกเขียนมาไม่รัดกุม แย่สุดไม่ใช่แค่ลืมเซฟงาน แต่กลไกป้องกันตัวเองของ Windows จะไม่อนุญาตให้ software ของ Crowndstrike ทำงานต่อ เพราะถ้าปล่อยให้ทำงานต่อ อาจจะทำให้เกิดความเสียหายมากกว่าเดิม วิธีที่ Windows จัดการปัญหา คือ เปิดจอฟ้า (จริงๆมีสีอื่นด้วย เขียว ชมพู แล้วแต่ version) จอฟ้ามันไม่ใช่การทำโทษ แต่มันคือการปกป้อง
จบแล้ว สั้นจริงๆ ไม่รู้ได้ประโยชน์อะไรมั๊ย แต่ที่แน่ๆเลิกกลัวจอฟ้าได้เลย มันเป็น machanism ปกติของ Windows OS