-
09/04/2020
-
128
-
1.820 bài viết
Lỗ hổng làm tăng nguy cơ thực thi mã từ xa trên hàng triệu hệ thống Node.js
Một lỗ hổng nghiêm trọng vừa được phát hiện trong thư viện protobuf.js, có thể cho phép kẻ tấn công thực thi mã JavaScript từ xa trên các hệ thống sử dụng thư viện này. Với khoảng 50 triệu lượt tải mỗi tuần trên npm, protobuf.js hiện diện rộng rãi trong hệ sinh thái Node.js, đặc biệt ở các hệ thống API, nền tảng cloud và kiến trúc microservices.
Theo phân tích của các chuyên gia, nguyên nhân do cơ chế sinh mã động của thư viện. Cụ thể, protobuf.js xây dựng các hàm JavaScript bằng cách ghép chuỗi dựa trên dữ liệu “schema” (mô tả cấu trúc dữ liệu), sau đó thực thi các hàm này thông qua Function(). Vấn đề nằm ở chỗ các thành phần lấy từ schema, như tên kiểu dữ liệu hoặc message, không được kiểm tra đầy đủ. Điều này cho phép kẻ tấn công tạo schema độc hại, chèn mã vào quá trình sinh hàm và khiến mã đó được thực thi khi ứng dụng xử lý dữ liệu.
Về khả năng khai thác, dù đã có PoC và được đánh giá là tương đối dễ thực hiện, việc tấn công thành công vẫn phụ thuộc vào cách hệ thống triển khai. Rủi ro chủ yếu xuất hiện khi ứng dụng cho phép nạp hoặc xử lý schema từ nguồn không đáng tin cậy và sử dụng cơ chế sinh mã động. Nếu schema được kiểm soát chặt hoặc biên dịch sẵn, nguy cơ sẽ giảm đáng kể. Đây cũng là một dạng tấn công gián tiếp, trong đó mã độc không thực thi ngay lập tức mà thông qua bước trung gian, khiến việc phát hiện trở nên khó khăn hơn.
Nếu bị khai thác, lỗ hổng có thể cho phép thực thi mã trên máy chủ, truy cập biến môi trường, thông tin xác thực, cơ sở dữ liệu, thậm chí mở rộng sang các hệ thống nội bộ. Các phiên bản bị ảnh hưởng gồm protobuf.js từ 8.0.0 và 7.5.4 trở xuống.
Người dùng nên cập nhật ngay lên các phiên bản đã được vá (8.0.1 hoặc 7.5.5), đồng thời coi mọi schema là dữ liệu không tin cậy, kiểm tra chặt chẽ đầu vào và ưu tiên sử dụng schema tĩnh trong môi trường sản xuất.
Theo Bleeping Computer