Lỗ hổng mới trong ngôn ngữ lập trình R cho phép thực thi mã tùy ý

14:00 | 10/05/2024 | LỖ HỔNG ATTT
Một lỗ hổng bảo mật mới được phát hiện trong ngôn ngữ lập trình R, có thể bị kẻ tấn công khai thác để tạo tệp RDS (R Data Serialization) độc hại dẫn đến việc thực thi mã tùy ý khi được tải và tham chiếu.

R là ngôn ngữ lập trình nguồn mở đặc biệt phổ biến trong tính toán thống kê và trực quan hóa dữ liệu, phù hợp với những người phát triển và sử dụng các mô hình phân tích dữ liệu tùy chỉnh, ngôn ngữ này hiện đang được áp dụng ngày càng nhiều trong trí tuệ nhân tạohọc máy.

Các nhà nghiên cứu tại công ty bảo mật ứng dụng HiddenLayer gần đây đã phát hiện ra một lỗ hổng trong R, được gắn mã theo dõi là CVE-2024-27322 (CVSS: 8,8), cho phép kẻ tấn công thực thi mã tùy ý trên các máy mục tiêu khi nạn nhân mở các tệp RDS hoặc R package files (RDX).

Trung tâm điều phối CERT (CERT/CC) của Đại học Carnegie Mellon (Hoa Kỳ) đưa ra lời khuyến nghị với CVE-2024-27322, lưu ý rằng lỗ hổng này có thể bị khai thác để thực thi mã tùy ý trên thiết bị mục tiêu của nạn nhân thông qua các tệp RDS hoặc RDX độc hại.

CERT/CC cho biết : “Kẻ tấn công có thể tạo các tệp .rds và .rdx độc hại và sử dụng kỹ nghệ xã hội để phân phối các tệp đó nhằm thực thi mã tùy ý trên thiết bị của nạn nhân. Các dự án (project) sử dụng readRDS trên các tệp không đáng tin cậy cũng dễ bị tấn công”.

RDS tương tự như pickle trong Python, là một định dạng được sử dụng để chuyển đổi trạng thái của một đối tượng thành một chuỗi byte sao cho chuỗi byte này có thể chuyển đổi ngược lại thành một đối tượng (serialization) và lưu trạng thái của cấu trúc dữ liệu hoặc đối tượng trong ngôn ngữ lập trình R.

Lỗ hổng CVE-2024-2732 khai thác cách R xử lý saveRDS và readRDS, đặc biệt thông qua các đối tượng Promise object (đại diện cho một giá trị ở thời điểm hiện tại có thể chưa tồn tại, nhưng sẽ được xử lý và có giá trị vào một thời gian nào đó trong tương lai) và cơ chế Lazy Evaluation.

Những kẻ tấn công có thể nhúng các đối tượng Promise object với mã tùy ý vào siêu dữ liệu (metadata) tệp RDS dưới dạng các biểu thức. Nguyên nhân chính phía sau lỗ hổng này là nó có thể dẫn đến thực thi mã tùy ý khi thực hiện quá trình Deserialization (cơ chế chuyển đổi trạng thái của một đối tượng), do đó khiến người dùng phải đối mặt với các cuộc tấn công chuỗi cung ứng thông qua các gói R được chế tạo đặc biệt.

Nạn nhân phải bị thuyết phục hoặc bị đánh lừa thực thi các tệp đó, vì vậy đây có thể là cuộc tấn công kỹ nghệ xã hội. Tuy nhiên, những kẻ tấn công có thể lựa chọn cách tiếp cận bị động hơn, đó là phân phối các gói độc hại trên các kho được sử dụng rộng rãi và chờ nạn nhân tải chúng xuống.

Vũ Hùng

(Tổng hợp)

Tin cùng chuyên mục

Tin mới