
ที่มาภาพ: InfoWorld
GitHub ปิดการรันสคริปต์อัตโนมัติของ npm เวอร์ชัน 12 เพื่อ…
⚡ สรุป 30 วิ
ตั้งแต่เดือนกรกฎาคม GitHub ตั้งค่า allowScripts ของ npm v12 เป็น off ทำให้สคริปต์ preinstall, install และ postinstall ไม่ทำงานอัตโนมัติ…
การเปลี่ยนแปลงสำคัญของ npm เวอร์ชัน 12 จะทำให้การทำงานอัตโนมัติของสคริปต์ระหว่างการติดตั้ง (preinstall, install, postinstall) ถูกปิดเป็นค่าเริ่มต้นใน GitHub ตั้งแต่เดือนกรกฎาคมนี้ ผู้พัฒนายังสามารถเปิดใช้งานได้ด้วยตนเอง แต่ค่าเริ่มต้นใหม่จะบล็อกการรันสคริปต์เหล่านี้โดยอัตโนมัติ การปรับนี้มุ่งลดความเสี่ยงจากการโจมตีซัพพลายเชนที่เคยใช้ช่องโหว่นี้เป็นทางเข้า
Overview
GitHub ได้ประกาศใน changelog ของ npm v12 ว่า allowScripts จะถูกตั้งค่าเป็น off โดยอัตโนมัติ ซึ่งหมายความว่า `npm install` จะไม่รันสคริปต์ preinstall, install หรือ postinstall ของแพ็กเกจที่เป็น dependency เว้นแต่ผู้ใช้จะอนุญาตอย่างชัดเจน การเปลี่ยนแปลงนี้รวมถึงการบล็อกการทำงานของ node‑gyp ที่มักทำงานโดยอ้อมเมื่อแพ็กเกจมีไฟล์ `binding.gyp` โดยไม่มีสคริปต์ install ที่ระบุชัดเจน
นอกจากนี้สคริปต์ `prepare` จาก dependency ประเภท git, file, หรือ link จะถูกบล็อกเช่นกันตามที่ GitHub ระบุในบันทึกการเปลี่ยนแปลง การปรับค่าเริ่มต้นนี้เป็นการเปลี่ยนแปลงแนวคิดจาก “รันอัตโนมัติ” ไปเป็น “ต้องยินยอมอย่างเจตนา” ซึ่งสอดคล้องกับแนวทางความปลอดภัยที่กำลังเป็นที่ยอมรับในอุตสาหกรรมซอฟต์แวร์
Change Details
การตั้งค่า allowScripts เป็น `off` มีผลกระทบต่อหลายขั้นตอนของกระบวนการพัฒนา
- preinstall, install, postinstall: ไม่ทำงานโดยอัตโนมัติสำหรับทุก dependency
- node‑gyp: การคอมไพล์โมดูลเนทีฟที่พึ่งพา `binding.gyp` จะถูกบล็อกหากไม่มีสคริปต์ install ที่ระบุไว้
- prepare scripts: สคริปต์จาก dependency ที่มาจาก git, file, หรือ link จะถูกปิดเช่นกัน
ผู้ใช้ที่ต้องการใช้สคริปต์เหล่านี้ยังสามารถเปิด `allowScripts` ในไฟล์ `package.json` หรือใช้พารามิเตอร์คอมมานด์ไลน์เพื่ออนุญาตได้ แต่ต้องทำอย่างเจตนาชัดเจนและบันทึกไว้ในโครงการเพื่อให้ทีมตรวจสอบได้
Community Reaction
การเปลี่ยนแปลงได้รับการตอบรับโดยส่วนใหญ่จากนักวิเคราะห์และผู้ใช้ว่าเป็นก้าวสำคัญในการลดพื้นที่โจมตีของซัพพลายเชน อย่างไรก็ตามหลายฝ่ายเน้นว่าการปิดประตูนี้จะทำให้ “ช่องโหว่ยังคงอยู่” เพียงแค่ย้ายไปยังเส้นทางอื่น
Sonu Kapoor ผู้ดูแล CVE Lite CLI ของโครงการ OWASP Incubator กล่าวว่า “การเปลี่ยนแปลงนี้จะบังคับให้การโจมตีที่พึ่งพาการรันสคริปต์อัตโนมัติถูกย้ายไปยังช่องทางอื่น เช่น โค้ดที่ทำงานใน runtime, บัญชีผู้ดูแลที่ถูกแฮก, หรือการโจมตีแบบ dependency confusion”
ในขณะเดียวกัน Alan Parkinson ผู้อำนวยการของ Threat Detective เน้นว่า “ผู้โจมตีระดับสูงได้เลิกใช้วิธีการรันสคริปต์ติดตั้งมานานแล้ว และมักมุ่งไปที่วิธีที่ซับซ้อนกว่า การปิดประตูนี้จึงส่งผลต่อแค่ผู้โจมตีที่ไม่ชำนาญ”
Security Analysis
แม้การบล็อกสคริปต์อัตโนมัติจะลดความเสี่ยงจาก supply‑chain attacks ที่ใช้ช่องโหว่นี้เป็นหลัก แต่ช่องทางอื่น ๆ ยังคงเปิดให้ผู้โจมตีใช้
- โค้ดที่ทำงานใน runtime ของแอปพลิเคชัน
- บัญชีผู้ดูแลแพ็กเกจที่ถูกขโมย
- การสับสนระหว่าง dependency (dependency confusion)
- การสแควตติ้งชื่อแพ็กเกจ (typo‑squatting)
- การฉีดโค้ดใน GitHub Actions workflows
- Dependency ที่มีการแพร่เชื้อผ่านการเชื่อมต่อแบบ transitive
- โทเค็นการเผยแพร่ที่ถูกขโมย
การปิดประตู install script จึงเป็นการลด “ประตูอันตรายหนึ่ง” แต่ไม่สามารถทำให้ระบบปลอดภัยทั้งหมดได้ ผู้ป้องกันจึงต้องต่อสู้กับหลาย ๆ ช่องทางพร้อมกันและต้องอาศัยกระบวนการตรวจสอบโค้ดอย่างต่อเนื่อง
Industry Impact
การปรับค่าเริ่มต้นของ npm ทำให้แพลตฟอร์มจัดการแพ็กเกจอื่น ๆ ที่เคยทำเช่นเดียวกันล่วงหน้า เช่น Yarn, pnpm, และ Bun กลายเป็นมาตรฐานอุตสาหกรรมใหม่ Sanchit Vir Gogia จาก Greyhound Research ชี้ว่า “GitHub เป็นผู้จัดเก็บแพ็กเกจที่ใหญ่ที่สุดที่ยังคงใช้ค่าปริยายที่เสี่ยงนี้เป็นเวลานาน การเปลี่ยนแปลงนี้จึงถือว่าเป็นการตามเทรนด์ที่ล่าช้าแต่จำเป็น”
นอกจากนี้ การบังคับให้ค่าเริ่มต้นเป็นแบบปลอดภัยยังสอดคล้องกับกฎระเบียบระดับสากล เช่น EU Cyber Resilience Act ที่กำหนดให้ความเสี่ยงจากซัพพลายเชนต้องถูกจัดการในระดับองค์กร Gogia กล่าวว่าความรับผิดชอบต่อความปลอดภัยได้ถูกย้ายจากผู้พัฒนาไปสู่ผู้ให้บริการแพลตฟอร์ม ซึ่งทำให้การปรับเปลี่ยนนี้กลายเป็นเรื่องที่หลีกเลี่ยงไม่ได้
Outlook
GitHub ยืนยันว่าการเปลี่ยนแปลงนี้เป็นส่วนหนึ่งของ “การพัฒนาความปลอดภัยอย่างต่อเนื่อง” และจะยังคงปรับปรุงคุณลักษณะความปลอดภัยตามการเปลี่ยนแปลงของภัยคุกคามในอนาคต Zach Steindler วิศวกรหลักของ GitHub บอกว่า “การทำให้เส้นทางที่ปลอดภัยเป็นค่าเริ่มต้นเป็นวิธีที่ดีที่สุดเพื่อให้ผู้ใช้รับเอาไปใช้โดยอัตโนมัติ”
ในระยะยาว ผู้พัฒนาจะต้องปรับตัวให้สคริปต์ที่จำเป็นต้องใช้ได้รับการบันทึกและตรวจสอบในโครงการ ซึ่งอาจเพิ่มความโปร่งใสและลดความเสี่ยงโดยรวมของซอฟต์แวร์ที่พึ่งพา npm อย่างต่อเนื่อง
Summary
GitHub จะปิดการรันสคริปต์อัตโนมัติของ npm เป็นค่าเริ่มต้นในเวอร์ชัน 12 เพื่อลดพื้นที่โจมตีของซัพพลายเชน แม้ว่าจะไม่ขจัดความเสี่ยงทั้งหมด แต่การเปลี่ยนแปลงนี้ถือเป็นก้าวสำคัญที่ทำให้มาตรฐานความปลอดภัยของระบบจัดการแพ็กเกจทั่วโลกย้ายไปสู่ค่าเริ่มต้นที่ปลอดภัยมากขึ้น.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- GitHub finally pulls the plug on automatic install script execution for npm
- ผู้เขียน
- Unknown
- แหล่ง
- InfoWorld
- วันที่เผยแพร่
- 11 มิถุนายน 2569 เวลา 07:42



