Npm giới thiệu tính năng xuất bản theo giai đoạn, nâng cao bảo mật cho chuỗi cung ứng phần mềm

Phần mềm21 tháng 5, 2026·3 phút đọc

GitHub đã triển khai tính năng "staged publishing" cho sổ đăng ký npm, yêu cầu người bảo trì phải phê duyệt các gói phần mềm trước khi chúng được công khai nhằm ngăn chặn sự phân phối mã độc.

Npm giới thiệu tính năng xuất bản theo giai đoạn, nâng cao bảo mật cho chuỗi cung ứng phần mềm

Sự phát triển phần mềm hiện đại phụ thuộc rất nhiều vào các gói mã nguồn (packages) được nhập từ bên ngoài. Trong thập kỷ qua, các tác nhân đe dọa đã tập trung vào việc chiếm đoạt tài khoản của những người bảo trì (maintainers) các gói phần mềm này. Việc chiếm quyền kiểm soát một gói phần mềm được sử dụng rộng rãi cung cấp một con đường nhanh chóng để phát tán mã độc.

Để giải quyết vấn đề này, sổ đăng ký gói phần mềm npm của GitHub đã triển khai một bước phê duyệt xuất bản mới nhằm ngăn chặn sự phân phối các gói phần mềm bị xâm nhập trước khi chúng có thể làm ô nhiễm chuỗi cung ứng phần mềm.

Staged Publishing là gì?

Một trong các biện pháp bảo mật được GitHub công bố từ tháng 12 năm ngoái, gọi là "staged publishing" (xuất bản theo giai đoạn), hiện đã được triển khai thực tế. Vào thứ Tư vừa qua, GitHub đã hợp nhất npm stage vào npm CLI (phiên bản 11.15.0) và cập nhật tài liệu đăng ký quy trình này.

Staged publishing cũng có thể được gọi là "gated publishing" (xuất bản có cổng kiểm soát). Nó yêu cầu người bảo trì dự án phải phê duyệt các thay đổi đối với một gói phần mềm đã được đưa vào giai đoạn phát hành.

Theo tài liệu hướng dẫn: "Thay vì xuất bản trực tiếp bằng lệnh npm publish, bạn có thể gửi các gói phần mềm đến khu vực staging bằng lệnh npm stage publish. Sau đó, một người bảo trì phải xem xét và phê duyệt rõ ràng gói đã staging — thông qua xác thực hai yếu tố (2FA) qua CLI hoặc npmjs.com — trước khi nó có sẵn công khai."

Tăng cường bảo mật cho quy trình tự động hóa

Quy trình này mang lại giá trị đặc biệt cho các quy trình làm việc tự động hóa (automated workflows), vốn thường không bao gồm cách ủy quyền qua 2FA. Các quy trình tự động hóa thường dựa vào token để xác thực, nhưng các token này có thể bị sao chép và đánh cắp.

Các token có hiệu lực trong thời gian dài trở thành mục tiêu hấp dẫn cho các tin tặc. Đó là lý do GitHub loại bỏ các token cổ điển (classic tokens) tồn tại lâu dài và khuyến khích sử dụng token phiên ngắn hạn và token truy cập có giới hạn quyền hạn cho tự động hóa.

Tuy nhiên, việc ngừng sử dụng token cổ điển của GitHub không diễn ra suôn sẻ vì các token ngắn hạn có xu hướng hết hạn vào những thời điểm không thuận lợi — không ai muốn phải tạo lại token cứ mỗi 90 ngày hoặc ít hơn rồi trải qua quy trình cấu hình lại.

Staged publishing giúp các nhà phát triển dễ dàng thiết lập các quy trình làm việc có thể bảo trì hơn mà không cần các nghi thức xác thực lại nặng nề. Nó cung cấp cho nhà xuất bản gói tùy chọn staging gói của họ thông qua tự động hóa và trì hoãn việc phê duyệt 2FA để xuất bản vào một thời điểm sau đó.

GitHub cũng cung cấp "trusted publishing" (xuất bản đáng tin cậy) như một cách thiết lập sự tin tưởng giữa npm và nhà cung cấp CI/CD của nhà phát triển bằng cách sử dụng xác thực OpenID Connect (OIDC). Mặc dù cơ chế OIDC vẫn chưa hoạt động khi cố gắng xuất bản một gói lần đầu tiên, nhưng khi kết hợp với staged publishing, chuỗi cung ứng phần mềm trông có vẻ an toàn hơn — miễn là các nhà phát triển tận dụng các công cụ này.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗