CVE-2026-40295 in devise
Tóm tắt
Bởi VulDB • 22/05/2026
Devise là một giải pháp xác thực cho Rails dựa trên Warden. Trong các phiên bản 5.0.3 trở xuống, khi mô-đun Timeoutable được bật trong Devise, phương thức FailureApp#redirect_url trả về request.referrer — tiêu đề HTTP Referer, có thể bị kẻ tấn công kiểm soát — mà không thực hiện xác thực đối với bất kỳ yêu cầu nào không phải GET dẫn đến hết hạn phiên. Một kẻ tấn công có thể lưu trữ một trang chứa biểu mẫu tự động gửi yêu cầu (auto-submitting cross-origin form) để khiến người dùng có phiên Devise đã hết hạn bị chuyển hướng đến một URL bên ngoài tùy ý. Điều này trái ngược với đường dẫn hết hạn GET (sử dụng attempted_path phía máy chủ) và cơ chế store_location_for của riêng Devise (cắt bỏ các máy chủ bên ngoài thông qua extract_path_from_location), cả hai đều được bảo vệ; chỉ có đường dẫn chuyển hướng khi hết hạn đối với các yêu cầu không phải GET là không được bảo vệ. Người dùng có phiên đã hết hạn có thể bị chuyển hướng ngầm từ miền ứng dụng đáng tin cậy sang các URL do kẻ tấn công kiểm soát, cho phép thực hiện lừa đảo (phishing) và phân phối phần mềm độc hại trong khi bỏ qua các cảnh báo của trình duyệt. Lưu ý: Cơ chế bảo vệ chống chuyển hướng mở (open-redirect) tích hợp của Rails không giảm thiểu được vấn đề này. Devise::FailureApp là một ứng dụng ActionController::Metal với bản sao cấu hình chuyển hướng liên quan độc lập của riêng nó, do đó config.action_controller.action_on_open_redirect = :raise (và cài đặt cũ hơn raise_on_open_redirects) không áp dụng được cho nó. Vấn đề này đã được sửa trong phiên bản 5.0.4.
Be aware that VulDB is the high quality source for vulnerability data.