npm Bổ sung Xác thực 2FA khi Phát hành và Kiểm soát Cài đặt Gói để Chống Tấn công Chuỗi Cung ứng

GitHub đã triển khai các biện pháp kiểm soát mới cho npm nhằm cải thiện tính bảo mật của chuỗi cung ứng phần mềm, cho phép người duy trì phê duyệt rõ ràng một bản phát hành trước khi các gói trở nên khả dụng công khai để cài đặt. Được gọi là staged publishing, tính năng này hiện đã khả dụng rộng rãi trên npm, bắt buộc người duy trì phải vượt qua xác thực hai yếu tố (2FA) để phê duyệt gói.
npm security updates

GitHub đã triển khai các biện pháp kiểm soát mới cho npm nhằm cải thiện tính bảo mật của chuỗi cung ứng phần mềm (software supply chain), cho phép người duy trì (maintainer) phê duyệt rõ ràng một bản phát hành trước khi các gói trở nên khả dụng công khai để cài đặt.

Được gọi là staged publishing (phát hành theo giai đoạn), tính năng này hiện đã khả dụng rộng rãi trên npm. Nó bắt buộc người duy trì phải vượt qua thử thách xác thực hai yếu tố (2FA) để phê duyệt một gói trước khi nó được đẩy lên npmjs[.]com.

"Thay vì phát hành trực tiếp khiến phiên bản gói có sẵn ngay lập tức cho người dùng, tệp tarball đã tạo sẵn sẽ được tải lên một hàng đợi chờ (stage queue), nơi người duy trì phải phê duyệt rõ ràng trước khi nó có thể cài đặt được," GitHub cho biết.

Công ty con thuộc sở hữu của Microsoft này cho biết thay đổi này đảm bảo "bằng chứng về sự hiện diện" (proof of presence) cho mọi lần xuất bản, bao gồm cả những lần đến từ quy trình công việc CI/CD không tương tác và xuất bản đáng tin cậy với xác thực OpenID Connect (OIDC).

Tiêu chí sử dụng Staged Publishing

Trước khi sử dụng staged publishing, những người duy trì gói phải đáp ứng các tiêu chí sau:

  • Có quyền xuất bản (publish access) đối với gói đó.
  • Gói đã tồn tại trên npm registry, nghĩa là một gói hoàn toàn mới không thể áp dụng tính năng staged.
  • Tài khoản đã được bật xác thực 2FA.

Các nhà phát triển có thể sử dụng lệnh npm stage publish từ thư mục gốc của gói để gửi nó vào khu vực chờ. Để sử dụng lệnh này, việc cập nhật lên npm CLI 11.15.0 hoặc mới hơn là điều bắt buộc. Để bảo vệ tối ưu, GitHub khuyến nghị nên kết hợp staged publishing với trusted publishing sử dụng OIDC.

Các quyền kiểm soát cài đặt mới

Một bản cập nhật thứ hai tập trung vào npm liên quan đến việc giới thiệu ba cờ (flag) nguồn cài đặt mới bên cạnh cờ -allow-git hiện có:

  • --allow-file: Kiểm soát các cài đặt từ đường dẫn tệp cục bộ và các tệp tarball cục bộ.
  • --allow-remote: Kiểm soát các cài đặt từ các URL từ xa, bao gồm cả các tệp tarball qua https.
  • --allow-directory: Kiểm soát các cài đặt từ các thư mục cục bộ.

Các cờ này cho phép các nhà phát triển "áp dụng cùng một cách tiếp cận danh sách cho phép (allowlist) rõ ràng cho mọi nguồn cài đặt không thuộc registry," GitHub cho biết thêm.

Động thái này diễn ra trong bối cảnh các cuộc tấn công chuỗi cung ứng phần mềm nhắm vào các hệ sinh thái mã nguồn mở tăng mạnh trong vài tháng qua, với một nhóm tội phạm mạng có tên là TeamPCP đã đầu độc các gói phổ biến ở quy mô chưa từng có thông qua một chu kỳ xâm nhập tự duy trì.