บัญชีทดสอบของ Microsoft ที่ถูกแฮ็กมีสิทธิ์ผู้ดูแลระบบ
(arstechnica.com)- เหตุการณ์เจาะระบบ Microsoft ร้ายแรงกว่าการยึดบัญชีธรรมดา เพราะ บัญชีทดสอบเก่าที่ไม่มี MFA นำไปสู่การเข้าถึงอีเมลของผู้บริหารระดับสูง รวมถึงทีมความปลอดภัยและกฎหมาย
- กลุ่มที่เชื่อมโยงกับรัฐรัสเซีย Midnight Blizzard ใช้ประโยชน์จากข้อมูลรับรองที่อ่อนแอด้วยวิธี password spraying เพื่อเข้าสู่ระบบ “legacy non-production test tenant account”
- ผู้โจมตีใช้ สิทธิ์ของแอป OAuth จากเทนเนนต์ทดสอบที่ถูกเจาะ เพื่อให้ได้บทบาท
full_access_as_appบน Office 365 Exchange Online - เนื่องจากการมอบสิทธิ์
full_access_as_appต้องใช้ สิทธิ์ผู้ดูแลระบบ จึงมีเสียงวิจารณ์ว่านี่เป็นการตั้งค่าผิดพลาดที่ทำให้บัญชีทดสอบมีสิทธิ์มากเกินไปในสภาพแวดล้อมโปรดักชัน - บัญชีทดสอบที่ขัดกับหลักสิทธิ์น้อยที่สุด และการทำ password spraying ผ่านพร็อกซีที่อยู่อาศัย ทำให้การตรวจจับที่อาศัยตัวบ่งชี้การเจาะระบบแบบเดิมทำได้ยาก
จากบัญชีทดสอบสู่การเข้าถึงอีเมล
- แฮ็กเกอร์ที่ได้รับการสนับสนุนจากรัฐรัสเซียใช้ password spraying เพื่ออาศัยข้อมูลรับรองที่อ่อนแอเข้าสู่ระบบ “legacy non-production test tenant account”
- บัญชีทดสอบดังกล่าวไม่ได้รับการป้องกันด้วย การยืนยันตัวตนหลายปัจจัย
- จากนั้นจึงได้สิทธิ์ที่ทำให้เข้าถึงบัญชีอีเมลของผู้บริหารระดับสูงของ Microsoft รวมถึงพนักงานในทีมความปลอดภัยและกฎหมาย
- กลุ่มผู้โจมตี Midnight Blizzard ใช้ประโยชน์จากโปรโตคอลการยืนยันตัวตน OAuth เพื่อคงการเข้าถึงบัญชีอีเมลที่มีสิทธิ์อย่างต่อเนื่อง
- สร้าง แอปอันตราย ในเทนเนนต์ทดสอบที่ถูกเจาะ
- มอบสิทธิ์ให้แอปสามารถเข้าถึงทุกที่อยู่อีเมลในบริการอีเมล Microsoft Office 365
- ใช้แอปพลิเคชัน OAuth สำหรับทดสอบเดิมเพื่อมอบบทบาท
full_access_as_appบน Office 365 Exchange Online
บัญชีทดสอบแบบ legacy ที่มีสิทธิ์ผู้ดูแลระบบ
- อัปเดตของ Microsoft ระบุว่า “legacy test OAuth application” มี elevated access อยู่ใน Microsoft corporate environment
- Kevin Beaumont ระบุว่า หากต้องการมอบบทบาท
full_access_as_appให้แอป OAuth บัญชีนั้นต้องมี สิทธิ์ผู้ดูแลระบบ - Beaumont ประเมินว่าการตั้งค่านี้เป็น “ความผิดพลาดด้านการตั้งค่าครั้งใหญ่พอสมควรในโปรดักชัน”
- มีเสียงวิจารณ์ว่าแทบจินตนาการไม่ออกว่าจะมีเหตุผลอันสมควรใดในการมอบและคงไว้ซึ่งสิทธิ์กว้างขนาดนี้ให้กับบัญชีทดสอบแบบ legacy
- Microsoft ปฏิเสธที่จะอธิบายว่าทำไมบัญชีทดสอบนี้จึงถูกตั้งค่าเช่นนั้นตั้งแต่แรก และเหตุใดจึงยังคงอยู่เช่นเดิมแม้จะกลายเป็นสถานะแบบ legacy แล้ว
การตั้งค่าที่ขัดกับหลักสิทธิ์น้อยที่สุด
- การตั้งค่านี้ขัดกับ หลักสิทธิ์น้อยที่สุด ที่กำหนดให้บัญชีควรมีเพียงสิทธิ์ขั้นต่ำที่จำเป็นต่อการทำงาน
- ประเด็นสำคัญคือยากจะเข้าใจว่าทำไมบัญชีทดสอบแบบ legacy จึงต้องมีสิทธิ์ผู้ดูแลระบบ
- Beaumont เปรียบเทียบสถานการณ์นี้เหมือนนำผู้ใช้ Domain Admin ของระบบโปรดักชันไปไว้ในโดเมนทดสอบที่ไม่มีระบบความปลอดภัย, MFA, ไฟร์วอลล์ หรือการมอนิเตอร์
- ผู้ใช้ Domain Admin มีสิทธิ์ผู้ดูแลเต็มรูปแบบต่ออุปกรณ์ที่เชื่อมต่อกับเครือข่าย รวมถึงโดเมนคอนโทรลเลอร์และ Active Directory
- นี่คือบัญชีที่ทรงอำนาจที่สุดในเครือข่าย จึงควรถูกแยกออก และไม่ควรถูกนำไปรวมในระบบโปรดักชันบ่อยนัก
- หากปล่อยบัญชีประเภทนี้ไว้โดยไม่มีรหัสผ่านที่แข็งแกร่งและมาตรการความปลอดภัยมาตรฐาน ความเสียหายจะรุนแรงมาก
การเจาะระบบองค์กรอื่นและ password spraying ที่แนบเนียน
- Microsoft ตรวจพบว่า Midnight Blizzard ได้เจาะองค์กรอื่นเพิ่มเติมด้วย และได้แจ้งเตือนองค์กรที่ได้รับผลกระทบ
- Hewlett-Packard Enterprises ก็เปิดเผยว่าเครือข่ายของบริษัทถูกแฮ็กโดย Midnight Blizzard เช่นกัน
- การเจาะระบบดังกล่าวเกิดขึ้นในเดือนพฤษภาคม
- กว่าจะตรวจพบและสกัดกั้นได้ก็ในเดือนธันวาคม
- การทำ password spraying ที่ใช้เข้าถึงบัญชีทดสอบนั้นดำเนินการกับบัญชีจำนวนจำกัด และพยายามต่อบัญชีเพียงไม่กี่ครั้ง
- ผู้โจมตีใช้ โครงสร้างพื้นฐานพร็อกซีที่อยู่อาศัยแบบกระจายตัว เพื่อทำให้กิจกรรมอันตรายสังเกตได้ยากขึ้น
- เข้าถึงจากที่อยู่ IP ที่มีชื่อเสียงดี
- ใช้ที่อยู่ IP ที่อยู่ในภูมิภาคที่คาดหมาย
- ทำให้ดูปะปนเหมือนทราฟฟิกของผู้ใช้จริง
ข้อจำกัดของการตรวจจับด้วยตัวบ่งชี้การเจาะระบบแบบเดิม
- วิธีการใช้พร็อกซีที่อยู่อาศัยไม่ใช่เทคนิคใหม่ และเคยถูกใช้ใน การโจมตีห่วงโซ่อุปทาน SolarWinds เมื่อปี 2020
- การโจมตี SolarWinds ก็ถูกเชื่อมโยงว่าเป็นฝีมือของ Midnight Blizzard เช่นกัน
- พร็อกซีที่อยู่อาศัยจะส่งทราฟฟิกผ่าน IP ของผู้ใช้จริงจำนวนมาก ทำให้การตรวจจับแบบดั้งเดิมที่อาศัย ตัวบ่งชี้การเจาะระบบ ทำได้ยากในทางปฏิบัติ
- Midnight Blizzard คือกลุ่มที่รัฐบาลสหรัฐฯ และสหราชอาณาจักรระบุว่าปฏิบัติการให้กับหน่วยข่าวกรองต่างประเทศของรัสเซีย SVR
- ชื่ออื่นที่ใช้ติดตามกลุ่มเดียวกันนี้ ได้แก่ APT29, the Dukes, Cloaked Ursa, UNC2452 และ Dark Halo
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
นึกถึง การแฮ็ก Roblox เก่า ๆ ที่เคยได้ยินมาก่อน มีไซต์สเตจจิงที่ไม่ใช่ระบบโปรดักชันซึ่งผู้ใช้สมัครได้ และมีแบนเนอร์ติดไว้ว่า “สิ่งที่อยู่ที่นี่ไม่ถาวร”
มีการเพิ่มบัญชีผู้ดูแลระบบใหม่ในสภาพแวดล้อมโปรดักชัน แล้วมีใครบางคนไปสมัครบนไซต์สเตจจิงด้วยชื่อผู้ใช้เดียวกัน จากนั้นใช้คุกกี้และโทเค็นนั้นยึดบัญชีโปรดักชันและเจาะเว็บไซต์ได้
ถ้าสร้างโทเค็นเข้ารหัสโดยอิงชื่อผู้ใช้หรือ ID ผู้ใช้ แต่ไม่ได้ใช้ค่าลับคนละชุดสำหรับโปรดักชัน/สเตจจิง หรือไซต์สเตจจิงสื่อสารกับบริการภายนอกแล้วไปปนกับการให้สิทธิ์ของโปรดักชัน ปัญหาแบบนี้ก็คงไม่ใช่เรื่องหายากนัก
พอรู้ตัวก็รีบแจ้งความจริงทันที
ในบริษัทขนาดใหญ่ ขอบเขตระหว่างพัฒนา/โปรดักชัน มีรูรั่วมากกว่าที่ผู้คนอยากคิดกันมาก
ลองนึกถึงวันทำงานทั่วไป: ล็อกอินเข้า PC เช็กอีเมล แล้วใช้ข้อมูลรับรองชุดเดียวกันล็อกอินเข้า Azure portal สุดท้ายทั้งหมดก็ผูกอยู่กับเทแนนต์เดียวกัน และบัญชีก็เชื่อมกับ GitHub รวมถึงบัญชีคลาวด์ด้วย
Groups และ Teams ถูกสร้างกระจัดกระจายไปทั่ว สิ่งที่เกิดขึ้นเพื่อใช้ Teams หรือ OneDrive พร้อมสิทธิ์น่าสงสัยบางอย่าง ก็ยังคงอยู่ในไดเรกทอรีของบริษัทโดยแทบแยกไม่ออกจากกลุ่มความปลอดภัย
บางครั้งมีอีเมลอัตโนมัติมาถามว่า “ยังต้องใช้สิ่งนี้อยู่ไหม” แต่ข้อความก็ไม่ชัดเจน และในบริษัทใหญ่มาก ๆ ก็แทบไม่มีคนให้ถาม เฮลป์เดสก์กว่าจะตอบก็อีกสองวัน และจะไปถาม John Savill ทาง Twitter ก็ไม่ได้ สุดท้ายก็เลยกดรับรองแล้วผ่านไป
ท้ายที่สุด ผืนผ้าขององค์กรก็เริ่มฉีกขาด และผู้โจมตีโชคดีเข้ามาตรงจุดอ่อน แล้ว เคลื่อนที่ในแนวขวาง ภายในเทแนนต์เพื่อหยิบสิ่งที่ต้องการไป
อย่างที่ CISO ผู้ชาญฉลาดเคยพูดไว้ แฮ็กเกอร์ไม่ได้บุกรุกเข้ามา แต่ล็อกอินเข้ามา
แน่นอนว่าเป็นแนวที่ทุกคนใช้ Microsoft cloud, Skype, Twitter, OneDrive อะไรพวกนั้น และยังโยนชื่อคนบางคนเข้ามาให้ดูสมจริงด้วย
จากคำพูดของ Kevin Beaumont ที่ว่า “มีเพียงบัญชีที่มีสิทธิ์ผู้ดูแลระบบเท่านั้นที่สามารถมอบบทบาท full_access_as_app ซึ่งเกือบเทียบเท่าสิทธิ์เต็มให้กับแอป OAuth ได้ มีใครบางคนทำพลาดด้านการตั้งค่าอย่างหนักในสภาพแวดล้อมโปรดักชัน” หากมองโดยไม่รู้รายละเอียดของระบบ ก็ไม่รู้สึกว่านั่นคือประเด็นหลัก
ไม่ควรมีวิธีให้ทำพลาดแบบนั้นได้ตั้งแต่แรก คนที่ออกแบบและคนที่ปฏิบัติการควรทำให้มันเป็นไปไม่ได้ และความรับผิดชอบก็อยู่ตรงนั้น
ถ้าสร้างและเดินเครื่องโรงงานที่มีปุ่มซึ่งช็อตไฟฟ้าใส่คนภายในทั้งหมด แล้วมีใครบางคนเผลอกดปุ่มนั้น ปัญหาอยู่ตรงไหนก็ชัดเจน
ตลอดหลายปีที่ผ่านมา เคยถูกขอหลายครั้งให้เพิกเฉยนโยบาย ขั้นตอน กฎระเบียบ และกฎหมายทั้งหมด แล้วมอบ สิทธิ์ซูเปอร์แอดมิน/root ให้ VIP ที่ไม่จำเป็นต้องมีสิทธิ์แบบนั้นเลย
ทุกวันนี้ยิ่งแย่ลง เพราะงานทุกอย่างกลายเป็นเหมือนการควบตำแหน่งข้ามสาย พาร์ตไทม์ บทบาทคู่ บทบาทสามชั้น
เคยเห็นระบบควบคุมการเข้าถึงตามบทบาทที่มีจำนวนบทบาทมากกว่าจำนวนสิทธิ์จริงที่ให้ได้ด้วยซ้ำ แบบนั้นเป้าหมายของ RBAC ก็พังตัวเองไปแล้ว การให้สิทธิ์เป็นรายสิทธิ์เร็วกว่าเสียอีก แต่ทำแบบนั้นไม่ได้เพราะรายงานจะไม่แสดงบทบาท
เรื่องแบบนี้ไม่ได้มาจากฝ่ายเทคนิค แต่มาจาก ภาวะผู้นำที่แย่
ก่อนหน้านี้เคยออกแบบส่วนขยายเพื่อบรรเทาปัญหานี้ในระบบสิทธิ์ RBAC ของ ERP ภายในบริษัท โดยเพิ่มประเภทที่เรียกว่า “ข้อยกเว้นสิทธิ์” ให้คนที่ต้องใช้สิทธิ์นอกบทบาทได้รับมอบหมายด้วยวิธีนั้น เพื่อให้สร้างรายงานรายชื่อคนที่ทำงานนอกบทบาทหน้าที่ของตนได้
สุดท้ายก็แค่เพิ่มแฟล็กหนึ่งตัวให้สิทธิ์ แต่มันใช้งานได้ดี HR ตรวจสอบข้อยกเว้นสิทธิ์ทุกไตรมาสเพื่อพิจารณาถอดออก และผู้มีอำนาจที่รู้จริงก็สามารถควบคุมได้ แทนที่เฮลป์เดสก์พาร์ตไทม์จะลองผิดลองถูกจนปล่อยสิทธิ์มั่วไปหมด
ตลกดีที่มี ใบรับรองด้านความปลอดภัย หรู ๆ เต็มไปหมดซึ่งอ้างว่าปกป้ององค์กรและอุตสาหกรรมด้วยความเสี่ยงที่วัดเชิงปริมาณได้ แต่แนวปฏิบัติที่ดีอย่างมีเหตุผลและรอบคอบในหนังสือราคา 36 ดอลลาร์บน Amazon กลับถูกเมินสนิท
ความปลอดภัยดูเหมือนแคมเปญติดริบบิ้นอะไรสักอย่าง
คนที่ขายความปลอดภัยเหมือนเป็นผลิตภัณฑ์คือกำลังหลอกลวง
พนักงานทั่วไปแทบไม่สนใจเรื่องความปลอดภัยเลย แค่ทำงานของตัวเอง
มีเซิร์ฟเวอร์ แอปพลิเคชัน และการตั้งค่ามากเกินไป จนพนักงานที่ตระหนักเรื่องความปลอดภัยอย่างเดียวไม่พอที่จะตรวจสอบทั้งหมด
ถ้าจ้องดูนานพอ บริษัทไหน ๆ สักวันก็จะมีสิ่งที่ไม่ควรเปิดถูกเปิดอยู่ งานของกลุ่มแฮ็กเกอร์ก็คือการคอยหาช่องโหว่อย่างต่อเนื่อง
บริษัทต้องสร้างเซิร์ฟเวอร์ใหม่และการตั้งค่าใหม่ระหว่างดำเนินงานอยู่เรื่อย ๆ ดังนั้นนี่ไม่ใช่ปัญหาที่ตั้งค่าครั้งเดียวแล้วจบ
เวลาไปที่ทำงานใหม่แล้วมีคนให้สิทธิ์มาเพียบโดยบอกว่า “แบบนี้ง่ายกว่า” นี่เกลียดจริง ๆ ไม่ควรทำแบบนั้น
ไม่ใช่แค่ทำให้บริษัทเสี่ยงต่อการถูกเจาะ แต่ยังโยนความรับผิดชอบที่ฉันไม่ต้องการมาให้ด้วย ฉันอาจเผลอทำของสำคัญพัง หรือถ้ามีอะไรถูกแฮ็ก คนอาจสงสัยฉันเพียงเพราะฉันมีสิทธิ์นั้นอยู่
โดยพื้นฐานแล้วเรากำลังเจออะไรคล้าย ป๊อปอัปความปลอดภัยของ Windows XP ในระดับบริการ ทุกขั้นตอนของงานถูกขอให้ยืนยันตัวตนกับอะไรอีกอย่างหนึ่ง และอาจใช้เวลาหลายวันกว่าจะได้ข้อมูลรับรองที่ถูกต้องพร้อมสิทธิ์ที่เหมาะสม
ในแง่มนุษย์ก็พอเข้าใจได้ที่ทีมซัพพอร์ตจะยอมแพ้แล้วโยนบัญชีและสิทธิ์ให้พนักงานใหม่ทีเดียวเป็นก้อน
ส่วนที่บทความนี้ขาดไปคือ ถ้าบัญชีที่ไม่ใช่บัญชีใช้งานจริงมีสิทธิ์ผู้ดูแลโดเมนใช้งานจริง ผู้เขียนนิยามคำว่า “ใช้งานจริง” อย่างไร
ดังนั้นการไปโฟกัสมุมว่า “ในบริษัทที่มีพนักงาน 220,000 คน มีใครสักคนพลาดในช่วงเวลาใดเวลาหนึ่ง” จึงไม่ค่อยมีประโยชน์
แต่ในบริษัทส่วนใหญ่ มักมีเส้นแบ่งที่แข็งแรงและหนาระหว่างระบบใช้งานจริงกับระบบทดสอบ การให้สิทธิ์เข้าถึงระบบใช้งานจริงแก่บัญชีทดสอบควรแทบเป็นไปไม่ได้เลย ดังนั้นจุดโฟกัสของการสอบสวนควรเป็นว่าเรื่องแบบนั้นเกิดขึ้นได้อย่างไร
เคยเห็นกรณีที่หนักกว่านี้ด้วย ผมเคยทำงานที่สำนักงานกฎหมายแห่งหนึ่ง ซึ่งให้สิทธิ์ผู้ดูแลระบบเหนือทุกอย่างแก่ผู้บริหารและพาร์ตเนอร์
หลังรีเซ็ตรหัสผ่าน รหัสผ่านเริ่มต้นคือ “passme” เพราะรหัสผ่านเดิมยาวเกินไปจนจำยาก เขาควรต้องเปลี่ยนรหัสผ่านหลังล็อกอินเข้าเซิร์ฟเวอร์
แฮ็กเกอร์ยึดบัญชีของพวกเขาไปได้หลายบัญชี แล้วเข้าไปยุ่งกับนั่นนี่และขโมยข้อมูล บัญชีทดสอบบางบัญชีก็มีสิทธิ์ผู้ดูแลระบบด้วย
ดีแล้วที่ผมไม่ได้ทำงานที่นั่นอีก ผมเป็นโปรแกรมเมอร์นักวิเคราะห์ และมีสิทธิ์ผู้ดูแลบนพีซีของตัวเองเท่านั้นเพื่อให้ Visual BASIC 6.0 ทำงานได้
แพตเทิร์นแบบนี้ในระบบนิเวศของ Microsoft โดยรวมแล้วใกล้เคียงกับกฎมากกว่าจะเป็นข้อยกเว้น แต่การที่ Microsoft เองทำแบบนี้ถือว่าน่าอายเป็นพิเศษ
ทีมความปลอดภัยของ Microsoft ทุ่มเทไม่น้อยกับเครื่องมือและเอกสารแนวปฏิบัติที่ดีเพื่อป้องกันเหตุการณ์ใหญ่แบบนี้
M365 บังคับใช้การยืนยันตัวตนหลายปัจจัยได้ค่อนข้างแย่ เป็นโครงสร้างที่ต้องจ่ายเงิน
ปัญหาที่ใหญ่กว่าคือผู้คนลืม สร้างบัญชีทดสอบที่มีสิทธิ์ผู้ดูแลไว้ห้าบัญชี แล้วมันจะไม่โผล่มาจนกว่าจะมีใครสักคนทำ audit สิทธิ์ผู้ใช้ทั้งบริษัท
บริษัทที่ผมเคยทำงานมาก่อนใส่รหัสผ่านทั้งหมดของเซิร์ฟเวอร์และฐานข้อมูลใช้งานจริงไว้ในไฟล์ข้อความใน code repository เพราะหัวหน้าสถาปนิกไม่อยากจำรหัสผ่าน
พอผมบอก CTO ว่านั่นโง่แค่ไหน ก็ได้คำตอบว่า “เราเชื่อใจพนักงานของเรา” และ “เราผ่านการตรวจสอบความปลอดภัยแล้ว”
จนถึงตอนนี้ยังรู้สึกเจ็บจากการเอามือตบหน้าตัวเองอยู่เลย
มันเป็นแค่สิ่งน่ารำคาญ ไม่ใช่ฟีเจอร์ด้านความปลอดภัย ผมไม่ใช้รหัสผ่านอย่าง “c00lz500” แต่ใช้แบบสตริงว่างไปเลย
แล้วใช้ไฟร์วอลล์และเครือข่ายภายในแทน