Call Me Thanut
newspaperข่าวสาร

NPM 12 จะปิด install scripts ของ dependency เป็นค่าเริ่มต้น - นี่คือ Human Gate ที่ package manager ควรมี

12 มิ.ย. 2026อ่าน 4 นาที
NPM 12 จะปิด install scripts ของ dependency เป็นค่าเริ่มต้น - นี่คือ Human Gate ที่ package manager ควรมี
สารบัญ

สรุปให้ไว

NPM 12 จะไม่รัน dependency install scripts โดย default

ลด attack surface สำคัญ

มี approval flow

เลือก script ที่ไว้ใจแล้วบันทึกลง package config

Git dependency และ remote tarball ต้อง allow ชัด

ลด route โจมตีอีกแบบ

เหมาะกับยุค agent มาก

เพราะ AI เพิ่ม dependency ได้เร็วมาก

01มันคืออะไร

install scripts เช่น preinstall, install และ postinstall เป็นจุดที่ package สามารถรัน code ตอนติดตั้งได้

ฟีเจอร์นี้มีประโยชน์ในบางกรณี แต่ก็เป็น attack surface สำคัญ เพราะ malicious package สามารถขโมย credential หรือทำสิ่งที่ไม่ควรทำได้ตั้งแต่ตอน install

NPM 12 เตรียมเปลี่ยนค่าเริ่มต้นให้ไม่รัน script เหล่านี้ของ dependency แล้วให้ผู้ใช้อนุมัติ script ที่เชื่อถือจริง ๆ แทน

02มีอะไรใหม่

แนวทางใหม่คือใช้คำสั่ง approval เพื่อเลือก dependency scripts ที่อนุญาต แล้วบันทึกลง package.json เพื่อให้ทีมเห็นและ review ได้

นอกจากนั้น Git dependencies และ remote URL tarballs จะไม่ resolve โดย default ต้องใช้ allow flag ชัด ๆ ซึ่งช่วยลด route ที่ supply-chain attack เคยใช้

นี่เป็นการย้าย security จาก “หวังว่าไม่มี package แย่” มาเป็น “script ต้องผ่านด่านก่อนรัน”

ผลต่อ AI coding workflow

  • agent install package แล้วไม่รัน script ทันที

    ลดความเสียหายจาก package ใหม่

  • approval อยู่ใน repo

    review ได้ใน PR

  • dependency diff สำคัญขึ้น

    คนต้องดูว่ามี script อะไรเพิ่ม

  • CI ควร enforce policy

    ไม่ปล่อยให้เครื่องใครตั้งค่าเอง

  • pnpm/bun ก็ต้องมีมาตรฐานทีม

    อย่าคุมแค่ npm ถ้าใช้หลายตัว

03เกี่ยวอะไรกับเรา

ฟันธง: นี่คือทิศทางที่ถูกต้องสำหรับยุค AI coding เพราะ agent อาจเพิ่ม dependency โดยไม่เข้าใจความเสี่ยง supply chain

ให้ทีมเริ่มคิดตั้งแต่ตอนนี้ว่า package ใหม่ต้องมี review policy: ใครอนุมัติ script ได้ ดูอะไรบ้าง และ CI ตรวจอย่างไร

Human Gate ไม่ควรอยู่หลัง incident แต่ควรอยู่ก่อน code แปลก ๆ จาก dependency ได้สิทธิ์รันบนเครื่องหรือ pipeline ของเรา