npm 12 chính thức ra mắt: Tắt mặc định script cài đặt, hướng tới sự tin cậy rõ ràng từ Registry
npm 12 mang đến loạt thay đổi bảo mật quan trọng, biến một số hành vi cài đặt thành tùy chọn (opt-in). Đáng chú ý nhất, quyền chạy script (script allowances) giờ bị tắt theo mặc định, yêu cầu sự phê duyệt rõ ràng khi chạy script, bao gồm cả các bản build ngầm định. Bản cập nhật cũng hạn chế các nguồn không phải registry nhằm giải quyết lo ngại về rủi ro bảo mật từ việc tự động thực thi script trong cộng đồng.
npm 12 chính thức ra mắt: Tắt mặc định script cài đặt, hướng tới sự tin cậy rõ ràng từ Registry
Phiên bản npm 12 vừa được phát hành với một loạt thay đổi bảo mật mang tính bước ngoặt, chuyển đổi cách tiếp cận của trình quản lý gói phổ biến nhất JavaScript sang mô hình "tin cậy rõ ràng" (explicit trust). Động thái này được xem là phản ứng trực tiếp trước những lo ngại kéo dài về rủi ro bảo mật khi tự động thực thi các đoạn script không rõ nguồn gốc trong quá trình cài đặt.
Sự thay đổi lớn nhất mà người dùng sẽ cảm nhận ngay lập tức là script allowances (danh sách script được phép chạy) giờ đây bị tắt theo mặc định. Nói một cách đơn giản, khi bạn cài đặt một gói npm, hệ thống sẽ không còn mặc định chạy bất kỳ script nào đi kèm, kể cả các bước build ngầm định (implicit build) mà trước đây thường tự động thực thi.
Điều này đồng nghĩa với việc lần đầu tiên, npm đặt quyền kiểm soát trực tiếp vào tay nhà phát triển thay vì tin tưởng một cách mù quáng vào các gói từ registry. Nhà phát triển sẽ cần phải phê duyệt rõ ràng (explicit approval) cho từng script cụ thể trước khi chúng được phép chạy trong môi trường của mình.
Song song với việc tắt mặc định này, npm 12 cũng thắt chặt hơn nữa các nguồn cài đặt không phải registry (non-registry sources). Trước đây, npm cho phép cài đặt trực tiếp từ kho Git, URL tùy chỉnh hay các nguồn khác rất linh hoạt, nhưng chính điều này lại tạo ra các lỗ hổng bảo mật tiềm ẩn khi các thành phần độc hại được nhúng vào thông qua các đường dẫn ít kiểm soát hơn. npm 12 sẽ hạn chế và yêu cầu xác nhận chặt chẽ hơn đối với các nguồn này.
"Đây là bước đi nhằm giải quyết các lo ngại của cộng đồng về rủi ro bảo mật từ việc tự động thực thi script. Với npm 12, chúng tôi đặt niềm tin vào sự phê duyệt của nhà phát triển một cách minh bạch và rõ ràng hơn." — trích phát biểu từ đội ngũ phát triển npm.
Ý nghĩa đối với nhà phát triển tại Việt Nam
Với các lập trình viên Việt Nam, đặc biệt là những ai đang phát triển ứng dụng Node.js, cập nhật này sẽ thay đổi thói quen làm việc hàng ngày. Trước đây, nhiều dự án phụ thuộc vào các script "hậu cài đặt" (postinstall) để tự động hóa việc tải xuống mã nhị phân hoặc cấu hình môi trường. Với npm 12:
- Hiệu năng bị ảnh hưởng: Các gói như
node-sass,bcrypt(dùng build native) sẽ cần được xác nhận chạy script, nếu không quá trình cài đặt có thể thất bại hoặc không đầy đủ chức năng. - Cần cập nhật CI/CD: Các pipeline CI/CD (GitHub Actions, GitLab CI) thường chạy
npm installngầm sẽ cần thêm cờ hoặc cấu hình cho phép script, nếu không dự án sẽ không build được. - Chủ động bảo mật hơn: Mặc dù bất tiện, đây là cơ hội để các team rà soát lại toàn bộ danh sách dependency, từ đó loại bỏ các gói có hành vi mờ ám.
Kết luận
npm 12 không chỉ là một bản nâng cấp nhỏ về phiên bản, nó đánh dấu một sự thay đổi triết lý an toàn của hệ sinh thái JavaScript. Việc "chuyển sang mô hình tin cậy rõ ràng" có thể gây ra một số xáo trộn ban đầu cho cộng đồng, nhưng về lâu dài, đây là một nền tảng vững chắc để chống lại các cuộc tấn công chuỗi cung ứng phần mềm ngày càng tinh vi hiện nay. Các nhà phát triển nên dành thời gian để làm quen với cơ chế mới, cập nhật tài liệu nội bộ và điều chỉnh quy trình build của mình cho phù hợp.
