สรุปสั้น

GitHub ประกาศให้บริการ Staged Publishing บน npm อย่างเป็นทางการ (Generally Available) ซึ่งบังคับให้ Maintainer ต้องผ่านการยืนยันตัวตนแบบ Two-Factor Authentication (2FA) ก่อนที่แพ็กเกจจะถูกเผยแพร่และติดตั้งได้ แทนที่การ publish แบบเดิมที่ทำให้แพ็กเกจพร้อมใช้งานทันที แพ็กเกจที่ถูก submit จะถูกเก็บในคิว Stage จนกว่า Maintainer จะอนุมัติ มาตรการนี้ช่วยสร้าง “proof of presence” สำหรับทุก publish รวมถึงจาก CI/CD workflow แบบอัตโนมัติ นอกจากนี้ยังเพิ่ม Install Source Flag สามตัวใหม่ที่ให้ Developer ควบคุมว่าจะอนุญาตให้ติดตั้งแพ็กเกจจากแหล่งใดได้บ้าง การพัฒนานี้เป็นการตอบสนองโดยตรงต่อคลื่นการโจมตี Supply Chain ที่กำลังระบาดหนักในปัจจุบัน

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 23 พฤษภาคม 2569 ว่า GitHub ได้เปิดตัวระบบ Staged Publishing บน npm เพื่อเพิ่มความปลอดภัยของ Software Supply Chain โดยกระบวนการทำงานใหม่คือ Developer ใช้คำสั่ง npm stage publish เพื่อ submit แพ็กเกจไปยัง Stage Queue แทนการ publish ตรงทันที จากนั้น Maintainer ที่มีสิทธิ์ต้องผ่าน 2FA challenge เพื่ออนุมัติก่อนแพ็กเกจจะพร้อมให้ผู้อื่นติดตั้งได้ ข้อกำหนดในการใช้ Staged Publishing ได้แก่ ต้องมีสิทธิ์ publish ต่อแพ็กเกจนั้น, แพ็กเกจต้องมีอยู่ใน npm registry แล้ว (ใช้กับแพ็กเกจที่มีอยู่แล้วเท่านั้น ไม่รองรับแพ็กเกจใหม่), และต้องเปิดใช้งาน 2FA บนบัญชี รองรับการใช้งานร่วมกับ npm CLI เวอร์ชัน 11.15.0 ขึ้นไป และแนะนำให้ใช้คู่กับ Trusted Publishing ด้วย OIDC เพื่อความปลอดภัยสูงสุด

รายละเอียดฟีเจอร์ใหม่

Staged Publishing สร้าง “proof of presence” สำหรับทุก publish event ป้องกันสถานการณ์ที่ผู้โจมตียึด account ของ Maintainer แล้วปล่อยเวอร์ชันอันตรายโดยที่ Maintainer ไม่รู้ตัว เพราะ Maintainer ต้องยืนยันด้วยตัวเองก่อนเสมอ

Install Source Flags สามตัวใหม่ที่เพิ่มนอกเหนือจาก --allow-git ที่มีอยู่แล้ว:

  • --allow-file — ควบคุมการติดตั้งจาก Local File Path และ Local Tarball
  • --allow-remote — ควบคุมการติดตั้งจาก Remote URL รวมถึง HTTPS Tarball
  • --allow-directory — ควบคุมการติดตั้งจาก Local Directory

Flag เหล่านี้ช่วยให้ Developer กำหนด Allowlist สำหรับแหล่งติดตั้งที่ไม่ใช่ Registry อย่างชัดเจน ลดความเสี่ยงจากแหล่งที่มาที่ไม่น่าเชื่อถือในกระบวนการ build

การอัปเดตนี้มาในช่วงที่การโจมตี Software Supply Chain พุ่งสูงขึ้นอย่างมาก โดยกลุ่ม TeamPCP ถูกพบว่ากำลังวางยาพิษแพ็กเกจยอดนิยมในระดับที่ไม่เคยมีมาก่อนผ่านวงจรการ compromise แบบ Self-Perpetuating

ผลกระทบต่อไทย

Developer ไทยที่ Maintain npm Package สาธารณะ หรือองค์กรที่ใช้ npm ใน CI/CD Pipeline จะได้รับประโยชน์โดยตรงจากมาตรการนี้ ทีม DevSecOps ในไทยควรพิจารณาเปิดใช้งาน Staged Publishing สำหรับแพ็กเกจที่สำคัญ และใช้ Install Source Flag เพื่อจำกัดแหล่งที่มาในสภาพแวดล้อม CI/CD ขององค์กร

คำแนะนำ

  • อัปเดต npm CLI เป็นเวอร์ชัน 11.15.0 หรือใหม่กว่าก่อนใช้ Staged Publishing
  • เปิดใช้งาน 2FA บนบัญชี npm ของทุกคนที่มีสิทธิ์ publish
  • ตั้งค่า Staged Publishing สำหรับแพ็กเกจ npm ที่ Maintain อยู่ โดยเฉพาะที่มีผู้ใช้จำนวนมาก
  • ใช้ Install Source Flag ในโปรเจกต์เพื่อป้องกันการติดตั้งแพ็กเกจจากแหล่งที่ไม่ได้อนุมัติ
  • ใช้ Trusted Publishing ด้วย OIDC ร่วมกับ Staged Publishing เพื่อความปลอดภัยสูงสุด

แหล่งอ้างอิง