Tin tức bảo mật npm siết chặt tấn công chuỗi cung ứng

Tin tức bảo mật npm siết chặt tấn công chuỗi cung ứng

Tin tức bảo mật liên quan đến hệ sinh thái npm cho thấy GitHub đã triển khai bản nâng cấp lớn nhằm giảm rủi ro từ các tấn công chuỗi cung ứng nhắm vào gói mã nguồn mở. Các thay đổi chính gồm staged publishing và các install-time controls mới trong npm CLI.

Staged Publishing Trong Npm: Cơ Chế Kiểm Duyệt Trước Khi Phát Hành

Với staged publishing, npm không còn đưa gói lên môi trường công khai ngay sau khi publish. Thay vào đó, tarball đã build sẵn sẽ được đưa vào một hàng đợi staging.

Một người duy trì gói phải xác nhận thủ công trước khi gói đó trở thành khả dụng cho quá trình cài đặt công khai. Đây là một điểm kiểm soát quan trọng trong an toàn thông tin, đặc biệt với các quy trình CI/CD thường là mục tiêu của tấn công mạng.

Cơ chế này giúp giảm nguy cơ nếu kẻ tấn công chiếm được pipeline hoặc chèn mã độc vào quy trình build. Ngay cả khi điều đó xảy ra, gói vẫn không thể phát hành nếu chưa có phê duyệt thủ công.

Điều Kiện Sử Dụng

Tính năng này có sẵn từ npm CLI version 11.15.0. Các nhà phát triển cần chuyển từ lệnh truyền thống npm publish sang npm stage publish để áp dụng quy trình staged.

npm stage publish

Trusted Publishing Và OIDC Trong Quy Trình CI/CD

GitHub khuyến nghị kết hợp staged publishing với trusted publishing sử dụng OpenID Connect (OIDC). Cách làm này cho phép hệ thống CI/CD đẩy gói trực tiếp vào hàng đợi staging mà không cần lưu trữ long-lived credentials.

Mô hình này giảm nguy cơ credential theft và các malicious releases được tự động hóa. Với các tổ chức đang vận hành pipeline tự động, đây là một lớp kiểm soát hữu ích để hạn chế nguy cơ bảo mật từ tài khoản bị lộ.

Tham khảo tài liệu liên quan từ GitHub tại: https://github.blog/changelog/2026-05-22-staged-publishing-and-new-install-time-controls-for-npm/

Install-Time Controls Mới Trong Npm 11.15.0

Bên cạnh staged publishing, npm 11.15.0 còn bổ sung các cờ bảo mật ở thời điểm cài đặt gói. Các cờ này cho phép kiểm soát chi tiết nguồn mà dependency được phép cài đặt từ đó, qua đó giảm nguy cơ từ các nguồn không mong muốn.

Những kiểm soát này đặc biệt hữu ích trước các kỹ thuật như dependency confusion hoặc injection attacks, khi kẻ tấn công lợi dụng nguồn cài đặt ngoài registry để đưa mã độc vào chuỗi phụ thuộc.

Chế Độ Cấu Hình

Mỗi cờ hỗ trợ hai chế độ: all mặc định hoặc none. Cấu hình có thể được đặt trong .npmrc hoặc package.json.

install-strategy=all
allow-git=none

GitHub cũng xác nhận rằng trong npm CLI version 12, hành vi mặc định của –allow-git sẽ thay đổi từ all sang none. Đây là dấu hiệu cho thấy hệ sinh thái đang chuyển sang mô hình mặc định chặt chẽ hơn về bảo mật mạng.

Cấu Hình Allowlist Để Giảm Bề Mặt Tấn Công

Các tổ chức có thể cấu hình môi trường để chặn toàn bộ cài đặt ngoài registry nhằm áp dụng chính sách allowlist nghiêm ngặt. Mục tiêu là hạn chế các nguồn cài đặt không cần thiết và giảm bề mặt tấn công.

{
  "npmConfig": {
    "allow-git": "none",
    "allow-hosted-git": "none",
    "allow-local": "none"
  }
}

Khi kết hợp với staged publishing, mô hình này tạo ra một pipeline được kiểm soát chặt chẽ ở cả hai chiều: tạo góitiêu thụ gói. Điều đó giúp giảm rủi ro từ các kịch bản xâm nhập trái phép vào chuỗi cung ứng phần mềm.

Các Kỹ Thuật Tấn Công Mà Cơ Chế Mới Nhắm Tới

Những cập nhật này trực tiếp xử lý các vector tấn công phổ biến trong hệ sinh thái open-source. Đáng chú ý là các kịch bản nhắm vào quy trình tự động và nguồn phụ thuộc bên ngoài.

  • Đánh cắp thông tin xác thực trong pipeline CI/CD.
  • Phát hành gói độc hại thông qua quy trình tự động.
  • Dependency confusion khi cài đặt từ nguồn ngoài registry.
  • Injection attacks vào chuỗi phụ thuộc hoặc quá trình build.

Đây là các dạng lỗ hổng CVE hoặc cảnh báo CVE thường liên quan đến hành vi phát hành và cài đặt gói hơn là lỗi đơn lẻ trong một thành phần cụ thể. Vì vậy, việc siết chặt mặc định trong npm là một bước giảm rủi ro an toàn thông tin ở tầng cung ứng phần mềm.

Khuyến Nghị Triển Khai Trong Môi Trường npm

Người dùng npm được khuyến nghị nâng cấp lên npm CLI 11.15.0 hoặc mới hơn để tận dụng các kiểm soát mới. Đồng thời, cần điều chỉnh workflow để phù hợp với staged publishing và các giới hạn install-time controls.

Các nhóm vận hành nên rà soát lại cấu hình .npmrc, chính sách publish và cách cấp quyền cho CI/CD. Mục tiêu là loại bỏ phụ thuộc vào khóa dài hạn, tăng kiểm soát thủ công tại bước phát hành, và giảm khả năng hệ thống bị xâm nhập thông qua chuỗi cung ứng.

Tham khảo thêm tài liệu nền tảng về cảnh báo và kiểm soát lỗ hổng tại NVD: https://nvd.nist.gov/