Internet

Npm: Cập nhật JavaScript khắc phục lỗi nhị phân

Dịch vụ quản lý xử lý các gói JavaScript, có thúc giục người dùng cập nhật lên phiên bản mới nhất (6.13.4) để tránh các cuộc tấn công ‘trồng cây nhị phân’.

Đối với người chưa khởi tạo, npm là trình quản lý gói chính thức cho Node.js – một khuôn khổ cho mã JavaScript chạy bên ngoài trình duyệt (hoặc trên máy chủ). Bạn có thể quản lý các gói npm thông qua giao diện dòng lệnh npm (CLI).

Theo nhóm nghiên cứu, ứng dụng khách npm CLI có một lỗi bảo mật là sự kết hợp giữa việc truyền tải tệp và vấn đề ghi (đè) tệp tùy ý.

Những kẻ tấn công có thể khai thác lỗi này để trồng các tệp nhị phân độc hại hoặc ghi đè các tệp trên máy tính của nạn nhân. Lỗ hổng này chỉ có thể được khai thác trong quá trình cài đặt gói npm được boobytrapped thông qua npm CLI.

Đã tìm thấy hai lỗ hổng bảo mật

Daniel Ruf, một nhà nghiên cứu bảo mật người Đức, đã tìm thấy hai lỗ hổng trong npm CLI và công bố kết quả trong một bài viết trên blog. Những lỗ hổng này là CVE-2019-16775, 16776 và 16777.

Để đưa các gói từ npm vào mã, các nhà phát triển liệt kê chúng trong một tệp có tên package.json, cụ thể là trong một trường được gọi là thùng rác. Tất cả các mục nhập trong trường này, ánh xạ tên lệnh với tên tệp cục bộ trong ./node_modules/.bin/ thư mục trong thư mục dự án của nhà phát triển. Là một phần của các hoạt động quản lý, npm có thể ghi đè các tệp đó bằng các phiên bản mới.

Một trong những lỗi cho phép tấn công được gọi là trồng nhị phân. npm CLI phiên bản trước 6.13.3 cho phép các gói truy cập các thư mục bên ngoài thư mục dự định bằng cách thao tác các đường dẫn trong thùng rác cánh đồng.

Điều này cho phép kẻ xấu ghi đè một tệp sạch bằng tệp độc hại ở bất kỳ đâu trên hệ thống của nạn nhân hoặc tạo một tệp mới hoàn toàn.

Lỗi thứ hai được tìm thấy trong liên kết bin (gói npm quản lý các liên kết từ trường bin đến tệp trong ./node_modules/.bin/, cũng có trong npm CLI).

Một liên kết tượng trưng (liên kết tượng trưng) được sử dụng để quản lý các tệp này. [Symlink is a file that links to another file or directory using its file path.] Lỗ hổng trong liên kết Bin là nó cho phép các gói ghi đè lên liên kết biểu tượng, ngay cả khi chúng không tạo nó.

Trong khi người ta sẽ phải thuyết phục người dùng cài đặt một tệp bằng cách sử dụng mục nhập bin bị thao túng, để khai thác các lỗ hổng này; npm nói là hoàn toàn có thể.

Nó không chỉ là npm

Ngoài npm, sợi, (một trình quản lý gói khác cho JavaScript) cũng bị ảnh hưởng. Lỗi trong sợi đã được khắc phục vào đầu tuần này với việc phát hành sợi 1.21.1.

Bản sửa lỗi ở đây

Npm đã khắc phục những sự cố này và cảnh báo mọi người cập nhật npm CLI của họ ngay lập tức lên phiên bản 6.13.4.

Nhóm nghiên cứu nói rằng họ đã quét tất cả các gói trong sổ đăng ký npm của nó để tìm lỗi và không tìm thấy gì. Tuy nhiên, điều đó không mang lại cho mọi gói hàng một hóa đơn sạch vì không phải là không thể “Quét tất cả các nguồn có thể có của gói npm (máy nhân bản, đăng ký riêng, 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. Ngoài ra, nó có thể đáng để kiểm tra thùng rác trường của các tệp package.json trong dự án của bạn cho bất kỳ đường dẫn tệp đáng ngờ nào.

Post Comment