-
09/04/2020
-
142
-
2.047 bài viết
Ruby on Rails khẩn cấp vá lỗi đọc tập tin trái phép qua cơ chế xử lý ảnh
Nhóm phát triển Ruby on Rails vừa phát hành bản vá cho lỗ hổng bảo mật nghiêm trọng mang mã định danh CVE-2026-66066, với điểm CVSS lên tới 9.5. Lỗ hổng này cho phép kẻ tấn công chưa xác thực đọc các tập tin tùy ý trên máy chủ thông qua một tệp tải lên được chế tạo đặc biệt, mở ra nguy cơ đánh cắp hàng loạt thông tin nhạy cảm và tạo tiền đề cho những cuộc tấn công sâu hơn vào hệ thống.
Theo thông tin từ nhóm bảo mật Rails, lỗ hổng ảnh hưởng đến các ứng dụng sử dụng Active Storage kết hợp với thư viện xử lý ảnh libvips. Đây là cấu hình khá phổ biến trong hệ sinh thái Rails khi libvips đã trở thành bộ xử lý ảnh mặc định từ phiên bản 7.0. Điều đáng chú ý là cuộc tấn công không yêu cầu kẻ xấu phải đăng nhập hay có bất kỳ quyền truy cập nào trước đó. Chỉ cần ứng dụng cho phép người dùng tải ảnh lên từ nguồn không tin cậy, hệ thống có thể trở thành mục tiêu.
CVE-2026-66066 xuất phát từ cơ chế xử lý tệp của Active Storage khi sử dụng libvips. Trong quá trình tiếp nhận và phân tích các tệp do người dùng tải lên, Active Storage có thể gọi đến nhiều chức năng khác nhau của libvips để xác định định dạng và xử lý nội dung. Tuy nhiên, một số thành phần trong libvips vốn không được thiết kế để làm việc với dữ liệu đến từ nguồn không tin cậy vẫn có thể được kích hoạt trong quá trình này. Kẻ tấn công vì thế có thể lợi dụng một tệp được chế tạo đặc biệt để đánh lừa cơ chế xử lý của ứng dụng. Thay vì chỉ thực hiện các thao tác liên quan đến hình ảnh như dự kiến, hệ thống có thể bị buộc truy cập vào những tập tin mà tiến trình Rails được phép đọc trên máy chủ, mở đường cho việc thu thập các dữ liệu nhạy cảm như khóa bí mật, thông tin xác thực và token truy cập.
Điều đáng lo ngại là các tập tin mà tiến trình Rails có quyền truy cập thường chứa nhiều thông tin đặc biệt nhạy cảm như khóa bí mật của ứng dụng (secret_key_base), khóa mã hóa chính (master key), thông tin xác thực cơ sở dữ liệu, khóa truy cập dịch vụ lưu trữ đám mây hay các loại API token. Nếu rơi vào tay kẻ tấn công, những dữ liệu này có thể trở thành bàn đạp cho các bước xâm nhập tiếp theo, từ truy cập cơ sở dữ liệu, giả mạo phiên làm việc cho đến chiếm quyền điều khiển ứng dụng hoặc thực thi mã từ xa.
Theo các nhà nghiên cứu, phạm vi ảnh hưởng của CVE-2026-66066 trải rộng trên nhiều phiên bản Rails đang được sử dụng phổ biến hiện nay, bao gồm các nhánh 7.0, 8.0 và 8.1. Cụ thể, các phiên bản từ 7.0.0 đến 7.2.3.1, 8.0.0 đến 8.0.5 và 8.1.0 đến 8.1.3 đều nằm trong danh sách bị ảnh hưởng. Riêng với dòng Rails 6.x, lỗ hổng chỉ có thể bị khai thác khi Active Storage được cấu hình sử dụng libvips thay vì các tùy chọn khác. Trong khi đó, những hệ thống đang xử lý ảnh bằng MiniMagick không bị ảnh hưởng bởi cơ chế tấn công này.
Điểm đáng chú ý là chuỗi tấn công không phụ thuộc vào các tính năng xử lý ảnh nâng cao như tạo thumbnail hay chỉnh sửa kích thước. Theo nhóm bảo mật Rails, lỗ hổng có thể bị kích hoạt ngay trong quá trình ứng dụng tiếp nhận và phân tích tệp tải lên. Điều này đồng nghĩa với việc phạm vi ảnh hưởng không chỉ giới hạn ở các hệ thống chuyên xử lý hình ảnh, mà còn có thể mở rộng tới nhiều ứng dụng web thông thường có chức năng tải ảnh từ người dùng.
Đáng chú ý, một mã khai thác mẫu đã xuất hiện trên GitHub chỉ ít giờ sau khi CVE-2026-66066 được công bố. Theo mô tả, PoC này có khả năng tái hiện chuỗi tấn công trong môi trường thử nghiệm, từ việc đọc môi trường thực thi của Rails, thu thập khóa bí mật của ứng dụng cho đến các bước nhằm đạt được khả năng thực thi mã. Mặc dù chưa được xác minh độc lập, sự xuất hiện nhanh chóng của PoC công khai cho thấy khoảng thời gian dành cho các tổ chức để triển khai bản vá có thể đang thu hẹp đáng kể.
Hiện tại, nhóm phát triển Rails cho biết chưa ghi nhận trường hợp nào bị khai thác trước hoặc sau khi lỗ hổng được công bố. CVE-2026-66066 cũng chưa xuất hiện trong danh mục Known Exploited Vulnerabilities (KEV) của CISA. Tuy nhiên, giới chuyên môn đánh giá đây là một trong những lỗ hổng đáng chú ý nhất của hệ sinh thái Rails trong thời gian gần đây bởi nó tác động trực tiếp đến thành phần mặc định được sử dụng rộng rãi trong nhiều ứng dụng web hiện đại.
Để khắc phục, Rails đã phát hành các phiên bản 7.2.3.2, 8.0.5.1 và 8.1.3.1. Bên cạnh việc cập nhật, nhóm phát triển khuyến nghị quản trị viên chủ động thay đổi toàn bộ khóa bí mật, thông tin xác thực và token mà ứng dụng có khả năng đã truy cập được trước thời điểm vá lỗi. Đối với những môi trường chưa thể nâng cấp ngay lập tức, biện pháp giảm thiểu tạm thời là kích hoạt cơ chế chặn các thao tác không đáng tin cậy của libvips thông qua tùy chọn VIPS_BLOCK_UNTRUSTED, với điều kiện hệ thống đang sử dụng libvips phiên bản 8.13 trở lên.
Những năm gần đây, không ít sự cố bảo mật nghiêm trọng đều bắt nguồn từ các thành phần được tin cậy và sử dụng rộng rãi trong hệ sinh thái phần mềm. CVE-2026-66066 là một ví dụ cho thấy khoảng cách giữa một lỗi kỹ thuật và một rủi ro thực tế đôi khi nhỏ hơn nhiều so với tưởng tượng. Với các tổ chức đang vận hành ứng dụng trên quy mô lớn, khả năng phát hiện sớm và phản ứng kịp thời trước những cảnh báo như vậy ngày càng trở thành yếu tố quyết định trong việc giảm thiểu rủi ro an ninh mạng.