Lỗ hổng trong NPM dẫn đến ghi đè file trên hệ thống

GitHub đã tiết lộ chi tiết về bảy lỗ hổng trong gói tar và @npmcli/arborist, vốn cung cấp các chức năng để làm việc với kho lưu trữ tar và tính toán cây phụ thuộc trong Node.js. Các lỗ hổng cho phép, khi giải nén một kho lưu trữ được thiết kế đặc biệt, ghi đè lên các tệp bên ngoài thư mục gốc mà quá trình giải nén được thực hiện, trong chừng mực các quyền truy cập hiện tại cho phép. Các sự cố khiến có thể tổ chức thực thi mã tùy ý trên hệ thống, chẳng hạn như bằng cách thêm lệnh vào ~/.bashrc hoặc ~/.profile khi một thao tác được thực hiện bởi người dùng không có đặc quyền hoặc bằng cách thay thế các tệp hệ thống khi chạy dưới dạng nguồn gốc.

Sự nguy hiểm của các lỗ hổng càng trở nên trầm trọng hơn do mã có vấn đề được sử dụng trong trình quản lý gói npm khi thực hiện các hoạt động với các gói npm, điều này có thể tổ chức một cuộc tấn công vào người dùng bằng cách đặt gói npm được thiết kế đặc biệt vào kho lưu trữ, quá trình xử lý trong đó sẽ thực thi mã của kẻ tấn công trên hệ thống. Cuộc tấn công có thể xảy ra ngay cả khi cài đặt các gói ở chế độ “-ignore-scripts”, chế độ này vô hiệu hóa việc thực thi các tập lệnh tích hợp. Tổng cộng, npm ảnh hưởng đến 2021 lỗ hổng (CVE-32804-2021, CVE-37713-2021, CVE-39134-2021 và CVE-39135-XNUMX) trong số XNUMX lỗ hổng. Hai vấn đề đầu tiên liên quan đến gói tar và hai vấn đề còn lại liên quan đến gói @npmcli/arborist.

Lỗ hổng nguy hiểm nhất, CVE-2021-32804, là do khi xóa các đường dẫn tuyệt đối được chỉ định trong kho lưu trữ tar, các ký tự “/” lặp lại được xử lý không chính xác—chỉ ký tự đầu tiên bị xóa, trong khi các ký tự còn lại được giữ lại. Ví dụ: đường dẫn "/home/user/.bashrc" sẽ được chuyển đổi thành "home/user/.bashrc" và đường dẫn "//home/user/.bashrc" thành "/home/user/.bashrc". Lỗ hổng thứ hai, CVE-2021-37713, chỉ xuất hiện trên nền tảng Windows và có liên quan đến việc dọn dẹp không chính xác các đường dẫn tương đối bao gồm ký tự ổ đĩa không giới hạn (“C:some\path”) và một chuỗi để quay lại thư mục trước đó ( “C:../foo”) .

Các lỗ hổng CVE-2021-39134 và CVE-2021-39135 dành riêng cho mô-đun @npmcli/arborist. Vấn đề đầu tiên chỉ xuất hiện trên các hệ thống không phân biệt chữ hoa chữ thường trong hệ thống tệp (macOS và Windows) và cho phép bạn ghi tệp vào một phần tùy ý của hệ thống tệp bằng cách chỉ định hai mô-đun '"foo" trong số các phụ thuộc : "file:/some/path"' và ' FOO: "file:foo.tgz"', việc xử lý chúng sẽ dẫn đến việc xóa nội dung của thư mục /some/path và ghi nội dung của foo.tgz vào đó. Vấn đề thứ hai cho phép các tập tin bị ghi đè thông qua thao tác liên kết tượng trưng.

Các lỗ hổng được giải quyết trong các bản phát hành Node.js 12.22.6 và 14.17.6, npm CLI 6.14.15 và 7.21.0, cũng như các bản phát hành gói tar riêng lẻ 4.4.19, 5.0.11 và 6.1.10. Sau khi nhận được thông tin về vấn đề này như một phần của sáng kiến ​​“tiền thưởng lỗi”, GitHub đã trả cho các nhà nghiên cứu 14500 USD và quét nội dung của kho lưu trữ, kết quả này không tiết lộ các nỗ lực khai thác lỗ hổng. Để bảo vệ khỏi những vấn đề này, GitHub cũng đã cấm xuất bản các gói NPM bao gồm các liên kết tượng trưng, ​​​​liên kết cứng và đường dẫn tuyệt đối đến kho lưu trữ.

Nguồn: opennet.ru

Thêm một lời nhận xét