GitHub thay đổi mặc định trên npm để chặn đứng các cuộc tấn công chuỗi cung ứng
GitHub chuẩn bị tung ra các thay đổi quan trọng trên npm phiên bản 12, trong đó đáng chú ý nhất là việc vô hiệu hóa mặc định các tập lệnh cài đặt (install scripts) nhằm giảm thiểu rủi ro từ các cuộc...
GitHub vừa thông báo về những thay đổi mang tính đột phá sẽ xuất hiện trong phiên bản npm 12, dự kiến ra mắt vào tháng tới. Mục tiêu chính của bản cập nhật này là tăng cường bảo mật cho hệ sinh thái Node.js bằng cách vô hiệu hóa mặc định các tập lệnh cài đặt (install scripts), một kỹ thuật thường bị kẻ tấn công lợi dụng để thực thi mã độc trong các cuộc tấn công chuỗi cung ứng.
Theo GitHub, các tập lệnh trong vòng đời cài đặt hiện là bề mặt tấn công lớn nhất trong hệ sinh thái npm. Lệnh npm install thông thường sẽ tự động thực thi các tập lệnh từ mọi dependency (phụ thuộc) trung gian. Điều này đồng nghĩa với việc chỉ cần một gói phần mềm bị xâm nhập trong cây phụ thuộc cũng đủ để kẻ tấn công thực thi mã tùy ý trên máy tính của nhà phát triển hoặc hệ thống CI (Continuous Integration).
Để khắc phục, cơ chế mới sẽ yêu cầu sự phê duyệt rõ ràng từ người dùng thay vì tin tưởng mặc định như trước đây. Các thay đổi cụ thể bao gồm:
- Chặn tập lệnh cài đặt: Lệnh
npm installsẽ không còn tự động chạy các tập lệnhpreinstall,install, hoặcpostinstalltừ các dependency trừ khi được cho phép cụ thể. - Kiểm soát Git dependency: Các dependency từ Git sẽ không được giải quyết trừ khi có cờ
--allow-git. - Hạn chế URL từ xa: Các dependency từ URL từ xa (như file tarball) sẽ bị chặn trừ khi có cờ
--allow-remote.
GitHub nhấn mạnh rằng ngay cả các bản build node-gyp cũng sẽ bị ảnh hưởng vì npm thực hiện quá trình rebuild ngầm định. Ngoài ra, việc đặt --allow-git về trạng thái “none” cũng giúp đóng lại các lỗ hổng liên quan đến tệp cấu hình .npmrc, vốn trước đây có thể bị lợi dụng để ghi đè thực thi Git ngay cả khi đã sử dụng cờ --ignore-scripts.
Để chuẩn bị cho sự thay đổi này, GitHub khuyến nghị các nhà phát triển nên nâng cấp lên npm phiên bản 11.16.0 trở lên. Người dùng có thể sử dụng lệnh npm approve-scripts --allow-scripts-pending để rà soát các gói có tập lệnh, phê duyệt những gói tin cậy và cập nhật tệp package.json tương ứng. Bất kỳ tập lệnh nào không được phê duyệt sẽ bị chặn sau khi nâng cấp lên phiên bản 12.
Trước đó, npm cũng đã giới thiệu tính năng min-release-age, cho phép từ chối các phiên bản gói phần mềm vừa được phát hành trong khoảng thời gian ngắn, nhằm ngăn chặn việc cài đặt các gói độc hại mới xuất hiện.
Nguồn tham khảo: The Hacker News


No Comment! Be the first one.