GitHub โดนขโมย 3,800 รีโพซิทอรีหลังจาก VS Code Extension อันตรายโจมตี

เครื่องมือสำหรับนักพัฒนาที่ถูกโจมตีนำไปสู่การละเมิดรีโพซิทอรีที่น่าตกใจที่สุดครั้งหนึ่งในความทรงจำที่ผ่านมา ขณะนี้ GitHub กำลังสืบสวนเหตุการณ์ด้านความปลอดภัยซึ่ง Visual Studio Code extension ที่เป็นอันตรายได้แพร่เชื้อเข้าสู่อุปกรณ์ของพนักงาน ส่งผลให้มีการขโมยรีโพซิทอรีภายในประมาณ 3,800 แห่ง โค้ดที่ถูกขโมยถูกนำไปลงประกาศขายในฟอรัมอาชญากรรมไซเบอร์โดยกลุ่มผู้คุกคามที่เรียกตัวเองว่า TeamPCP สำหรับทีมความปลอดภัยและนักพัฒนาที่พึ่งพารีโพซิทอรีภายใน เหตุการณ์นี้เป็นเครื่องเตือนใจอย่างชัดเจนว่าความปลอดภัยของอุปกรณ์นักพัฒนาและความเสี่ยงจากการละเมิดรีโพซิทอรีโค้ดเป็นปัญหาที่แยกจากกันไม่ได้

VS Code Extension อันตรายโจมตีพนักงาน GitHub ได้อย่างไร

Visual Studio Code กลายเป็น editor ที่ครองตลาดในการพัฒนาซอฟต์แวร์ระดับมืออาชีพ และ marketplace ของ extension นั้นมีขนาดใหญ่มาก นักพัฒนาส่วนใหญ่ปฏิบัติต่อ extension เช่นเดียวกับแอปพลิเคชันมือถือ: ติดตั้ง เชื่อใจ แล้วก็ผ่านไป ข้อสมมติฐานนั้นคือสิ่งที่ผู้โจมตีกำลังใช้ประโยชน์อยู่

ในเหตุการณ์นี้ พนักงาน GitHub คนหนึ่งติดตั้งสิ่งที่ดูเหมือนจะเป็น VS Code extension ที่ถูกฝังโทรจัน เมื่อติดตั้งแล้ว extension ที่เป็นอันตรายนั้นสามารถเข้าถึงสภาพแวดล้อมเดียวกับนักพัฒนาได้: ระบบไฟล์ของพวกเขา ข้อมูลรับรองที่แคชใน IDE โทเค็นการยืนยันตัวตนที่ใช้งานอยู่ และการเชื่อมต่อเครือข่ายที่อุปกรณ์รักษาไว้ จากจุดเข้าเพียงจุดเดียวนั้น ผู้โจมตีสามารถเข้าถึงรีโพซิทอรีภายในของ GitHub และดึงโค้ดที่เป็นทรัพย์สินในปริมาณมากออกไปได้

นี่ไม่ใช่เส้นทางการโจมตีเชิงทฤษฎี แพ็กเกจและ extension ที่เป็นอันตรายเป็นปัญหาที่เติบโตขึ้นในระบบนิเวศของนักพัฒนา ตั้งแต่ npm และ PyPI ไปจนถึงร้านค้า extension ของเบราว์เซอร์ marketplace ของ extension ใน VS Code แม้จะมีขนาดใหญ่และใช้กันอย่างแพร่หลาย แต่ในอดีตก็อาศัยการสแกนอัตโนมัติที่ผู้คุกคามที่มีความซับซ้อนสามารถหลบเลี่ยงได้ผ่านการส่ง payload ล่าช้าหรือการปกปิดโค้ด

สิ่งที่ถูกขโมยและสิ่งที่รายการขายของ TeamPCP เปิดเผย

ตามข้อมูลที่มีอยู่ รีโพซิทอรีภายใน GitHub ประมาณ 3,800 แห่งถูกขโมยออกไประหว่างเหตุการณ์ดังกล่าว TeamPCP กลุ่มที่อ้างว่ารับผิดชอบ ได้นำเอกสารเหล่านี้ไปลงประกาศในฟอรัมอาชญากรรมไซเบอร์ในเวลาต่อมา ซึ่งบ่งชี้ว่าแรงจูงใจเป็นเรื่องการเงินมากกว่าการจารกรรม

ขนาดของรายการประกาศนั้นน่าสังเกต รีโพซิทอรีภายในของบริษัทอย่าง GitHub อาจประกอบด้วยเครื่องมือที่เป็นทรัพย์สิน โค้ดโครงสร้างพื้นฐานภายใน ตรรกะด้านความปลอดภัย และการผสานรวมกับบริการ Microsoft อื่นๆ แม้ว่าจะไม่มีข้อมูลลูกค้าโดยตรง โค้ดภายในก็สามารถเปิดเผยสมมติฐานทางสถาปัตยกรรม กระแสการยืนยันตัวตน และขอบเขตระบบที่ผู้โจมตีที่มีความซับซ้อนสามารถใช้วางแผนการบุกรุกครั้งต่อไปได้

รายการการขายนั้นยังส่งสัญญาณสำคัญ: การละเมิดไม่ได้ถูกควบคุมทันทีก่อนที่ผู้โจมตีจะมีเวลาขโมย จัดระเบียบ และนำเสนอเอกสารที่ถูกขโมยออกขาย ลำดับนั้นบ่งชี้ว่าการบุกรุกเริ่มต้นมีระยะเวลาในการซุ่มซ่อนที่มีนัยสำคัญ หรืออย่างน้อยที่สุด การขโมยข้อมูลเกิดขึ้นเร็วพอที่จะเสร็จสิ้นก่อนการตรวจจับและการควบคุม

เหตุใด Endpoint ของนักพัฒนาจึงเป็นจุดอ่อนที่สุดในการรักษาความปลอดภัยของรีโพซิทอรี

องค์กรระดับองค์กรมักลงทุนอย่างหนักในการรักษาความปลอดภัยของขอบเครือข่าย การตรวจสอบเครือข่าย และการควบคุมการเข้าถึงระบบการผลิต สิ่งที่มักได้รับการตรวจสอบน้อยกว่าคือ endpoint ของนักพัฒนาเอง ไม่ว่าจะเป็นแล็ปท็อปหรือเวิร์กสเตชันที่วิศวกรซอฟต์แวร์ใช้เขียน ทดสอบ และพุชโค้ดทุกวัน

อุปกรณ์ของนักพัฒนาเป็นเป้าหมายที่มีมูลค่าสูงอย่างแม่นยำเพราะการเข้าถึงที่มีอยู่ เซสชันนักพัฒนาที่ผ่านการยืนยันตัวตนแค่หนึ่งเดียวสามารถเข้าถึงรีโพซิทอรีภายใน, CI/CD pipelines, ระบบจัดการ secret และ console โครงสร้างพื้นฐานคลาวด์ได้ การโจมตีอุปกรณ์เครื่องนั้นเพียงเครื่องเดียวส่งผลให้ผู้โจมตีได้รับบัตรผ่านที่ผ่านการยืนยันตัวตนล่วงหน้าผ่านการรักษาความปลอดภัยขององค์กรหลายชั้น

การโจมตีห่วงโซ่อุปทานผ่าน extension และแพ็กเกจนั้นอันตรายเป็นพิเศษในบริบทนี้เพราะมันผสมเข้ากับพฤติกรรมปกติของนักพัฒนา การติดตั้งเครื่องมือใหม่เป็นเรื่องปกติ นักพัฒนาไม่ได้รับการฝึกฝนให้ปฏิบัติต่อ IDE extension ทุกตัวว่าเป็นพาหะภัยคุกคามที่อาจเกิดขึ้นในแบบเดียวกับที่ทีมความปลอดภัยปฏิบัติต่อไฟล์ปฏิบัติการที่ไม่รู้จัก ช่องว่างในทัศนคตินั้นคือสิ่งที่กลุ่มภัยคุกคามอย่าง TeamPCP กำลังใช้ประโยชน์อยู่อย่างจริงจัง

เหตุการณ์นี้สะท้อนรูปแบบที่กว้างขึ้น: ผู้โจมตีไม่ได้พยายามเจาะผ่านไฟร์วอลล์โดยตรงอีกต่อไป พวกเขากำลังโจมตี endpoint ของมนุษย์ที่น่าเชื่อถือซึ่งมีการเข้าถึงที่ถูกต้องตามกฎหมายอยู่แล้ว

การป้องกันแบบหลายชั้น: VPN, Zero-Trust และ MFA เพื่อปกป้องการเข้าถึงโค้ดภายใน

ไม่มีการควบคุมเพียงอย่างเดียวที่ป้องกันการโจมตีประเภทนี้ได้ แต่การป้องกันแบบหลายชั้นสามารถลดขอบเขตความเสียหายได้อย่างมีนัยสำคัญเมื่ออุปกรณ์ถูกโจมตี

การเข้าถึงเครือข่ายแบบ Zero-trust เป็นการเปลี่ยนแปลงทางสถาปัตยกรรมที่เกี่ยวข้องที่สุดในที่นี้ ภายใต้โมเดล zero-trust ความน่าเชื่อถือของอุปกรณ์จะได้รับการประเมินอย่างต่อเนื่องแทนที่จะถูกสมมติว่ามีอยู่ แม้ว่าผู้โจมตีจะมีโทเค็นเซสชันที่ถูกต้อง พฤติกรรมที่ผิดปกติ (เช่น การ clone รีโพซิทอรีจำนวนมากในชั่วโมงที่ผิดปกติ) สามารถทริกเกอร์การยืนยันตัวตนใหม่หรือการสิ้นสุดเซสชันอัตโนมัติได้ การจับคู่ zero-trust กับการตรวจจับ endpoint ที่แข็งแกร่งช่วยให้ทีมความปลอดภัยมองเห็นว่ากระบวนการใดกำลังทำการเรียกเครือข่าย รวมถึง extension ที่เป็นอันตราย

การยืนยันตัวตนหลายปัจจัย ด้วยคีย์ที่ผูกกับฮาร์ดแวร์เพิ่มอุปสรรคอีกชั้น MFA ที่ต้านทานฟิชชิ่ง (FIDO2/passkeys) ช่วยให้มั่นใจว่าแม้แต่อุปกรณ์ที่ถูกโจมตีอย่างสมบูรณ์ก็ไม่สามารถยืนยันตัวตนในเซสชันใหม่ได้อย่างเงียบๆ โดยไม่ต้องมีการโต้ตอบทางกายภาพจากผู้ใช้

VPN มีบทบาทเฉพาะและมักถูกประเมินค่าต่ำเกินไปในชุดนี้ เมื่อนักพัฒนาเข้าถึงระบบภายในจากระยะไกล การกำหนดเส้นทางการรับส่งข้อมูลนั้นผ่าน VPN ที่ผ่านการตรวจสอบความเป็นส่วนตัวพร้อมแนวปฏิบัติการไม่เก็บ log ที่เข้มงวดจะช่วยลดความเสี่ยงจากการสกัดกั้นเซสชันและจำกัดการมองเห็นระดับเครือข่ายที่มีให้กับผู้โจมตีที่โจมตีอุปกรณ์หรือเส้นทางเครือข่ายบางส่วน สำหรับทีมวิศวกรรมที่กำลังประเมินตัวเลือก Mullvad เป็นตัวเลือกที่คุ้มค่าแก่การพิจารณา: ไม่ต้องใช้อีเมลในการสมัคร ใช้หมายเลขบัญชีแบบไม่ระบุตัวตน และการอ้างสิทธิ์การไม่เก็บ log ได้รับการยืนยันในสภาวะจริงเมื่อตำรวจสวีเดนบุกค้นและไม่พบสิ่งใดที่จะยึด แอปของ Mullvad เป็นโอเพนซอร์สทั้งหมด ซึ่งเป็นคุณสมบัติที่มีความหมายสำหรับทีมที่มุ่งเน้นนักพัฒนาซึ่งต้องการตรวจสอบสิ่งที่กำลังรัน

สำหรับทีมที่ให้ความสำคัญกับโครงสร้างพื้นฐานที่ผ่านการตรวจสอบอย่างอิสระ Private Internet Access มีการอ้างสิทธิ์การไม่เก็บ log ที่ได้รับการพิสูจน์ในกระบวนการศาลของรัฐบาลกลาง และรักษาแอปโอเพนซอร์สทั้งหมดที่ได้รับการสนับสนุนจากการตรวจสอบโดยบุคคลที่สาม

นอกเหนือจาก VPN องค์กรควรบังคับใช้การอนุญาตรายการ extension สำหรับเครื่องมือนักพัฒนา กำหนดให้มีการลงนามโค้ดหรือการอนุมัติขององค์กรก่อนที่จะติดตั้ง IDE extension บนอุปกรณ์ขององค์กร และดูแลบันทึกการตรวจสอบโดยละเอียดของรูปแบบการเข้าถึงรีโพซิทอรีเพื่อตรวจจับการขโมยข้อมูลจำนวนมากตั้งแต่เนิ่นๆ

ความหมายสำหรับคุณ

หากคุณเป็นนักพัฒนาหรือเป็นส่วนหนึ่งของทีมวิศวกรรมที่เข้าถึงรีโพซิทอรีภายในจากระยะไกล เหตุการณ์นี้เป็นสัญญาณโดยตรงให้ทบทวนทัศนคติ endpoint ของคุณ

ข้อสรุปที่นำไปปฏิบัติได้:

  • ตรวจสอบ VS Code extension ทุกตัวที่ติดตั้งอยู่บนเครื่องทำงานของคุณในขณะนี้ ลบทุกอย่างที่คุณไม่ได้ตั้งใจติดตั้งหรือไม่ได้ใช้งานอีกต่อไป
  • ปฏิบัติต่อ IDE extension ด้วยความสงสัยแบบเดียวกับที่คุณจะใช้กับการติดตั้งไฟล์ปฏิบัติการที่ไม่รู้จัก ตรวจสอบการยืนยันผู้เผยแพร่และจำนวนรีวิวก่อนติดตั้ง
  • สนับสนุนให้องค์กรของคุณนำการอนุญาตรายการ extension ไปใช้กับอุปกรณ์นักพัฒนาที่มีการจัดการ
  • ตรวจสอบให้แน่ใจว่าการเข้าถึงรีโพซิทอรีภายในของคุณครอบคลุมด้วย MFA ที่ต้านทานฟิชชิ่ง ไม่ใช่แค่รหัสผ่านบวก SMS
  • หากทีมของคุณเข้าถึงระบบภายในผ่านเครือข่ายสาธารณะหรือที่ไม่ได้ควบคุม ให้เพิ่ม VPN ที่ผ่านการตรวจสอบความเป็นส่วนตัวเป็นหนึ่งชั้นของชุดการเข้าถึงระยะไกลแบบ zero-trust
  • ทำงานร่วมกับทีมความปลอดภัยของคุณเพื่อกำหนดการแจ้งเตือนพื้นฐานสำหรับการเข้าถึงรีโพซิทอรีจำนวนมากหรือพฤติกรรมการ clone ที่ผิดปกติ

เหตุการณ์ GitHub ยังอยู่ระหว่างการสืบสวน และขอบเขตเต็มของสิ่งที่ถูกเข้าถึงอาจยังไม่เปิดเผยต่อสาธารณะในอีกระยะหนึ่ง สิ่งที่ชัดเจนอยู่แล้วคือ endpoint ของนักพัฒนาเป็นพื้นผิวที่มีมูลค่าสูงและได้รับการปกป้องน้อยเกินไปในองค์กรส่วนใหญ่ การแก้ไขช่องว่างนั้นไม่จำเป็นต้องปรับปรุงโครงสร้างพื้นฐานทั้งหมด มันเริ่มต้นด้วยการปฏิบัติต่อเวิร์กสเตชันของนักพัฒนาในฐานะขอบเขตความปลอดภัยในตัวของมันเอง