Nguy Cơ Tấn Công Chuỗi Cung Ứng Phần Mềm: npm v12 Giảm Thiểu Rủi Ro

Nguy Cơ Tấn Công Chuỗi Cung Ứng Phần Mềm: npm v12 Giảm Thiểu Rủi Ro

GitHub đã công bố một bản cập nhật quan trọng tập trung vào bảo mật cho Node Package Manager (npm), giới thiệu những thay đổi mang tính đột phá trong bản phát hành npm v12 sắp tới nhằm giảm thiểu đáng kể rủi ro tấn công chuỗi cung ứng phần mềm. Bản cập nhật này, dự kiến ra mắt vào tháng 7 năm 2026, sẽ vô hiệu hóa mặc định việc tự động thực thi các script cài đặt, một trong những cơ chế bị lạm dụng phổ biến nhất trong các gói npm độc hại.

npm v12: Giảm Thiểu Nguy Cơ Tấn Công Chuỗi Cung Ứng

Trong npm v12, cấu hình mới allowScripts sẽ được đặt thành false theo mặc định. Điều này có nghĩa là lệnh npm install sẽ không còn thực thi các script preinstall, install, hoặc postinstall từ các gói phụ thuộc trừ khi nhà phát triển phê duyệt rõ ràng.

Cơ Chế Tấn Công Phổ Biến

Các script này trong lịch sử đã là một vector tấn công chính, cho phép các tác nhân đe dọa thực thi mã tùy ý trong quá trình cài đặt gói. Hạn chế này cũng áp dụng cho các hành vi ngầm định, như node-gyp rebuild, vốn được kích hoạt tự động cho các module gốc chứa tệp Gyp.

Thêm vào đó, các script preparing từ Git, tệp cục bộ và các gói phụ thuộc được liên kết sẽ bị chặn trừ khi được cho phép rõ ràng. Các nhà phát triển có thể xem trước các script sẽ bị chặn bằng lệnh sau:

npm install --dry-run --loglevel warn

Quản Lý Script Tin Cậy

Các gói đáng tin cậy sau đó có thể được đưa vào danh sách cho phép bằng lệnh npm approve-scripts, trong khi các gói không đáng tin cậy có thể bị chặn bằng npm deny-scripts. Danh sách script đã phê duyệt sẽ được lưu trữ trong tệp package.json và nên được cam kết vào hệ thống quản lý phiên bản.

Kiểm Soát Nguồn Phụ Thuộc Nghiêm Ngặt Hơn

npm v12 cũng giới thiệu các biện pháp kiểm soát chặt chẽ hơn đối với các nguồn phụ thuộc bên ngoài. Các tùy chọn mới bao gồm:

  • --allow-git sẽ mặc định là none, ngăn npm phân giải các gói phụ thuộc dựa trên Git trừ khi được cho phép rõ ràng.
  • --allow-remote cũng sẽ mặc định là none, chặn cài đặt các gói từ các URL từ xa như tệp tarball HTTPS.

Những thay đổi này đóng lại các đường dẫn tấn công quan trọng mà các gói độc hại có thể khai thác các gói phụ thuộc Git. Điều đáng chú ý là các kẻ tấn công trước đây đã lạm dụng cấu hình .npmrc trong kho lưu trữ Git để ghi đè các tệp nhị phân hệ thống ngay cả khi việc thực thi script đã bị tắt thông qua tùy chọn --ignore-scripts.

Chuẩn Bị Cho Sự Thay Đổi

Để hỗ trợ các nhà phát triển chuẩn bị, những thay đổi này đã từng bước được triển khai trong các phiên bản npm từ 11.10.0 đến 11.16.0 với các cơ chế cảnh báo. GitHub khuyến nghị nâng cấp lên npm phiên bản 11.16.0 trở lên để xác định các gián đoạn tiềm ẩn trong quy trình làm việc hiện tại.

Bằng cách thực hiện quy trình cài đặt tiêu chuẩn, các nhà phát triển có thể quan sát các cảnh báo về hành vi bị chặn và bắt đầu chuyển đổi sang mô hình opt-in mới. Việc thay đổi này phản ánh nỗ lực rộng lớn của ngành công nghiệp nhằm bảo mật chuỗi cung ứng phần mềm nguồn mở, vốn ngày càng bị các tác nhân đe dọa nhắm mục tiêu thông qua các kỹ thuật như typosquatting, dependency confusion và cập nhật gói độc hại.

Mô Hình Zero-Trust cho Quản Lý Phụ Thuộc

Bằng cách yêu cầu khai báo sự tin cậy rõ ràng cho việc thực thi script và các nguồn bên ngoài, npm v12 giới thiệu một mô hình tương tự zero-trust cho việc cài đặt các gói phụ thuộc. Điều này làm giảm nguy cơ bị xâm nhập âm thầm trong các hoạt động phát triển thông thường. Đối với các tổ chức phụ thuộc nhiều vào các gói của bên thứ ba, những thay đổi này sẽ yêu cầu điều chỉnh các pipeline CI/CD và thực tiễn quản lý phụ thuộc.

Tuy nhiên, sự đánh đổi là một quy trình phát triển phần mềm an toàn và minh bạch hơn, phù hợp với các nguyên tắc bảo mật mặc định hiện đại. Việc vá lỗi kịp thời và áp dụng các biện pháp phòng ngừa là cực kỳ quan trọng để giảm thiểu rủi ro bảo mật.

Để tìm hiểu thêm về các thay đổi sắp tới và các bản vá bảo mật liên quan, bạn có thể tham khảo thông báo chính thức trên GitHub: GitHub Blog.