GitHub เปิดฟีเจอร์ Cooldown ให้ Dependabot รอ 3 วันก่อนอัปเดตเวอร์ชัน ช่วยสกัดมัลแวร์จาก Supply Chain Attacks

เมื่อเดือนกันยายน 2025 เกิดเหตุผู้โจมตีใช้วิธีฟิชชิงเพื่อขโมยข้อมูลประจำตัวของผู้ดูแลแพ็กเกจ npm และส่งเวอร์ชันที่มีมัลแวร์ของแพ็กเกจชื่อดังอย่าง chalk และ debug ออกไป ซึ่งมียอดดาวน์โหลดรวมกันกว่า 2 พันล้านครั้งต่อสัปดาห์ โค้ดดังกล่าวจะคอยดักขโมยข้อมูลกระเป๋าเงินคริปโตในเบราว์เซอร์ โดยเวอร์ชันอันตรายเหล่านี้แพร่กระจายอยู่เพียง 2 ชั่วโมงก่อนจะถูกตรวจพบและถอนออก
แม้การตอบสนองใน 2 ชั่วโมงจะถือว่ารวดเร็ว แต่สำหรับเครื่องมืออัปเดตอัตโนมัติที่ถูกออกแบบมาให้คว้าเวอร์ชันล่าสุดทันที มันเป็นเวลาที่มากเกินพอที่จะดึงโค้ดอันตรายเหล่านั้นมาวางตรงหน้าทีมพัฒนาของคุณได้ทันที
เหตุการณ์นี้สะท้อนถึงรูปแบบการโจมตีห่วงโซ่อุปทาน (supply chain attacks) ที่เพิ่มสูงขึ้น โดยโค้ดอันตรายจะแฝงตัวมากับเวอร์ชันใหม่ล่าสุดและถูกดึงเข้าสู่กระบวนการสร้าง (build pipelines) ภายในไม่กี่นาที ก่อนที่มนุษย์หรือเครื่องสแกนความปลอดภัยจะได้ตรวจสอบความผิดปกติเสียด้วยซ้ำ
การเพิ่มระยะพัก (cooldown) จึงเข้ามาเปลี่ยนสมการนี้ การรอเวลาเพียงไม่กี่วันก่อนจะรับเวอร์ชันใหม่มาใช้ จะช่วยให้ผู้ดูแลระบบ นักวิจัย และเครื่องสแกนอัตโนมัติ มีเวลามากพอในการตรวจพบและกำจัดเวอร์ชันที่เป็นอันตรายออกไป ก่อนที่มันจะสร้าง pull requests เข้าสู่โปรเจกต์ของคุณ
ปัจจุบัน Dependabot กำหนดค่าพื้นฐานสำหรับการอัปเกรดเวอร์ชันปกติ (non-security updates) ให้รออย่างน้อย 3 วันหลังจากมีการเผยแพร่เวอร์ชันใหม่ อย่างไรก็ตาม คุณยังคงสามารถปรับจูนระยะเวลาที่ต้องการได้เองผ่านเมนู cooldown ในไฟล์ dependabot.yml เพื่อให้เหมาะสมกับความต้องการของแต่ละโปรเจกต์
การอัปเดต Dependabot สองประเภท
Dependabot เป็นเครื่องมือในตัวของ GitHub ที่ช่วยดูแลความปลอดภัยและความสดใหม่ของแพ็กเกจ (dependencies) โดยแบ่งหน้าที่เป็นสองส่วนหลัก:
- Security updates มีไว้สำหรับตอบสนองต่อช่องโหว่ที่ทราบแล้ว: เมื่อมีการประกาศคำแนะนำด้านความปลอดภัย (advisory) สำหรับแพ็กเกจที่คุณใช้ Dependabot จะส่งการแจ้งเตือนและเปิด pull request เพื่อให้คุณเปลี่ยนไปใช้เวอร์ชันที่แก้ไขแล้วทันที
- Version updates มีไว้สำหรับดูแลให้แพ็กเกจเป็นเวอร์ชันล่าสุดเสมอ โดยไม่คำนึงว่าเวอร์ชันปัจจุบันจะมีปัญหาความปลอดภัยหรือไม่
ข้อควรระวังคือ การตั้งค่าระยะพัก 3 วันนี้จะใช้เฉพาะกับการอัปเดตเวอร์ชัน (version updates) เท่านั้น ส่วนการอัปเดตความปลอดภัย (security updates) จะยังคงทำงานทันที เพราะความล่าช้าในจุดนี้อาจกลายเป็นการเปิดช่องให้ช่องโหว่ที่ถูกเปิดเผยต่อสาธารณะแล้วเข้าโจมตีระบบได้ ทุกประเด็นในบทความนี้จึงเน้นไปที่การลดความเสี่ยงจากการรับโมเดลใหม่เกินไปโดยไม่ได้ตรวจสอบ
กรณีศึกษาและข้อมูลจาก GitHub Advisory Database
เมื่อผู้โจมตีเจาะระบบแพ็กเกจยอดนิยมได้ เวอร์ชันที่ถูกวางยามักจะถูกตรวจพบและถอนออกภายในไม่กี่ชั่วโมง เช่น บิลด์ที่ถูกเจาะระบบของ Solana web3.js, Axios และ ua-parser-js ซึ่งทั้งหมดมีลักษณะการออนไลน์สั้นๆ ในช่วงแรก
ข้อมูลจาก GitHub Advisory Database แสดงให้เห็นกระแสความเสี่ยงที่เพิ่มขึ้น โดยในปีที่สิ้นสุดเมื่อพฤษภาคม 2026 มีการเผยแพร่คำแนะนำเกี่ยวกับมัลแวร์ใน npm มากกว่า 6,500 รายการ เพิ่มขึ้นจากปีก่อนหน้า หมายความว่ามีแพ็กเกจอันตรายรายใหม่เฉลี่ยถึง 18 รายการในทุกวัน ระยะพักจะเปรียบเสมือนเกราะป้องกันที่ทำให้คุณอยู่นอกเขตอันตรายในช่วงไม่กี่ชั่วโมงแรกของการเผยแพร่
ทำไมต้องสามวัน
จากการ ตรวจสอบเหตุการณ์ห่วงโซ่อุปทานที่สำคัญ 21 กรณี ระหว่างปี 2018 ถึง 2026 พบว่ามัลแวร์ในแพ็กเกจยอดนิยมอย่าง axios หรือ Ledger Connect Kit มักถูกถอนออกภายในไม่กี่ชั่วโมง การตั้งระยะพักไว้ 3 วันจึงเป็นตัวเลขที่สมดุลที่สุด
ตัวเลขนี้ช่วยให้คุณก้าวพ้นหน้าต่างเวลาที่การโจมตีส่วนใหญ่ทำงานอยู่ ขณะเดียวกันก็ไม่ดึงให้ซอฟต์แวร์ของคุณล้าหลังนานเกินความจำเป็น ซึ่งเป็นแนวทางที่นักพัฒนาส่วนใหญ่ยอมรับและสอดคล้องกับพฤติกรรมการอัปเดตเครื่องมือในปัจจุบัน
การป้องกันเชิงลึก (Defense in depth)
แม้ระยะพักจะช่วยป้องกันมัลแวร์ที่มาเร็วไปเร็วได้ดี แต่มันไม่ใช่คำตอบสำหรับการโจมตีระยะยาว เช่น การฝังประตูหลัง (backdoors) ทิ้งไว้นานๆ หรือการเจาะระบบจากภายใน ดังนั้นคุณจึงควรใช้มาตรการนี้ควบคู่ไปกับการป้องกันชั้นอื่นๆ
สิ่งที่ควรทำเพิ่มเติมคือการระบุเวอร์ชันใน lockfiles, การปิดสคริปต์ติดตั้งใน CI, การกำหนดขอบเขตโทเคน และการตรวจสอบความถูกต้องก่อนการรวม (merge) โค้ดทุกครั้ง
หากคุณต้องการปรับระยะเวลาให้แตกต่างกันระหว่างแพ็กเกจภายในและสาธารณะ สามารถอ่านเพิ่มเติมได้ที่ เอกสารประกอบการกำหนดค่า Dependabot หรือ ข้อมูลอ้างอิงตัวเลือก Dependabot เพื่อตั้งค่าพารามิเตอร์ cooldown ให้เหมาะสม
ก้าวต่อไปจากจุดนี้
นี่เป็นเพียงก้าวหนึ่งของการเสริมสร้างความปลอดภัยให้กับห่วงโซ่อุปทานซอฟต์แวร์บน GitHub โดยระบบจะเปิดใช้งานค่าพื้นฐานนี้ให้ทันทีโดยที่คุณไม่ต้องแก้ไขโปรเจกต์เดิม แต่อย่างไรก็ตามคุณสามารถปรับแต่งเพิ่มได้ตามเวิร์กโฟลว์ของทีม
หากมีข้อเสนอแนะเพิ่มเติม สามารถร่วมพูดคุยได้ที่ การหารือของชุมชน Dependabot
ความคิดเห็น (0)
เข้าสู่ระบบเพื่อร่วมแสดงความเห็น
สมัครสมาชิกมาเป็นคนแรกที่แสดงความเห็นกันเลยโบร
