ถ้าเป็นระบบที่อยู่ใน เส้นทางสำคัญ ขนาดนี้ ก็ไม่ควรผ่าน CI pipeline ที่ถูกต้องมาได้
ผมไม่ได้เข้มงวดกับ automated test มากนัก แต่สำหรับระบบที่สำคัญระดับนี้ การจัดการสถานะควรต้องดีเป็นพิเศษ
ไม่ควร deploy ขึ้น production หากไม่มี integration test สำหรับทุกสภาพแวดล้อมที่อ้างว่ารองรับ และเป็นไปไม่ได้ที่บริษัทขนาดและความสำคัญระดับนี้จะไม่มีแม้แต่ staging หรือ dev test server ที่ตรวจสอบ image ทั้งหมดที่รองรับ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ถ้าเป็นระบบที่อยู่ใน เส้นทางสำคัญ ขนาดนี้ ก็ไม่ควรผ่าน CI pipeline ที่ถูกต้องมาได้
ผมไม่ได้เข้มงวดกับ automated test มากนัก แต่สำหรับระบบที่สำคัญระดับนี้ การจัดการสถานะควรต้องดีเป็นพิเศษ
ไม่ควร deploy ขึ้น production หากไม่มี integration test สำหรับทุกสภาพแวดล้อมที่อ้างว่ารองรับ และเป็นไปไม่ได้ที่บริษัทขนาดและความสำคัญระดับนี้จะไม่มีแม้แต่ staging หรือ dev test server ที่ตรวจสอบ image ทั้งหมดที่รองรับ
ถ้าเป็นแบบนั้น ปัญหาอาจเกิดขึ้นได้หลังผ่านการตรวจสอบจำนวนมากก่อน deploy แล้ว ผมยังไม่อยากรีบด่วนสรุปว่าเขาไม่ได้ทดสอบการส่งออกไปยัง Windows เลย
ในจำนวนนั้นก็น่าจะมี Windows พื้นฐานอยู่ด้วยแน่ ๆ
เป็นไปได้ว่าออกแบบไว้ว่าเครื่องไม่ควรบูตจนสมบูรณ์จนกว่าจะดาวน์โหลดไฟล์ที่มีลายเซ็นถูกต้องมาได้
ผมขอเดาว่าน่าจะมีบางอย่างถูก build และผ่าน CI test แล้ว จากนั้นระบบพังใน ขั้นตอนปลายทาง ที่คัดลอกไฟล์เพื่อเตรียม deploy แต่ตอนนี้ทั้งหมดก็เป็นแค่การคาดเดาเท่านั้น
ที่เกี่ยวข้องกัน ผมว่าไม่ใช่เรื่องบังเอิญที่หายนะทางเทคโนโลยีครั้งใหญ่ที่สุดสองครั้งในประวัติศาสตร์ (CrowdStrike และการแฮ็ก SolarWinds เมื่อหลายปีก่อน) ล้วนมาจาก ซอฟต์แวร์ความปลอดภัย ที่หลุดการควบคุม
ผมคิดว่าคนสายแฮกเกอร์ที่อยากเริ่มบริษัทซอฟต์แวร์ความปลอดภัย มีแนวโน้มจะสนใจน้อยที่สุดในการทำส่วนที่น่าเบื่อของวัฒนธรรมที่เน้นกระบวนการ SolarWinds ถูกเปิดเผยว่ามีวัฒนธรรมความปลอดภัยภายในบริษัทที่เลวร้าย และกรณีนี้ก็ดูมีแนวโน้มสูงว่าเมื่อพบสาเหตุรากแล้ว จะเป็นกระบวนการ deploy ที่เร็วและหลวม
ความปลอดภัยไม่ใช่ผลิตภัณฑ์ที่ซื้อได้ แต่เป็นวัฒนธรรม และต้องปลูกฝังตั้งแต่วันแรกด้วยความพยายามเชิงรุกและงานหนัก ไม่มีผลิตภัณฑ์ใดในตลาดที่มอบความปลอดภัยให้ได้ มีแต่ผลิตภัณฑ์ให้โยนความรับผิดชอบเมื่อเกิดปัญหาเท่านั้น
องค์กรวิศวกรรมช่วงแรกส่วนใหญ่ทำงานแบบรีโมต/จากบ้าน หรืออยู่ที่ Irvine และเมื่อบริษัทขยายตัวก็เพิ่มสำนักงานที่ Sunnyvale จากนั้นภายหลังย้ายสำนักงานใหญ่ทางการไป Austin, TX
ในช่วงไม่กี่ปีมานี้ยังขยายงานวิศวกรรมในต่างประเทศด้วย ซึ่งอาจรวมถึง offshoring
ดังนั้นเมื่อเกิดความผิดพลาดหรือถูกเจาะ ผลกระทบจึงมักใหญ่กว่ามาก
น่าจะยังมีอย่างอื่นที่ผมลืมไปอีก อาจมีโครงสร้างคล้ายปัญหา self-selection ที่รบกวนอุตสาหกรรมกัญชาถูกกฎหมายก็ได้
ซอฟต์แวร์ส่วนใหญ่อื่น ๆ ไม่ต้องการการเข้าถึงระดับลึกขนาดนั้น และแม้จะ crash ก็ไม่ลากทั้งระบบล่มไปด้วย อีกทั้งยังอัปเกรดอัตโนมัติอย่างรวดเร็วได้
ถ้าจะพยายามหาด้านบวกของภัยพิบัติครั้งนี้ ก็มีความหวังเล็ก ๆ ว่าองค์กรต่าง ๆ อาจกลับมาคิดใหม่เรื่อง การเข้าถึงระดับเคอร์เนล
ไม่อาจถือได้ว่าบริษัทเกมไหน ๆ ก็มีความสามารถพอจะใช้ซอฟต์แวร์ anti-cheat ระดับเคอร์เนล
ถึงอย่างนั้น Microsoft ก็มีบริษัทเกมในเครือ ดังนั้นมีแนวโน้มจะยังคงให้ hook สำหรับเกมต่อไป องค์กรธุรกิจคงไม่สะดุ้งกับแนวทาง anti-cheat ของ Riot เพราะพวกเขาไม่ได้ติดตั้ง LoL บนเครื่องทำงาน
เรื่องนี้ดูเหมือนไฟล์ทดสอบแบบที่คน QA น่าจะลองเป็นลำดับที่สองหรือสาม ถัดจากไฟล์เปล่าและไฟล์ที่ถูกต้องขั้นต่ำ ระดับของ ความไร้ความสามารถรอบด้าน ที่เผยออกมาตรงนี้น่าตกใจมาก
ในตลาดที่แข่งขันกันสร้างความประทับใจให้ผู้บริหารที่ไม่ใช่สายเทคนิคด้วยการนำเสนอ ก็ไม่น่าแปลกใจที่บริษัทที่เก่งเชิงเทคนิคไม่ได้มีความได้เปรียบเหนือบริษัทที่ไร้ความสามารถ
ช่วงหลังผมได้อ่านคำพิพากษาคดี Craig Wright https://www.judiciary.uk/judgments/copa-v-wright/ เขาอ้างเท็จว่าตัวเองคือ Satoshi Nakamoto แต่กลับไม่มีความสามารถทางเทคนิคพื้นฐานแม้ในสาขาที่เขาอ้างว่าเป็นผู้เชี่ยวชาญระดับโลก ตอนอยู่บนคอกพยาน เขายังไม่รู้ด้วยซ้ำว่า ‘unsigned’ หมายถึงอะไร และดูเหมือนเขาหลอกผู้คนมาตั้งแต่ยุค 90 ด้วยศัพท์เทคนิค เดโมที่จัดฉาก และเอกสารปลอม ขณะทำงานด้านความปลอดภัยให้บริษัทใหญ่ ๆ
George Kurtz ผู้ก่อตั้งและ CEO ของ CrowdStrike เคยเป็น CTO ตอนที่ McAfee ทำเรื่องเกือบเดียวกันนี้เมื่อ 14 ปีก่อน: https://old.reddit.com/r/sysadmin/comments/1e78l0g/can_crowd... https://en.wikipedia.org/wiki/George_Kurtz
CrowdStrike เองก็ทำให้เกิดปัญหาเดียวกันบน Debian stable เมื่อ 3 เดือนก่อน: https://old.reddit.com/r/debian/comments/1c8db7l/linuximage6...
น่ากลัวมากที่ข้อกำหนด PCI compliance ผลักดันให้ CrowdStrike และแอนติไวรัสเข้าไปอยู่แทบทุกมุมของโครงสร้างพื้นฐาน IT ในปัจจุบัน
แต่ก็นะ กฎระเบียบของรัฐก็เป็นแบบนี้แหละ
แต่นี่ก็เป็นความล้มเหลวของ Microsoft ด้วย และในภาพใหญ่กว่านั้นก็เป็นอีกหนึ่งความล้มเหลวของทั้งอุตสาหกรรม
ต้องเกิดเรื่องแบบนี้ซ้ำอีกกี่ครั้ง ถึงจะมีการปฏิรูปอุตสาหกรรมที่ทำให้เราสร้างระบบที่ปลอดภัยและเชื่อถือได้แบบที่เราศึกษากันมาตลอด 70 ปีได้? รู้สึกเหมือนปี 1988 กำลังวนกลับมาอีกครั้ง
ถ้าอยู่ที่เดียวก็จะกลายเป็นเป้า แต่เครือข่ายแบบ peer-to-peer ทนต่อการโจมตีได้มากกว่ามาก
ถ้าปัญหาครั้งนี้เกี่ยวกับการที่ root certificate ของคอมพิวเตอร์ทุกเครื่องถูกแทนที่ด้วยของ CrowdStrike ใบรับรองที่ลงทะเบียนบน blockchain ก็อาจเป็นทางแก้ได้ ผมไม่ใช่ผู้เชี่ยวชาญด้านคริปโตกราฟี แต่ฟังดูมีเหตุผล
เพิ่มเติมคือ พอได้ฟังคำอธิบาย blockchain ของ Craig Wright ผมถึงเริ่มเข้าใจ whitepaper ของ Bitcoin ได้ค่อนข้างมาก เขาอาจไม่ใช่ coder ชั้นยอด แต่การเป็นนักคณิตศาสตร์ก็ไม่ได้ไร้ประโยชน์ในด้านความปลอดภัยใช่ไหม?
ความผิดพลาดส่วนใหญ่ไม่ได้ไร้เหตุผลในระดับทั่วโลกแบบนี้ ดูเหมือนความผิดพลาดครั้งใหญ่ที่สุดเท่าที่เคยมีมา คล้าย Y2K ที่ไม่เคยเกิดขึ้นจริง
บทความนี้ผิด และไม่มีวิธีอื่นที่จะเอาลงจากหน้าแรกได้ เลย flag ไว้
การพบไฟล์ที่เป็น 0 ทั้งหมดบนคอมพิวเตอร์ที่พัง ไม่ได้แปลว่าไฟล์นั้นถูก แจกจ่ายมาเป็น 0 ทั้งหมดตั้งแต่แรก
https://x.com/craiu/status/1814339965347610863
https://x.com/cyb3rops/status/1814329155833516492
ถ้าไฟล์เหล่านี้คือไฟล์ signature ของมัลแวร์เอง ก็ไม่น่าแปลกใจถ้าจะมีการ match เกิดขึ้น
ตรงกับสิ่งที่ได้ยินมาจากเพื่อนที่รู้จักคนทำงานที่ CrowdStrike เกี่ยวกับบั๊กนี้
บั๊กซ่อนตัวอยู่ใน kernel driver มาหลายปี และถูกจุดชนวนเมื่อมีข้อมูลที่มีข้อบกพร่องเข้ามา ข้อมูลนั้นถูกเพิ่มในขั้นตอน post-processing ของการอัปเดตการตั้งค่า หลังการทดสอบแล้ว แต่ก่อนจะคัดลอกไปยังเซิร์ฟเวอร์อัปเดตที่ client จะดึงไป
ดูเหมือนชุดทดสอบของ CrowdStrike จะใช้ได้ดีกับข้อมูลการตั้งค่าเอง แต่ไม่สามารถจับปัญหาก่อนออก production ได้ เพราะกำลังทดสอบสิ่งที่ผิดอยู่
ถ้ามี postmortem ออกมา ก็หวังว่าจะยอมรับปัญหานี้ และอธิบายว่าจะทำอะไรเพื่อป้องกัน ความล้มเหลวของกระบวนการที่ส่งผลกระทบทั่วโลก อีกครั้ง
ผู้ดูแลระบบที่มีความสามารถน่าจะปิดฟีเจอร์ auto-update กันหมดตั้งแต่ Greenland ไปจนถึง New Zealand ภายในตอนนี้ บล็อกด้วย firewall และวางแผนเอาผลิตภัณฑ์นี้ออกจากสินทรัพย์เซิร์ฟเวอร์ให้เร็วที่สุดเท่าที่ทำได้
งบการตลาดของผลิตภัณฑ์คู่แข่งคงเพิ่มขึ้นในไตรมาสนี้
ต่อให้ในสัญญามี “การจำกัดความรับผิด” ก็หวังว่าจะมีการสอบสวนอย่างจริงจัง ค่าปรับ และการไล่เบี้ยทางกฎหมาย
ขนาดความเสียหายจากเหตุการณ์นี้แทบจะคำนวณไม่ได้ และยิ่งมากขึ้นเมื่อรวมเวลาที่บริษัทและคนทั่วไปต้องเสียไป เช่น คนที่กำลังจะขึ้นเครื่องบินด้วย
ความประมาทเลินเล่อ แบบนี้ต้องมีราคาที่ต้องจ่าย
มีข้ออ้างว่าไฟล์ที่ Kevin Beaumont ได้รับบน Mastodon นั้นแตกต่างกันไปตามลูกค้าแต่ละราย
https://cyberplace.social/@GossiTheDog/112812454405913406
เลื่อนลงไปดูอีกเล็กน้อยก็จะเห็น
ถ้าไม่ใช่แค่การหลุดของไฟล์ทดสอบธรรมดา แต่เป็นสำเนาที่เสียหายหลายชุด ก็น่าสงสัยว่ามันผ่านการตรวจสอบลายเซ็นและถูกเคอร์เนลโหลดได้อย่างไร
นี่อาจไม่ใช่เนื้อหาไฟล์ดั้งเดิม แต่เป็นผลจาก การรับมือแบบทำเอง เพื่อหยุดความเสียหายก็ได้
อาจมีใครบางคนคาดหวังว่าถ้าเขียนทับไฟล์ที่ผิดพลาดด้วยไฟล์ขนาดเท่ากันแต่เป็น 0 ทั้งหมด อัปเดตก็จะไม่ก่ออันตราย
หรือถ้าตามสมมติฐานว่า “ข้าม QA เพราะช่องโหว่ร้ายแรง” การหยุดการกระจายแพตช์จริงอาจเป็นความพยายามเพื่อลดการเข้าถึงข้อมูลจริงและชะลอการ reverse engineering ช่องโหว่
ตามคำอธิบายที่โพสต์บนบอร์ดเทคโนโลยีของ 4chan ปัญหามีสองขั้นตอน
ไดรเวอร์เคอร์เนลที่มีลายเซ็นชื่อ CSAgent.sys ทำหน้าที่พาร์สไฟล์นิยามไวรัสของ CrowdStrike และไม่ได้จัดการกรณีที่ไฟล์นิยาม malformed ทำให้เกิดการเข้าถึงหน่วยความจำที่ไม่ถูกต้องอย่างเหมาะสม
มี ไดรเวอร์เคอร์เนลแบบระเบิดเวลา ที่ทำงานได้โดยไม่มีปัญหามาหลายเดือนร่วมกับไฟล์นิยามปกติ แล้วจู่ ๆ เว็บเซิร์ฟเวอร์หรือ CDN ที่ให้ไฟล์นิยามก็เริ่มส่งเนื้อหาผิด เช่น ไฟล์ว่าง ไบต์สุ่ม หรือไฟล์ของซอฟต์แวร์อื่น
คำอธิบายคือไคลเอนต์อัปเดตดาวน์โหลดสิ่งนี้ลงใต้ C:\Windows\System32\drivers จากนั้น CSAgent.sys อ่านซ้ำและพาร์สจนเจอ PAGE_FAULT_IN_NONPAGED_AREA ทำให้เกิดจอฟ้าและวนรีบูต
ว่ากันว่าถ้าดูความแตกต่างระหว่าง CSAgent.sys_18511.sys กับ CSAgent.sys_18513.sys จะเห็นร่องรอยว่ามีการเปลี่ยนการตรวจสอบขนาดและขนาดบัฟเฟอร์ เพื่อไม่ให้ไฟล์นิยามที่ผิดพลาดทำให้ล่มในอนาคต
ถ้าแพ็กเกจแอนติไวรัสบางตัวเป็นสาเหตุจริง ๆ ก็คงตลกไม่น้อย
โดยเฉพาะในบริบทช่วงเลือกตั้งแบบตอนนี้ และบริษัทที่ Trump ชื่นชอบ ก็อาจเป็นการโชว์พลังได้
เคยมีกรณีที่ซอฟต์แวร์ความปลอดภัยเปลี่ยนทั้งไฟล์ให้เป็น 0 จนทำให้การคอมไพล์ซอฟต์แวร์พังมาก่อน
ไม่ได้บอกว่าครั้งนี้เป็นแบบนั้น แต่ก็ไม่ใช่เรื่องน่าประหลาดใจ
โดยพื้นฐานคือบน Windows ตัวลิงเกอร์เปิดไฟล์ไม่ได้ เพราะมีโปรเซสอื่นล็อกไฟล์ไว้เพื่อสแกน แต่แทนที่จะส่งข้อผิดพลาด กลับเปลี่ยน object code ที่จะถูกลิงก์ให้เป็น 0
ผู้คนหาสาเหตุไม่เจอ จนกระทั่งเปิดดีบักเกอร์ดู จึงยืนยันได้ว่า object code ก้อนใหญ่ถูก แทนที่ด้วย 0
แอนติไวรัสไปจับไบนารีที่เพิ่งสร้างขึ้นไว้พอดีในจังหวะที่ mt.exe ต้องเขียน เลยถึงขั้นทำ mt.exe wrapper ที่เพิ่มการ retry เอาไว้ งาน CI build ก็เคยล้มแบบสุ่มเพราะเรื่องนี้เหมือนกัน