Thư viện serialize-javascript với hơn 16 triệu lượt tải tồn tại lỗ hổng thực thi mã từ xa

16/06/2015
83
672 bài viết
Thư viện serialize-javascript với hơn 16 triệu lượt tải tồn tại lỗ hổng thực thi mã từ xa
Một lỗ hổng an ninh vừa được tiết lộ gần đây trong thư viện NPM serialize-javascript có thể bị khai thác để thực thi mã từ xa (RCE).

Được Yahoo phát triển và duy trì, serialize-javascript là một dự án nguồn mở phổ biến được sử dụng để chuyển đổi JavaScript thành một tập hợp JSON, bao gồm các biểu thức, ngày tháng và hàm.

Jordan Milne và Ryan Siebert đã gửi lỗ hổng an ninh lên GitHub vào ngày 20/5 và vấn đề đã được công khai vào tuần trước thông qua cơ sở dữ liệu GitHub Advisory.

Java.jpg

Lỗ hổng (CVE-2020-7660) cho phép kẻ tấn công từ xa tiêm mã tùy ý thông qua chức năng deleteFunctions trong index.js.

Các phiên bản serialize-javascript dưới 3.1.0 đều bị ảnh hưởng.

Proof of concept

Serialize-javascript là một thư viện phổ biến với hơn 16 triệu lượt tải xuống và 840 dự án phụ thuộc.

Theo thông báo, việc chuyển đổi không an toàn sẽ cho phép các đối tượng như {"foo": /1"/, "bar": "a\"@__R-<UID>-0__@"} được chuyển đổi thành {"foo": /1"/, "bar": "a\/1"/} và do đó thông tin nhập của người dùng có thể can thiệp phá vỡ “bar”.

Như vậy, nếu kẻ tấn công có thể kiểm soát giá trị của cả "foo" và "bar" và đoán được UID thì có thể thực hiện tấn công RCE.

Thông báo cho biết thêm rằng UID có một kho chứa (keyspace) khoảng bốn tỷ, khiến việc khai thác trở thành một “cuộc tấn công mạng thực tế”.

Ví dụ, proof of concept dưới đây có thể gọi console.log () “khi phiên bản ‘serialize ()’d là ‘eval ()’d”.

eval('('+ serialize({"foo": /1" + console.log(1)/i, "bar": '"@__R-<UID>-0__@'}) + ')');


Lỗ hổng được vá trong phiên bản serialize-javascript 3.1.0 và được giải quyết thông qua các thay đổi trong code, đảm bảo không có dấu gạch chéo ngược đứng trước các trình giữ chỗ (placeholder).

Ngoài ra, một UID entropy cao hơn cũng được bổ sung.

Tác động sâu rộng

CVE-2020-7660 có điểm CVSS là 8,1, nằm trong phạm vi "quan trọng" và gần đạt mức "nghiêm trọng".

Tuy nhiên trong thông báo của Red Hat về lỗ hổng, độ nghiêm trọng của lỗ hổng đã được giảm xuống mức "vừa phải" vì các ứng dụng sử dụng serialize-javascript phải có khả năng kiểm soát dữ liệu JSON được truyền qua đó để kích hoạt lỗ hổng.

Red Hat lưu ý rằng các phiên bản được hỗ trợ của Container Native Virtualization 2 không bị ảnh hưởng nhưng các phiên bản cũ, bao gồm cả 2.0, rất dễ bị tấn công.

Các bản sửa lỗi đã được phát hành cho OpenShift Service Mesh 1.0/1.1 (servicemesh-grafana) và một bản vá đang được triển khai cho Red Hat OpenShift Container Platform 4 (openshift4/ose-prometheus).

Do sự phổ biến của thư viện, các kho khác cũng bị ảnh hưởng, bao gồm cả Ruby trên Webpacker của Rails.

Theo Daily Swig
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Bên trên