การโจมตีห่วงโซ่อุปทาน: แพ็กเกจอันตรายและไลบรารีวอลเล็ตที่ถูกเจาะ
การโจมตีห่วงโซ่อุปทานคริปโตซ่อนโค้ดอันตรายไว้ในซอฟต์แวร์ที่คุณไว้ใจ เรียนรู้ว่าแพ็กเกจและไลบรารีวอลเล็ตที่ถูกเจาะทำงานอย่างไร และจะป้องกันตัวเองได้อย่างไร
การโจมตีห่วงโซ่อุปทานคริปโตคือการที่อาชญากรเจาะระบบซอฟต์แวร์ที่วอลเล็ต แอป หรือเว็บไซต์ต้องพึ่งพา เช่น แพ็กเกจโอเพนซอร์ส ส่วนขยายเบราว์เซอร์ หรือเซิร์ฟเวอร์อัปเดต เพื่อให้โค้ดอันตรายเข้าถึงผู้ใช้ผ่านช่องทางที่น่าเชื่อถือ โดยทั่วไปโค้ดจะสลับที่อยู่ปลายทาง ฝัง wallet drainer ลงในเว็บไซต์ หรือขโมยวลีกู้คืน และเหยื่อมักไม่ได้ทำอะไรผิดเลยนอกจากใช้ผลิตภัณฑ์ที่ตนไว้ใจอยู่แล้ว
การโจมตีเหล่านี้สำคัญกับทุกคนในวงการคริปโต ไม่ใช่แค่นักพัฒนา วอลเล็ตและแอปแบบกระจายศูนย์สมัยใหม่สร้างขึ้นจากส่วนประกอบของบุคคลที่สามนับร้อย และส่วนประกอบเพียงชิ้นเดียวที่ถูกเจาะก็อาจส่งผลต่อผลิตภัณฑ์จำนวนมากพร้อมกัน คู่มือนี้อธิบายว่าการโจมตีทำงานอย่างไร ต้องระวังอะไร และจะลดความเสี่ยงได้อย่างไรทั้งในฐานะผู้ใช้และผู้พัฒนา
การโจมตีห่วงโซ่อุปทานทำงานอย่างไร
“ห่วงโซ่อุปทาน” ของแอปคริปโตคือทุกสิ่งที่ประกอบขึ้นเป็นแอป ได้แก่ ไลบรารีโค้ด เครื่องมือบิลด์ ผู้ให้บริการโฮสติ้ง เครือข่ายส่งเนื้อหา (CDN) และเซิร์ฟเวอร์อัปเดต การโจมตีมักเป็นไปตามขั้นตอนเหล่านี้:
- 1เข้าถึงระบบ ผู้โจมตีฟิชชิงผู้ดูแลไลบรารียอดนิยม ซื้อแพ็กเกจที่ถูกทิ้งร้าง เดารหัสผ่านที่อ่อนแอ หรือเจาะเซิร์ฟเวอร์บิลด์
- 2แทรกโค้ดอันตราย ผู้โจมตีเผยแพร่เวอร์ชันใหม่ที่มีโค้ดซ่อนอยู่ ซึ่งมักถูกทำให้อ่านยากและออกแบบให้ทำงานเฉพาะในบางเงื่อนไข เช่น เมื่อมีวอลเล็ตคริปโตอยู่
- 3แพร่กระจายผ่านอัปเดต แอปที่ดึงไลบรารีเวอร์ชันล่าสุดโดยอัตโนมัติจะรวมโค้ดอันตรายไว้ในบิลด์ถัดไป ส่วนเว็บไซต์จะได้รับผลทันทีที่สคริปต์โหลด
- 4ขโมย โค้ดอาจแทนที่ที่อยู่ที่คัดลอกไว้ในคลิปบอร์ด แสดงคำขอธุรกรรมปลอม ขอวลีกู้คืน หรือฝัง drainer ลงในฟรอนต์เอนด์ของแอปแบบกระจายศูนย์
- 5ซ่อนร่องรอย ผู้โจมตีมักลบโค้ดออกอย่างรวดเร็วหลังใช้งาน ทำให้การสืบสวนยากขึ้น
มีเหตุการณ์จริงที่ได้รับการบันทึกไว้ตามรูปแบบนี้ ในปี 2018 ดีเพนเดนซีอันตรายที่ถูกเพิ่มเข้าไปในแพ็กเกจ JavaScript ยอดนิยมถูกออกแบบมาเพื่อขโมยจากผู้ใช้แอปวอลเล็ต bitcoin ตัวหนึ่งโดยเฉพาะ ในเดือนธันวาคม 2023 ไลบรารี Connect Kit ของ Ledger เวอร์ชันที่ถูกเจาะทำให้แอปแบบกระจายศูนย์หลายตัวแสดง wallet drainer ต่อผู้ใช้ในช่วงเวลาสั้น ๆ ทั้งสองกรณีแสดงให้เห็นว่าจุดอ่อนอยู่ที่โค้ดที่ใช้ร่วมกัน ไม่ใช่ผู้ใช้ อ่านเพิ่มเติมได้ที่ ความเสี่ยงของที่อยู่ Vanity และที่อยู่ที่หน้าตาคล้ายกัน
ช่องทางเข้าที่พบบ่อย
| ช่องทางเข้า | วิธีที่ถูกนำไปใช้ในทางที่ผิด | ผู้ที่ได้รับผลกระทบ |
|---|---|---|
| แพ็กเกจโอเพนซอร์ส (npm, PyPI และที่คล้ายกัน) | เผยแพร่เวอร์ชันอันตราย หรืออัปโหลดแพ็กเกจที่ชื่อคล้ายกันมาก | แอปและนักพัฒนาที่ใช้แพ็กเกจนั้น |
| สคริปต์ฟรอนต์เอนด์ที่โหลดจากบุคคลที่สาม | สคริปต์ถูกแก้ไขเพื่อฝัง drainer | ผู้เข้าชมเว็บไซต์ทุกคน |
| ส่วนขยายเบราว์เซอร์ | ส่วนขยายถูกขายหรือถูกยึด แล้วอัปเดตพร้อมโค้ดอันตราย | ผู้ใช้ที่ติดตั้งส่วนขยายนั้น |
| อัปเดตแอป | เซิร์ฟเวอร์อัปเดตหรือคีย์สำหรับลงนามถูกเจาะ | ผู้ใช้ที่ติดตั้งอัปเดต |
| เครื่องมือนักพัฒนาและแพ็กเกจที่ AI แนะนำ | ชื่อแพ็กเกจปลอมที่ดูน่าเชื่อถือ | นักพัฒนาที่ติดตั้งโดยไม่ตรวจสอบ |
Typosquatting หรือการอัปโหลดแพ็กเกจที่ชื่อใกล้เคียงกับแพ็กเกจยอดนิยมมาก พบได้บ่อยเป็นพิเศษ นักพัฒนาที่พิมพ์ชื่อแพ็กเกจผิดอาจติดตั้งมัลแวร์โดยไม่รู้ตัว
ตัวอย่างสมมติ
นี่เป็นตัวอย่างผสมเพื่อการอธิบาย ไม่ใช่กรณีจริง ลองนึกภาพกระดานเทรดแบบกระจายศูนย์ขนาดเล็กที่โหลดไลบรารีเชื่อมต่อวอลเล็ตยอดนิยมจากรีจิสทรีแพ็กเกจสาธารณะ เช้าวันหนึ่ง ผู้ดูแลไลบรารีโดนฟิชชิง และผู้โจมตีเผยแพร่เวอร์ชันใหม่ เว็บไซต์ของกระดานเทรดโหลดเวอร์ชันล่าสุดโดยอัตโนมัติ
ตลอดหลายชั่วโมง ผู้ใช้ทุกคนที่เชื่อมต่อวอลเล็ตจะเห็นสิ่งที่ดูเหมือนคำขอ swap ตามปกติ แต่ความจริงคือคำขอให้อนุมัติโทเคนของตนให้กับสัญญาของผู้โจมตี ผู้ใช้ที่อ่านหน้าจออนุมัติในวอลเล็ตอย่างละเอียดจะสังเกตเห็นสัญญาที่ไม่คุ้นเคยและหยุด ส่วนผู้ใช้ที่กดผ่านไปจะสูญเสียโทเคน ทีมของกระดานเทรดพบปัญหาเมื่อผู้ใช้รายงานความสูญเสียและออกประกาศเตือน แต่ตอนนั้นโค้ดถูกลบไปแล้ว
สัญญาณเตือนสำหรับผู้ใช้
- แอปที่คุ้นเคยจู่ ๆ ก็ขอวลีกู้คืน หรือขั้นตอน “ยืนยันวอลเล็ต” ที่ไม่เคยขอมาก่อน
- การทำรายการตามปกติทำให้เกิดคำขอในวอลเล็ตที่ผิดปกติ เช่น การอนุมัติแบบไม่จำกัด หรือการลงนามให้สัญญาที่ไม่รู้จัก
- ที่อยู่ที่แสดงบนหน้าจอฮาร์ดแวร์วอลเล็ตของคุณไม่ตรงกับที่อยู่ที่ตั้งใจไว้
- ส่วนขยายเบราว์เซอร์อัปเดตและขอสิทธิ์ใหม่ โดยเฉพาะสิทธิ์อ่านและเปลี่ยนแปลงข้อมูลบนทุกเว็บไซต์
- โปรเจกต์หรือนักวิจัยด้านความปลอดภัยโพสต์คำเตือนเร่งด่วนไม่ให้ใช้เว็บไซต์หรือแอปใดแอปหนึ่ง
สัญญาณเหล่านี้หลายข้อซ้อนทับกับมัลแวร์คลิปบอร์ดและแอปวอลเล็ตปลอม ซึ่งใช้เทคนิคคล้ายกัน ดูเพิ่มเติม: มัลแวร์อัปเดตเบราว์เซอร์ปลอมและ Captcha ที่มุ่งเป้าผู้ใช้คริปโต
วิธีป้องกันตัวเอง
ในฐานะผู้ใช้
- 1ใช้ฮาร์ดแวร์วอลเล็ต และอ่านที่อยู่ จำนวนเงิน และสัญญาบนหน้าจอก่อนยืนยัน
- 2ใช้ส่วนขยายให้น้อยที่สุด ลบส่วนขยายที่ไม่ได้ใช้ และระวังเมื่อส่วนขยายเปลี่ยนเจ้าของหรือขอสิทธิ์ใหม่
- 3แยกเงินออกจากกัน เก็บสินทรัพย์ระยะยาวไว้ในวอลเล็ตที่แทบไม่เชื่อมต่อกับเว็บไซต์ และใช้อีกวอลเล็ตหนึ่งสำหรับ DeFi ในชีวิตประจำวัน
- 4หยุดก่อนหลังมีคำเตือนด้านความปลอดภัย หลีกเลี่ยงการใช้แอปจนกว่าแอปจะยืนยันว่าแก้ไขปัญหาแล้ว
- 5เพิกถอนการอนุมัติที่ไม่จำเป็นเป็นระยะ
ในฐานะนักพัฒนาหรือโปรเจกต์
- ตรึงเวอร์ชันดีเพนเดนซีและใช้ lockfile ตรวจทานการเปลี่ยนแปลงก่อนอัปเกรด
- ตรวจสอบชื่อแพ็กเกจอย่างรอบคอบ และเลือกใช้ไลบรารีที่ได้รับการดูแลอย่างดี
- บังคับใช้การยืนยันตัวตนแบบหลายปัจจัยสำหรับบัญชีรีจิสทรีแพ็กเกจและบัญชีโฮสต์โค้ด
- ใช้รีลีสที่มีการลงนาม และใช้บิลด์ที่ทำซ้ำได้เมื่อทำได้ เพื่อให้ผู้ใช้ตรวจสอบไฟล์ไบนารีได้
- ใช้ content security policy และ subresource integrity สำหรับสคริปต์ของบุคคลที่สาม
สิ่งที่ต้องทำหากคุณได้รับผลกระทบ
- 1หยุดใช้แอปหรือส่วนขยายที่ได้รับผลกระทบ และตัดการเชื่อมต่อวอลเล็ตทั้งหมด
- 2ตรวจสอบประวัติธุรกรรมเพื่อหาการอนุมัติหรือการโอนในช่วงเวลาที่ได้รับผลกระทบ
- 3เพิกถอนการอนุมัติที่น่าสงสัย และย้ายเงินที่เหลือไปยังวอลเล็ตใหม่ที่มีวลีกู้คืนใหม่ หากวลีกู้คืนของคุณอาจรั่วไหล
- 4รวบรวมแฮชธุรกรรมและที่อยู่ แล้วรายงานเหตุการณ์ผ่านช่องทางทางการของโปรเจกต์และแบบฟอร์มรายงานการหลอกลวงของเรา
ทำตามเช็กลิสต์ฉบับเต็มในสิ่งที่ต้องทำทันทีหากวอลเล็ตของคุณถูกเจาะ
สรุป
การโจมตีห่วงโซ่อุปทานเปลี่ยนซอฟต์แวร์ที่น่าเชื่อถือให้กลายเป็นช่องทางในการขโมย คุณจึงไม่อาจพึ่งพาเพียงการหลีกเลี่ยงลิงก์น่าสงสัยได้ ให้ถือว่าหน้าจอฮาร์ดแวร์วอลเล็ตและคำขอในวอลเล็ตคือการตรวจสอบขั้นสุดท้าย ใช้ซอฟต์แวร์ให้น้อยที่สุด และตอบสนองต่อคำเตือนด้านความปลอดภัยอย่างเป็นทางการอย่างรวดเร็ว ผู้พัฒนาคือผู้ที่ต้องรับผิดชอบมากที่สุด: ตรึงเวอร์ชัน ตรวจทาน และลงนามทุกสิ่งที่คุณเผยแพร่
คำถามที่พบบ่อย
การโจมตีห่วงโซ่อุปทานในวงการคริปโตคืออะไร
คือการโจมตีที่อาชญากรเจาะระบบซอฟต์แวร์ที่ผลิตภัณฑ์อื่นต้องพึ่งพา เช่น ไลบรารีโค้ด ส่วนขยายเบราว์เซอร์ หรืออัปเดตแอป แทนที่จะโจมตีผู้ใช้โดยตรง เมื่อซอฟต์แวร์ที่น่าเชื่อถือนั้นได้รับการอัปเดต โค้ดอันตรายจะไปถึงทุกแอปและผู้ใช้ที่พึ่งพามัน ซึ่งมักใช้เพื่อขโมยคริปโตหรือสลับที่อยู่
การโจมตีห่วงโซ่อุปทานส่งผลต่อฮาร์ดแวร์วอลเล็ตได้หรือไม่
หน้าจอของฮาร์ดแวร์วอลเล็ตออกแบบมาเพื่อปกป้องคุณแม้คอมพิวเตอร์หรือเว็บไซต์จะถูกเจาะ เพราะคุณยืนยันที่อยู่และจำนวนเงินจริงบนอุปกรณ์ อย่างไรก็ตาม การโจมตียังหลอกให้คุณอนุมัติธุรกรรมอันตรายได้หากคุณไม่อ่านหน้าจอ ดังนั้นควรตรวจสอบรายละเอียดบนตัวอุปกรณ์เสมอ
จะรู้ได้อย่างไรว่าเว็บไซต์ที่ฉันเคยใช้ได้รับผลกระทบ
โดยทั่วไปคุณจะทราบจากประกาศอย่างเป็นทางการของโปรเจกต์ที่ได้รับผลกระทบหรือจากนักวิจัยด้านความปลอดภัย หากโปรเจกต์ที่คุณเคยใช้รายงานว่าไลบรารีหรือฟรอนต์เอนด์ถูกเจาะ ให้ตรวจสอบว่าคุณได้ลงนามอะไรในช่วงเวลาที่ได้รับผลกระทบหรือไม่ เพิกถอนการอนุมัติ และย้ายเงินไปยังวอลเล็ตใหม่หากจำเป็น
วอลเล็ตโอเพนซอร์สปลอดภัยจากการโจมตีห่วงโซ่อุปทานหรือไม่
โอเพนซอร์สช่วยได้เพราะมีคนตรวจสอบโค้ดได้มากขึ้น แต่ไม่ได้ทำให้ซอฟต์แวร์มีภูมิคุ้มกัน โค้ดอันตรายอาจเข้ามาผ่านดีเพนเดนซี บัญชีผู้ดูแลที่ถูกเจาะ หรือระบบบิลด์ การบิลด์ที่ทำซ้ำได้ รีลีสที่มีการลงนาม และการจัดการดีเพนเดนซีอย่างรอบคอบช่วยลดความเสี่ยงได้
