Ba lỗ hổng đã được tìm thấy trong NPM, được sửa trong NPM 6.13.4

Nhà phát triển người phụ trách dự án từ trình quản lý gói NPM, được phát hành phát hành gần đây cập nhật sửa chữa cho NPM 6.13.4 bao gồm trong phân phối Node.js và được sử dụng để phân phối các mô-đun JavaScript.

Phiên bản điều chỉnh mới này của trình quản lý là ra mắt để giải quyết ba lỗ hổng cho phép các tệp hệ thống tùy ý được sửa đổi hoặc ghi đè khi cài đặt gói do kẻ tấn công chuẩn bị.

CVE-2019-16775

Lỗ hổng này ảnh hưởng đến các phiên bản NPM CLI trước 6.13.3, bạn khỏe không chúng dễ bị ghi tệp tùy tiện. Các gói có thể tạo liên kết tượng trưng đến các tệp bên ngoài thư mục nút_mô-đun thông qua trường bin sau khi cài đặt.

Một mục nhập được xây dựng chính xác trong trường bin package.json sẽ cho phép một trình soạn thảo gói tạo một liên kết tượng trưng trỏ đến các tệp tùy ý trên hệ thống của người dùng khi gói được cài đặt. Hành vi này vẫn có thể xảy ra thông qua các tập lệnh cài đặt.

CVE-2019-16776

Trong lỗ hổng này, Các phiên bản NPM CLI trước 6.13.3 bị ảnh hưởng bởi việc ghi tệp tùy ý. Vì bạn không thể ngăn truy cập vào các thư mục bên ngoài thư mục node_modules dự định thông qua trường bin.

Một mục nhập được xây dựng đúng cách trong trường bin package.json sẽ cho phép trình soạn thảo gói sửa đổi và truy cập các tệp tùy ý trên hệ thống của người dùng khi gói được cài đặt. Hành vi này vẫn có thể xảy ra thông qua các tập lệnh cài đặt.

Các đường dẫn có "/../" được cho phép trong trường bin

CVE-2019-16777

Cuối cùng, Các phiên bản NPM CLI trước 6.13.4 dễ bị tấn công trong lỗ hổng này ghi đè lên một tệp tùy ý. Vì bạn không thể ngăn các mã nhị phân khác ghi đè các mã nhị phân hiện có được cài đặt toàn cầu.

Ví dụ: nếu một gói đã được cài đặt trên toàn cầu và tạo một tệp nhị phân dịch vụ, thì bất kỳ cài đặt tiếp theo nào các gói cũng tạo ra một dịch vụ nhị phân sẽ ghi đè lên tệp nhị phân dịch vụ cũ. Hành vi này vẫn được phép trên các cài đặt cục bộ và cả thông qua các tập lệnh cài đặt.

Bạn chỉ có thể thay thế các tệp trong thư mục đích nơi các tệp thực thi được cài đặt (thường là / usr, / local, / bin).

Mặc dù một yếu tố quan trọng đối với những lỗ hổng này là người muốn khai thác những lỗ hổng này sẽ phải yêu cầu nạn nhân của mình cài đặt gói với mục bin được thiết kế đặc biệt. Tuy nhiên, như chúng ta đã thấy trong quá khứ, đây không phải là rào cản không thể vượt qua.

Nhóm bảo mật tại npm, Inc. đã quét sổ đăng ký để tìm các ví dụ về cuộc tấn công này và không tìm thấy bất kỳ gói nào được xuất bản trong sổ đăng ký bằng cách khai thác này. Điều đó không đảm bảo rằng nó đã không được sử dụng, nhưng nó có nghĩa là nó hiện không được sử dụng trong các gói được xuất bản trong sổ đăng ký.

Chúng tôi sẽ tiếp tục theo dõi và thực hiện các bước để ngăn chặn những kẻ xấu khai thác lỗ hổng này trong tương lai. Tuy nhiên, chúng tôi không thể quét tất cả các nguồn có thể có cho các gói npm (đăng ký riêng, máy nhân bản, kho lưu trữ git, v.v.), vì vậy điều quan trọng là phải cập nhật càng sớm càng tốt.

Xử lý sự cố

Là giải pháp chính, bạn nên cập nhật lên phiên bản sửa lỗi mới vì các thư viện phân tích cú pháp package.json được sử dụng trong NPM v6.13.3 đã được cập nhật theo cách sẽ làm sạch và xác thực tất cả các mục nhập trong trường bin để loại bỏ chuyển tiếp gạch chéo các chữ cái đầu, các mục nhập tuyến đường và các phương tiện thoát tuyến khác, sử dụng tiện ích tuyến đường đã được thử nghiệm tốt và có độ tin cậy cao được tích hợp trong Node.js.

Tuy nhiên, như một giải pháp thay thế, nó có thể được cài đặt với tùy chọn –Ignore-scripts, cấm chạy các gói trình điều khiển tích hợp sẵn.

Không cần thêm thông tin gì, nếu bạn muốn biết thêm về các lỗi, bạn có thể kiểm tra chi tiết trong bài đăng trên blog npm Trong liên kết sau đây.

Cuối cùng, đối với những người muốn cài đặt phiên bản mới, họ có thể làm như vậy từ các kênh chính thức hoặc bằng cách chọn biên dịch từ mã nguồn của nó. Đối với điều này, bạn có thể làm theo các hướng dẫn trong liên kết sau.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.